用戶與組

一、用戶與組的概念

1、Linux多用戶,多任務的特性
   Linux是多用戶多任務操作系統,多用戶多任務就是可在系統上建多個用戶,多個用戶可同一時間同一個系統互不影執行的響各自不同的任務。例如linux服務器上有root、wwwftp,四個用戶。同一時間內,root用戶在查看系統日志,管理維護系統,www用戶在修改自己的網頁程序,ftp用戶在上傳文件,每個用戶互不干擾的進行著自己的工作,各用戶間不能越權訪問,如www用戶不能執行ftp用戶的相關操作,ftp用戶也不能修改www用戶的網頁程序。不同用戶具有不同的權限, linux通過這種權限的劃分與管理,實現了多用戶多任務的運行機制。

2、linux下用戶分類
 1)超級用戶:擁有對系統的最高管理權限,默認是root。
 2)普通用戶:只能對自己目錄下的文件進行訪問和修改,具有登錄系統的權限。

3)虛擬用戶:也叫用戶,這類用戶最大的特點是不能登錄系統,例如binadm、nobody用戶等。

3、用戶和組的概念
  用戶組是具有相同特征用戶的邏輯集合,需要讓多個用戶具有相同的權限時,如查看、修改某一個文件的權限,一種方法是分別對多個用戶進行文件訪問授權,若有10個用戶,就需要授權10次,此方法不顯然太合理;另一種方法是建立一個組,讓這個組具有查看、修改此文件的權限,然后將所有需要訪問此文件的用戶放入這個組中,那么所有用戶就具有了和組一樣的權限,這就是用戶組。

4、用戶和組的關系:
   用戶和用戶組的對應關系如圖所示:

     1.png

 

(1)一對一:即一個用戶可以存在一個組中,也可以是組中的唯一成員。
(2)一對多:即一個用戶可以存在多個用戶組中。
(3)多對一:多個用戶可以存在一個組中,這些用戶具有和組相同的權限。
(4)多對多:多個用戶可以存在多個組中。

5、UIDGID

    計算機只能識別二進制的01,故算機不能對用戶名與用戶組名稱進行直接的區分,而是通過系統中每個用戶與用戶組的單獨的數字ID進行標識。

標識用戶的ID號為UID(UserID) 
標識用戶組的ID號為GIDGroupID

CentOS系統默認使用16位二進制數字來標識UIDGID0-65536(默認使用前60000) 
CentOS67中不同ID范圍:

用戶類型

CentOS 6UID

CentOS 7UID

CentOS 6 GID

CentOS 7 GID

管理員用戶

0

0

0

0

系統用戶

1-499

1-999

1-499

1-999

登錄用戶

500-60000

1000-60000

500-60000

1000-60000

.用戶配置文件概述

1.用戶和組相關的配置文件

1/etc/passwd文件
系統用戶配置文件。文件記錄了Linux系統中每個用戶的基本屬性,所有用戶可讀。每行記錄一個用戶,每行記錄又被冒號分割,其格式和含義如下:

[root@localhost ~]# more /etc/passwd
 root:x:0:0:root:/root:/bin/bash
 bin:x:1:1:bin:/bin:/sbin/nologin
 daemon:x:2:2:daemon:/sbin:/sbin/nologin

每個字段的詳細含義:
 用戶名:是代表用戶賬號的字符串。
 口令:存放著加密后的用戶口令加密后的用戶口令存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特殊的字符,用“x”表示。 
 用戶標識號:就是用戶的UID,每個用戶都有一個UID,并且是唯一的,通常UID號的取值范圍是065535,0是超級用戶root的標識號,199由系統保留,作為管理賬號。在Linux系統中,普通用戶UID默認從500開始。

 組標識號:就是組的GID,與用戶的UID類似,這個字段記錄了用戶所屬的用戶組。

 注釋性描述:字段是對用戶的描述信息,比如住址、電話、姓名等等。
 主目錄:用戶登錄到系統之后默認所處的目錄,也叫做用戶的主目錄、家目錄等等。
 默認shell:就是用戶登錄系統后默認的shell類型。

2/etc/shadow文件
  用戶影子文件:linux將用戶的密碼從/etc/passwd中分離出來,放到了/etc/shadow,該文件只有root用戶有讀權限,保證了用戶密碼的安全性。文件內容的格式例如:

[root@localhost ~]# more /etc/shadow
 root:$1$Uvip.QJI$GteCsLrSSfpnMs.VCOvbs/:14169:0:99999:7:::
 bin:*:13934:0:99999:7:::

每個字段的詳細含義:
 用戶名:與/etc/passwd文件中的用戶名是相同的。
 加密口令:存放的是加密后的用戶口令字串。 
 最后一次修改時間:從某個時間起,到用戶最近一次修改口令的間隔天數。

 最小時間間隔:兩次修改密碼之間的最小時間間隔。
 最大時間間隔:兩次修改密碼之間的最大時間間隔。
 警告時間:從系統開始警告用戶到密碼正式失效之間的天數。
 不活動時間:用戶口令作廢多少天后,系統會禁用此用戶。
 失效時間:該用戶的帳號生存期,超過這個設定時間,帳號失效,用戶就無法登錄系統了。若該字段為空,帳號永久可用。
 保留字段:linux的保留字段,目前為空。
3/etc/group文件
用戶組配置文件,用戶組的所有信息都存放在此文件中。

[root@localhost ~]# more /etc/group
 root:x:0:root
 bin:x:1:root,bin,daemon

每個字段的含義:
 組名:用戶組的名稱,由字母或數字構成,組名不能重復。
 口令:存放用戶組加密后的口令字串,密碼默認設置在/etc/gshadow文件中,在這里用“x”代替,linux系統默認用戶組都沒有口令。
 組標識號:GID,與/etc/passwd中的組標識號對應。
 組內用戶列表: 顯示該組的所有用戶,多個用戶之間用逗號分隔。
2/etc/login.defs文件
用來定義創建一個用戶時的默認設置,比如指定用戶的UIDGID的范圍,用戶的過期時間、是否創建用戶主目錄等等。簡單介紹如下:
MAIL_DIR        /var/spool/mail
當創建用戶時,同時在目錄/var/spool/mail中創建一個用戶mail文件
PASS_MAX_DAYS   99999
#指定密碼保持有效的最大天數
PASS_MIN_DAYS   0
表示自從上次密碼修改以來多少天后用戶才被允許修改口令
PASS_MIN_LEN    5
指定密碼的最小長度
PASS_WARN_AGE   7
表示在口令到期前多少天系統開始通知用戶口令即將到期
UID_MIN                 500
指定最小UID500 ,也就是說添加用戶時,用戶的UID 500開始
UID_MAX                60000
指定最大UID60000
GID_MIN                  500
指定最小GID500,也就是添加組時,組的GID500開始。
GID_MAX                60000
指定最大GID60000
CREATE_HOME     yes
此項是指定是否創建用戶主目錄,yes為創建,no為不創建。
3/etc/default/useradd文件

useradd命令不加任何參數創建一個用戶后,用戶默認的主目錄一般位于/home下,默認的shell/bin/bash,是由該文件內容決定的。

[root@localhost ~]# more /etc/default/useradd
 # useradd defaults file

GROUP=100  
HOME=/home  #將新建用戶的主目錄放在/home目錄下
INACTIVE=-1 #是否啟用帳號過期禁用,-1表示不啟用
EXPIRE=     #帳號過期日期,不設置表示不啟用
SHELL=/bin/bash  #指定新建用戶的默認shell類型
SKEL=/etc/skel  #指定用戶主目錄默認文件的來源,新建用戶主目錄下的文件都是從該目錄下復制而來的
CREATE_MAIL_SPOOL=no
/etc/default/useradd定義新建用戶的默認屬性,比如用戶主目錄、shell類型等。更改此文件,可改變創建新用戶的默認屬性值。
更改此文件有兩種方法,一種是通過文本編輯器,另一種是通過useradd命令。這里介紹第二種方法:
Useradd命令加“-D”參數后,就可以修改配置文件/etc/default/useradd,使用的一般格式為:
useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ]
每個選項含義如下:
l -g default_group
新建用戶的起始組名或者GID,組名必須為已經存在的用戶組名稱,GID也必須是已經存在的用戶組GID。與/etc/default/useradd文件中“GROUP”行對應。
l -b default_home
指定新建用戶主目錄的上級目錄,所有新建用戶都會在此目錄下創建自己的主目錄。與/etc/default/useradd文件中HOME行對應。
l -s default_shell
指定新建用戶默認的shell,與/etc/default/useradd文件中“SHELL”行對應。
l -f default_inactive
指定用戶帳號過期多長時間后就永久停用,與/etc/default/useradd文件中“INACTIVE”行對應。
l -e default_expire_date
指定用戶帳號的過期時間。與/etc/default/useradd文件中“EXPIRE”行對應。
例子:
useradd –D不加任何參數時,顯示/etc/default/useradd文件的當前設置

[root@localhost ~]# useradd -D  
 GROUP=100
 HOME=/home
 INACTIVE=-1
 EXPIRE=
 SHELL=/bin/bash

SKEL=/etc/skel
如果要修改添加用戶時的默認shell/bin/csh

[root@localhost ~]# useradd -D -s /bin/csh
 [root@localhost ~]# useradd -D
 GROUP=100
 HOME=/home
 INACTIVE=-1
 EXPIRE=
 SHELL=/bin/csh
 SKEL=/etc/skel

4/etc/skel目錄

該目錄定義了新建用戶在主目錄下默認的配置文件,更改此目錄的內容可以改變新建用戶默認主目錄的配置文件信息。 

三、用戶管理

<1>用戶文件

文件

內容

/etc/passwd

用戶名,空密碼,UIDGID,注釋信息,家目錄,登陸shell

/etc/shadow

用戶名,加密密碼,各密碼時間設置

/etc/group

組名,空組密碼,GID,組中用戶

/etc/gshadow

組名,加密密碼,組管理員列表,組中用戶

 

      可執行vipw直接打開/etc/passwd文件,vigr直接打開/etc/group文件

      可執行pwckgrpck分別檢查/etc/passwd文件和/etc/group文件。

▲/etc/shadow中密碼設置如下圖

2.png             chfn:交互式修改用戶的注釋信息

            finger USER:查看用戶的詳細信息

      可創建文件touch /etc/nologin使得用戶下次無法登陸系統

<2>用戶分類(CentOS 7)

UID

用戶

功能

0

超級管理員

管理計算機的全部權限

1-999

系統用戶

執行某些服務,不用做登陸系統

1000-60000

普通用戶

管理計算機的部分權限

   <3>用戶創建

      ▲語法格式

 useradd [options] LOGIN

      ▲常用選項

1

    -u USERNAME:指定用戶UID

2

    -g GROUPNAME:指定用戶主組(基本組),也可以是GID

3

    -G GROUPNAME..:指定用戶的附加組

4

    -c "COMMENT":指明用戶的注釋信息

5

    -d HOMEDIR:指明用戶的家目錄

6

    -s SHELL:指定用戶的登陸shell

7

    -r:添加系統用戶

8

    -o: 忽略UID添加用戶

  注:系統用戶默認無家目錄和郵箱,登陸系統顯示無環境變量。如果要讓其擁有環境變量,可創建其家目錄并復制/etc/skel/下文件到其家目錄中。

      用戶郵箱地址:/etc/spool/mail/USERNAME

[root@centos7/home/rr]#cp /etc/skel/.[^.]* /home/rr/ -rv
[root@centos7 ~]# useradd conver -r
[root@centos7 ~]# su conver
bash-4.2$ su
Password: 
[root@centos7 ~]# cd /home/
[root@centos7 home]# mkdir conver
[root@centos7 home]# cd conver/
[root@centos7 conver]# cp /etc/skel/.[^.]* ./ -r
[root@centos7 conver]# su conver
[conver@centos7 ~]$ su root
Password:
[root@centos7 conver]#
[root@centos7 conver]# usermod conver -s /bin/nologin
[root@centos7 conver]# su conver
su: failed to execute /bin/nologin: No such file or directory

   <4>用戶屬性修改     

      ▲語法格式

usermod [options] LOGIN

      ▲常用選項

1

    -aG GROUPNAME:為用戶添加附加組

2

    -md HOMEDIR:移動家目錄

3

    -l NEWNAME:指定新名字

4

    -L,–lock:鎖定用戶

    -U,–ulock:解鎖用戶

6

    -e YYYY-MM-DD USERNAME:指定用戶密碼過期日期

7

    -f INACTIVE USERNAME: 設定非活動期限

[root@centos7 ~]# getent shadow user
user:$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7:::
[root@centos7 ~]# usermod -L user
[root@centos7 ~]# getent shadow user
user:!$6$1pOy1/nZEpZrwMwa$IBG2aqz0RvHyWuIcOJ62cPWP9eRJga4CHFrbu/MQTHdlWNmw9TTfq673vDdq3XgV2TSNO.l88vjhDumU8aSoE0:17014:0:99999:7:::

 注:可使用chsh -s SHELLTYPE USERNME指定用戶shell類型

      *用戶配置文件屬性修改,用戶的默認屬性保存在2個文件中

文件

內容

/etc/login.defs

用戶范圍,密碼期限設、加密算法等

/etc/default/useradd

用戶登陸默認shell、默認家目錄等

   useradd -D:查看/etc/default/useradd信息

   useradd -D -s SHELLTYPE:修改默認shell

   useradd -D -d HOMEDIR:修改默認家目錄

[root@centos7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@centos7 ~]# useradd -D -s /bin/bash
[root@centos7 ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@centos7 ~]# getent shadow user
user:$6$FTA6U0nc$BGoO2MC7ziXOG871bsp.jbbg25lEtcF0BWt8sRNY66n.P9npsvvIOp1L1Vx9poVuWdPJaR.7/0RyvZxmwn8EB0:17015:0:99999:7:::
[root@centos7 ~]# authconfig --passalgo=sha256 --update
[root@centos7 ~]# passwd user
Changing password for user user.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
[root@centos7 ~]# getent shadow user
user:$5$3sxrgtHo$fD3Kiyus2N2NOQMijCdV6f6kII1bWbis4evht71ISOA:17015:0:99999:7:::
   <5>用戶刪除

      語法格式

 userdel [options] LOGIN

 

  -r USERNAME:刪除用戶及其家目錄   

   <6>用戶查看

       ▲語法格式

 id [OPTION]... [USER]

  

       ▲常用選項    

1

    -u USERNAME:顯示用戶的UID

2

    -g USERNAME:顯示用戶的GID

3

    -G USERNAME:顯示用戶所屬組的所有ID

  *也可使用finger命令查看

[root@centos7 ~]# id -u user
1000
[root@centos7 ~]# is -G user
bash: is: command not found...
[root@centos7 ~]# id -u user
1000
[root@centos7 ~]# id -G user
1000 4325
[root@centos7 ~]# id user
uid=1000(user) gid=1000(user) groups=1000(user),4325(admins)
[root@centos7 ~]# finger user
Login: user                              Name: user
Directory: /home/user                Shell: /bin/bash
On since Thu Oct 20 14:55 (CST) on :0 from :0 (messages off)
On since Fri Oct 19 10:32 (CST) on pts/0 from :0

3、組管理

   <1>創建組

      ▲語法格式

 groupadd [options] group

      ▲常用選項

        -g GID GROUPNAME:創建指定組號的組

   <2>刪除組  

      ▲語法格式

 groupdel group

   <3>改變組屬性

      ▲語法格式

 groupmod [options] GROUP

      ▲常用選項

1

    -n NEW_GROUPNAME:修改組名

2

    -g GID GROUPNAME:新的組ID

3

    -A USERNAME.. GROUPNAME:設置組的的管理權限列表

[root@centos7 zhao]# groupadd team
[root@centos7 zhao]# getent group team
team:x:4451:
[root@centos7 zhao]# groupmod -g 4452 team
[root@centos7 zhao]# getent group team
team:x:4452:
[root@centos7 zhao]# groupmod -n team1 team
[root@centos7 zhao]# getent group team1
team1:x:4452:

   <4>更改和查看組成員 

       語法格式  

groupmems [options] [-g GROUPNAME]

 

       命令功能:查看組內成員             

1

    -a,–add USERNAME:指定用戶加入組

2

    -g–group groupname:更改為指定GID

2

    -d,–delete USERNAME:從組中刪除用戶

3

    -l–list:顯示組成員列表

[root@centos7 ~]# groupmems -a conver -g user
[root@centos7 ~]# groupadd -g 4444 content
[root@centos7 ~]# getent group content
content:x:4444:
[root@centos7 ~]# groupmod -n context -g 4445 content
[root@centos7 ~]# groupmems -a aa -g context
[root@centos7 ~]# groupmems -l -g context
aa 
[root@centos7 ~]# groupmems -d aa -g context
[root@centos7 ~]# groupmems -l -g context

       語法格式

groups [OPTION]... [USERNAME]..

       命令功能:查看成員所屬組

[root@centos7 ~]# getent group admins
admins:x:4325:natasha,harry,user
[root@centos7 ~]# groups user
user : user admins

   <5>組切換     

       語法格式

 newgrp [GROUPNAME]

       命令功能:切換當前用戶的屬組,只對當前shell有效

[user@centos7 ~]$ newgrp aa
Password: 
[user@centos7 ~]$ touch 1
[user@centos7 ~]$ ll 1
-rw-r--r--. 1 user aa 0 oct  2 21:12 1

   <6>組密碼管理

        更改用戶密碼:

passwd GROOUPNAM

       

gpasswd [OPTION] GROUP

 

1

    -a USERNAME:將用戶添加至組中

2

    -d USERNAME:將用戶從組中刪除

3

    -A USER… :設置管理組的用戶列表      

4、用戶切換 

su USERNAME

su – USERNAME

切換類型

非登陸式切換

登陸式切換

是否重讀配置文件

是否改變當前目錄

 

原創文章,作者:hanlln1,如若轉載,請注明出處:http://www.www58058.com/54311

(0)
hanlln1hanlln1
上一篇 2016-10-24
下一篇 2016-10-25

相關推薦

  • lvs集群搭建

    Linux Cluster: Cluster:計算機集合,為解決某個特定問題組合起來形成的單個系統; Linux Cluster類型:LB:Load Balancing,負載均衡;HA:High Availiablity,高可用;A=MTBF/(MTBF+MTTR)(0,1):90%, 95%, 99%, 99.5%,  99.9%, 99.99%…

    2017-05-09
  • Linux安全與加密基礎(二)

    Linux安全與加密基礎(二) 常見的加密算法 SSL: Openssl與CA認證 ssh服務 dropbear AIDE sudo gpg gpg亦可用于對稱加密與文件檢驗。 文件完整性的兩種實施方式 被安裝的文件     MD5單向散列     rpm –veri…

    Linux干貨 2016-10-06
  • linux終端變量設置,文件系統,man使用說明,文件類型

    一、定義終端提示符的變量 export PS1=’\e[32m[\e[33m\u\e[31m@\e[35m\h\e[36m\t\e[34m\#\e[31m\s\e[37m\W\e[32m]\$ ‘  `]# export 是個命令      PS1指終端提示符變量    &n…

    Linux干貨 2016-11-02
  • sed

    復制/etc/rc.d/rc.sysinit文件到/tmp目錄中,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首家#; 2.復制/boot/grub/grub.conf至/tmp中,刪除/tmp/grub.conf文件中的行首的空白字符 3.刪除/tmp/rc.sysinit文件中的以#開頭,且后面跟了一個至少一個空白字符的行行的#…

    Linux干貨 2016-12-04
  • 腳本編程之變量

    簡單跟大家介紹一下腳本編程中的變量。 大家都知道,腳本編程,主要由三個部分組成,一是命令,二是變量,三是控制語句。 變量的使用,可以讓腳本變得更加簡潔,高效。 我們主要簡單講一下變量的概念,變量的類型,變量的種類,不同種類的變量是如何定義的,變量的基本操作,以及變量的配置文件。 了解了這些,我們還可以聊一聊變量的高級操作。 首先,什么是變量? 通俗一點講:變…

    Linux干貨 2017-04-17
  • N26-第一周作業

    1、描述計算機的組成及其功能;  計算機組成部分分為硬件及軟件。  硬件:  計算機硬件主要有五大部分組成:運算器、控制器、存儲器、輸入設備、輸出設備;  1)運算器、控制器,統稱為處理器,也就是CPU:    主要功能是對各種數據進行運算,包括加、減、乘、除的算術運算,還包括進行邏輯判斷的能力,如…

    Linux干貨 2016-12-31
欧美性久久久久