Linux 中用戶與用戶組相關的配置文件與命令總結
用戶與用戶組
Linux是一種多用戶(Multi-Users)、多任務(Multi-tasks)的操作系統。為了保護每一位用戶的個人數據,系統需要將每一位用戶的數據進行隔離存放。而用戶名就是計算機系統為了區分每一位用戶的標識符,這個標識符對我們人類來說就是 用戶名(USERNAME)。為了便于實現權限的分配與管理,我們將多個用戶劃分到一個容器之中,盛放這些用戶的容器我們稱之為用戶組(GROUP).
用戶分為:管理員用戶(默認為root)、系統用戶、登錄用戶。
用戶組分為:管理員組、系統用戶組、登錄用戶組。
UID、GID
由于計算機只能識別二進制的0和1
,計算機并不能對用戶名與用戶組名稱進行直接的區分,因此在計算機系統中每個用戶與用戶組都有其單獨的數字ID進行標識。
標識用戶的ID號我們稱之為UID(UserID)
標識用戶組的ID號我們稱之為GID(GroupID)CentOS系統默認使用16位二進制數字來標識UID和GID=0-65536(默認使用前60000)
CentOS6和7中不同ID范圍:
用戶類型 CentOS 6中UID CentOS 7中UID 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
名稱解析與解析庫(passwd、group、shadow、gshadow)
系統對用戶名、用戶組名與UID、GID一一對應進行轉換的過程稱之為名稱解析。而存放這些信息的文件稱之為解析庫,包含用戶信息庫/etc/passwd、用戶密碼信息/etc/shadow、組的信息庫/etc/group、組的密碼信息/etc/gshadow。下面我們來一一講解四個文件的內容。
用戶信息庫/etc/passwd
使用whatis passwd 命令查看關于passwd的幫助文件。
使用cat /etc/passwd命令查看passwd文件內容
1.root@centos7 ~]# cat /etc/passwd
2.root:x:0:0:root:/root:/bin/bash
3.bin:x:1:1:bin:/bin:/sbin/nologin
4.daemon:x:2:2:daemon:/sbin:/sbin/nologin
5.adm:x:3:4:adm:/var/adm:/sbin/nologin
6.lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7.sync:x:5:0:sync:/sbin:/bin/sync
8.shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9.…………中間省略
10.wang:x:1000:1000:wangzhenzhong:/home/wang32:/bin/bash
這一大堆東西到底是什么呢?為了能看懂我們使用whatis passwd命令來找下passwd的幫助文件。
1.[root@centos7 ~]# whatis passwd
2.passwd (1) - update user's authentication tokens
3.sslpasswd (1ssl) - compute password hashes
4.passwd (5) - password file
使用man 5 passwd 命令查看 password file 的幫助信息,可以看到passwd的文件每一行代表了一個用戶名,每一行是由冒號分割的7個字段組成的。
1.Each line of the file describes a single user, and contains seven colon-separated fields:
2.
3. name:password:UID:GID:GECOS:directory:shell
4.
5.……實在太多了顯示不了下面會一一解釋每個字符段的意義。
參考上面man命令給出的格式我們來看下psswd中的信息。
1.wang:x:1000:1000:wangzhenzhong:/home/wang32:/bin/bash
從左到右依次是
name: | 用戶名 |
---|---|
password | 加密的密碼或者是占位符X(實際存儲位置/etc/shadow)pwconv命令切換 |
UID | 用戶ID |
GID | 用戶所屬的主組ID |
GECOS | 用戶的注釋信息 |
directory | 用戶的家目錄 |
shell | 用戶的默認shell類型 |
用戶密碼信息/etc/shadow
同樣的步驟先看看文件中有什么,使用cat /etc/shadow
1.[root@centos7 ~]# cat /etc/shadow
2.root:\$\6\$4x9rjLZ2$pGwL/pzn47qOnArRppfN0k..0r.VjHiYXhLgI/Oe3pNTqJU72HGNKIX3f9/P17a/tS07WzvCjGknJFG0veIhJ1:17096:0:99999:7:::
3.bin:*:16659:0:99999:7:::
4.…………中間省略
5.postfix:!!:17095::::::
6.ntp:!!:17095::::::
7.tcpdump:!!:17095::::::
8.wang:$6$mGDN3cm6$xgfX5vJuPKHsNfuWY8zKGNI9QFbwEcziuhf.a/hgAPaBLdbIkjlnKdEpVSMJDIJ9amuaDt12WmFdg6qQKeyjh0:17097:0:99999:7:::
同樣看不懂,同樣使用使用whatis shadow命令查找幫助文件。
1.[root@centos7 ~]# whatis shadow
2.shadow (3) - encrypted password file routines
3.shadow (5) - shadowed password file
使用man5 shadow命令查看shadow的文件格式。
1.DESCRIPTION
2. shadow is a file which contains the password information for the system's accounts and optional aging information.
3.
4. This file must not be readable by regular users if password security is to be maintained.
5.
6. Each line of this file contains 9 fields, separated by colons (“:”), in the following order:
7. login name
8. encrypted password
9. date of last password change
10. minimum password age
11. maximum password age
12. password warning period
13. password inactivity period
14. account expiration date
15. reserved field
我們得知shadow文件中包含了系統賬戶的密碼信息,且改文件不可被普通用戶讀取,文件的每一行包含9個字段,每個字段之間以‘:’分割。我們參考cat /etc/shadow命令獲取的結果來一一解釋每個字段的意義。
1.wang:$6$mGDN3cm6$xgfX5vJuPKHsNfuWY8zKGNI9QFbwEcziuhf.a/hgAPaBLdbIkjlnKdEpVSMJDIJ9amuaDt12WmFdg6qQKeyjh0:17097:0:99999:7:::
由左向右依次是:
login name | 登錄用戶名 |
---|---|
encrypted password | 加密以后的密碼,第一個$后的數字代表加密方式,前面有!表示用戶處于鎖定狀態無法登陸 |
date of last password change | 最后一次更改密碼的日期,顯示為自1970年1月1日到最后一次修改密碼的天數 |
minimum password age | 密碼的最小使用期限,為0或空字符時表示無最小使用期限 |
maximum password age | 密碼打使用期限,到期后要修改密碼,為空時表示密碼永久有效 |
password warning period | 密碼到最大使用期限之前多久開始提醒修改密碼,為0或空字符時為不提醒。 |
password inactivity period | 密碼到期后至賬戶名被鎖定的期限,為0或者空字符時表示不鎖定。 |
account expiration date | 登錄賬戶的有效期,為空字段表示永久不會過期。 |
reserved field | 保留字符以備將來使用 |
組的信息庫/etc/group
使用cat /ext/group 查看group的文件內容
1.[root@centos7 ~]# cat /etc/group
2.root:x:0:
3.bin:x:1:
4.daemon:x:2:
5.…………省略
6.stapdev:x:158:
7.screen:x:84:
8.distro:x:5000:
9.peguin:x:5001:
10.wang:x:1000:
使用whatis group 查找group文檔的man幫助信息。
1.[root@centos7 ~]# whatis group
2.group (5) - user group file
由于group只有一個man幫助文檔直接只是用man group命令查看文檔格式。
group文件中存儲的是用戶組的信息,每一行有四個字段組成以”:”分割;
1.NAME
2. group - user group file
3.
4.DESCRIPTION
5. The /etc/group file is a text file that defines the groups on the system. There is one entry per line, with the
6. following format:
7.
8.group_name:password:GID:user_list
對比上面cat /etc/gropu 的結果我們來一一介紹每個字段的意思:
1.distro:x:5000:
2.peguin:x:5001:
3.wang:x:1000:
group_name | 組名 |
---|---|
password | 加密的密碼或者是占位符X(實際存儲位置/etc/gshadow) |
GID | 組ID |
user_list | 以此組為附加組的用戶列表 |
組的密碼信息/etc/gshadow
還是先使用cat /etc/gshadow命令來查看gshadow文件的內容
1.[root@station25 ~]# cat /etc/gshadow
2.root:::
3.bin:::
4.daemon:::
5.sys:::
6.adm:::
7.………………繼續省略
8.distro:!::
9.peguin:!::
10.wang:!::
直接使用man gshadow命令查看幫助,得知gshadow是組密碼信息文件,每一行代表一個組,一行由4個字段組成每個字段用”:”分割。至于這次為什么不用whais group查看在使用man group查看幫助,然后貼出代碼的原因根本就不是我不小心刪除了又不想重新復制。
group_name | 組名 |
---|---|
encrypted password | 加密后的密碼此處是!或者是,用戶將無法使用密碼加入該組(本組用戶不受影響) |
administrators | 組管理員,有權利修改密碼和添加刪除組成員 |
members | 組成員列表 |
用戶管理命令
useradd命令:創建用戶(adduser:/usr/sbin/adduser -> useradd)
useradd [options] LOGIN
-u,–udi UDI:指定UID;UDI的最大最小范圍定義在/etc/login.defs;
-g,–gid:指定基本組ID,此組要事先存在;
-c,–coment COMMENT:指明注釋信息;
-G,–[group1],[group2]…:指定用戶的附屬組;
-d,–home HOME_DIR:指定用戶的家目錄;(復制/et/skel此目錄并重命名實現);
-s,–shell:可用的所有shell列表存儲在/etc/shells文件中;
-r,–system:創建系統用戶;
-M:不創建用戶家目錄;
-f,-inactive:-1密碼過期也不鎖定用戶;
-N:不創建用戶的私有組做主組,使用users組做主組;
顯示或更改默認設置:
useradd -D
useradd –D -s SHELL
useradd –D –b BASE_DIR
useradd –D –g GROUP
修改的的結果保存與/etc/default/ussadd
usermod命令:修改用戶屬性
usermod [選項] login
-u,–uid UID:修改用戶的ID
-g,–gid GROUP:修改用戶所屬的基本組;
-G,–groups:修改用戶的附加組,原來的附加組會被覆蓋;
-a,–append:與-G共同使用,為用戶追加新的附加組
-c,–coment COMMENT:修改注釋信息;
-d,–home HOME_DIR:修改用戶的家目錄,用戶原有文件不會被轉移至新位置。
-m,–move-home:只能與-d選項一同使用,用于將原來的家目錄移動為新家目錄;
-l,–login NEW_LOGIN:修改用戶名;
-s,–shell:修改用戶的默認SHELL
-L,–lock:鎖定用戶密碼禁止用戶登錄,在用戶密碼串前增加!
-u,–unlock:解鎖用戶的密碼;
userdel命令:刪除用戶
userdel [option] login
-r:刪除用戶時移除用戶的家目錄;
su命令:switch user
登錄式切換:會通過重新讀取用戶的配置文件來重新初始化;
su – USERNAME
su -l USERNAME
非登錄式切換:不會讀取目標用戶的配置文件進行初始化;
su USERNAME
-c ‘COMMAND’:不切換用戶僅以指定用戶的身份運行指定命令;
passwd命令:
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin]
[username]
1、passwd:修改自己的密碼;
2、passwd USERNAME:修改指定用戶的密碼;(管理員有此權限)
-l -u:鎖定和解鎖用戶;
-d:刪除用戶密碼;
-e date:過期期限,日期;
-i days:非活動期限,天數;
-n days:密碼最短使用期限;
-x days:密碼的最長使用期限;
-w days:警告期限;
–stdin:從標準輸入獲取密碼,無需重復設置;
echo “PASSWORD”|passwd –stdin USERNAME
用戶組管理命令
groupadd:創建組
命令格式:groupadd [option] group_name
-g:GID 指定GID;默認是上一組的GID+1;
-r:創建系統組;
groupmod命令:修改組
groupmod [option] group_name
-g GID:修改GID
-n new_name:修改組名
groupdel命令:刪除組
groupdel [option] group_name
gpasswd命令:更改組密碼
gpasswd [option] group
-a USERNAME:向組中添加用戶;
-d USERNAME:從組中移除用;
-A USERNAME,USERNAME…:設置組管理員;
newgrp命令:臨時切換用戶的基本組
newgrp [-] [group]
-:會模擬用戶重新登錄以實現重新初始化工作環境;
exit退出
chage命令:修改用戶密碼信息
-d, –lastday
顯示最后一次修改密碼的日期;=0強制修改密碼;
-E, –expiredate
賬戶有效期;-1為永久
-I, –inactive
密碼到期后到鎖定賬號的間隔日期;
-l, –list
顯示US的密碼信息列表;
-m, –mindays
密碼最少有效期;
-M, –maxdays
密碼最大有效期;
-W, –warndays
在密碼過期前,收到提醒的天數;
id命令:顯示用戶的真實和有效ID
id [option] [login]
-u:顯示UID
-g:顯示基本組ID
-G:顯示用戶所屬的所有組的ID
-n:顯示名稱而非ID
原創文章,作者:M21-13-王振中,如若轉載,請注明出處:http://www.www58058.com/53750