使用者和使用者組管理
使用者相關檔案
1、/etc/passwd 使用者資訊檔案
root:x:0:0:root:/root:/bin/bash
第一列:使用者名
第二列:密碼位
第三列:使用者ID
超級使用者UID。使用者UID為0,代表這個帳号是管理者帳号。Linux把普通使用者更新成為管理者隻需要把使用者的UID修改成為0就可了,這點和windows是不同的。建議建立多個管理者帳号。
1-499 系統使用者(僞使用者)UID是1-499範圍内的使用者是不能登入系統的,而是用來運作系統或服務的。其中1-99是系統保留的帳号,系統自動建立。100-499是預留給使用者建立系統帳号的。
500-65535 普通使用者UID。建立的普通使用者UID從500開始,最大到65535。這些使用者足夠用了,但是如果不夠也不用害怕,2.6.x核心以後的Linux系統使用者UID已經可以支援232這麼多了。
第四列: 組ID GID添加使用者時,如果不指定使用者所屬的初始組,那麼會建立和使用者相同的組
第五列: 使用者說明
第六列: 使用者家目錄
第七列: 登入shell /bin/bash
2、/etc/shadow 影子檔案
root:$6$QO0RNjGP$S2mJn9MlDI85lGmHykavrRN6uWjT4qZf/vzW.IuyE7VB5G41PhrB8iT7NkzdQrcOJshqkYr9FUlgBGZJZXcKH0:16566:0:99999:7:::
第一列: 使用者名
第二列: 加密密碼(可以在密碼位前加“!”或者“*”改變加密值讓密碼暫時失效
使使用者無法登入,達到暫時禁止使用者登入的效果。注僞使用者的密碼都
是“!!”或“*”,代表沒有密碼是不能登入的)
第三列: 密碼最近更改時間,1970年1月1日是作為标準時間
時間戳轉日期
[root@localhost ~]# date -d "1970-01-01 15775 days"
2013年 03月 11日星期一 00:00:00 CST
日期轉時間戳
[root@localhost ~]# echo $(($(date--date="2013/03/11" +%s)/86400+1))
15775
第四列: 兩次密碼修改時間間隔(和第3字段相比)
第五列: 密碼有效期(和第3字段相比)
第六列: 密碼修改到期前的警告天數(和第5字段相比)
第七列: 密碼失效時間(這裡同樣要寫時間戳,也就是1970年1月1日進行時間換算。如果時間超過了失效時間,就算密碼沒有失效也不能使用)
第九列: 保留
3、/etc/gshadow 組資訊檔案
root:::root
第一列: 組名
第二列: 組密碼位
第三列: GID
第四列: 此組中支援的其他使用者,附加組是此組的使用者
初始組: 每個使用者初始組隻能有一個,一般都是和使用者名相同的組作為初始組
附加組: 每個使用者可以屬于多個附加組。要把使用者加入組,都是加附加組
4、組密碼檔案
如果給使用者組設定了組管理者,并給該使用者組設定了組密碼,組密碼就儲存在這個檔案當中。組管理者就可以利用這個密碼管理這個使用者了。
5、使用者的家目錄
[root@localhost ~]# cd /home/
6、使用者郵箱目錄
這個郵箱在/var/spool/mail/目錄當中,例如:user使用者的郵箱就是/var/spool/mail/user檔案
7、使用者模闆目錄
/etc/skel/ #使用者管理指令 添加使用者
[root@localhost ~]# useradd 使用者名(user)
手工删除使用者
手工删除使用者實驗:手工删除,如果可以正常建立使用者,證明使用者删除幹淨。
[root@localhost ~]# vi /etc/passwd #找到user列删除整列
[root@localhost ~]# vi /etc/shadow #找到user列删除整列
[root@localhost ~]# vi /etc/group #找到user列删除整列
[root@localhost ~]# vi /etc/gshadow #找到user列删除整列
[root@localhost ~]#cd /home / #在home目錄下删除user目錄
[root@localhost ~]# cd /var/spool/mail/ #在mail目錄下删除user目錄
手工指定選項添加使用者
[root@localhost ~]# groupadd wulaoer
#先手工添加wulaoer使用者組,因為一會要把wulaoer使用者的初始組指定過來,如果不事先建立,會報錯使用者不存在。
[root@localhost ~]# useradd -u 550 -g wulaoer -G root -d /home/wulaoer-c "test user" -s /bin/bash wulaoer
#建立使用者wulaoer的同時指定了UID(550),初始組(wulaoer),附加組(root),家目錄(/home/wulaoer),使用者說明(test user)和使用者登入shell(/bin/bash)
[root@localhost ~]# grep "wulaoer" /etc/passwd /etc/shadow/etc/group
#同時檢視三個檔案
/etc/passwd:wulaoer:x:550:500:test user:/home/wulaoer:/bin/bash
#使用者的UID、初始組、使用者說明、家目錄、登入shell都和指令手工指定的一樣
/etc/shadow:wulaoer:!!:16554:0:99999:7:::
#wulaoer使用者還沒有設定密碼
/etc/group:root:x:0:wulaoer
#wulaoer使用者加入了root組,root組是wulaoer使用者發附加組
/etc/group:wulaoer:x:500:
#GID500的組是wulaoer組
[root@localhost ~]# ll -d /home/wulaoer/
drwx------. 3 wulaoer wulaoer 4096 4月 29 18:52 /home/wulaoer/
#家目錄也建立了,不需要手工添加家目錄
useradd指令
useradd 選項 使用者名
選項:
-u 550 指定UID
-g 組名 指定初始組 不要手工指定
-G 組名 指定附加組,把使用者加入組,使用附加組
-c 說明 添加說明
-d 目錄 手工指定家目錄,目錄不需要事先建立
-s shell /bin/bash
useradd –G user1 aa 添加使用者aa,指定附加組為user1
4)useradd預設值
useradd 添加使用者時參考的預設值檔案主要有兩個,分别是/etc/default/useradd和
/etc/login.defs
/etc/default/useradd
[root@localhost ~]# vi /etc/default/useradd
1 #useradd defaults file
2GROUP=100
#這個選項是建立使用者的預設組,也就是說添加每個使用者時,使用者的初始組就是GID為100的這個使用者組。目前我們采用的機制私有使用者組機制
3HOME=/home
#使用者家目錄預設位置,所有所有建立使用者的家目錄預設都是在/home/下
4INACTIVE=-1
#密碼過期後寬限天數,也就是/etc/shadow檔案的第七個字段。如果是天數,比如10代表密碼過期後10天後失效;如果是0,代表密碼過期後立即失效;如果是-1,則代表密碼永遠不會失效。這裡是預設值是-1,是以所有建立使用者的密碼都不會失效。
5EXPIRE=
密碼失效時間,也就是/etc/shadow檔案的第八個字段。也就說使用者到達這個日期後直接失效。這裡也是使用時間戳來表示日期的。預設值是空,是以所有建立使用者沒有失效時間,永久有效。
6SHELL=/bin/bash
這個選項就是使用者的預設shell的。/bin/bash是Linux的标志shell,是以所有建立立的使用者預設都具備shell賦予的權限。
7SKEL=/etc/skel
這個選項是定義使用者的模版目錄的位置,/etc/skel/目錄中的檔案都會複制到建立使用者的家目錄當中。
8CREATE_MAIL_SPOOL=yes
這個選項定義是否給建立使用者建立郵箱,預設是建立,也就是說所有的建立使用者系統都會建立一個郵箱,放在/var/spool/mail/下和使用者名相同。
/etc/login.defs
[root@localhost ~]# vi /etc/login.defs
#這個檔案有些注釋,把注釋删除掉,檔案内容就變成下面這個樣子
MAIL_DIR /var/spool/mail
建立使用者的預設郵箱位置。
PASS_MAX_DAYS 99999
密碼的有效期,也就是/etc/shadow檔案的第五個字段。代表多少天之後必須修改密碼,預設是99999
PASS_MIN_DAYS 0
兩次密碼的修改間隔時間,也就是/etc/shadow檔案的第四個字段。代表第一次修改密碼之後,幾天後才能再次修改密碼。預設值是0。
PASS_MIN_LEN 5
代表密碼的最小長度,預設不小于5位。但是使用者登入時已經被PAM子產品取代,是以這個選項并不生效。
PASS_WARN_AGE 7
密碼修改到期前的警告天數,也就是/etc/shadow檔案的第六個字段。代表密碼到底有效期前多少天開始進行報警提醒,預設值是7天。
UID_MIN 500
UID_MAX 60000
代表建立使用者時,最小UID和最大UID的範圍。從2.6.x核心開始,Linux使用者的UID最大支援232這麼多,但是真正最大使用時最大範圍是60000。還要注意如果手工指定了一個使用者的UID是550,那麼下一個建立的使用者的UID就會從551開始,哪怕500-549之間的UID沒有使用(小于500的UID是給僞使用者預留的)。
GID_MIN 500
GID_MAX 60000
GID的最大值和最小值之間的範圍。
CREATE_HOME yes
建立使用者時是否自動建立使用者的家目錄,預設是建立
UMASK 077
建立是使用者家目錄的預設權限,因為umask值是077,是以建立的使用者的家目錄的權限是700,umask的具體作用和修改方法可以參考權限設定。
USERGROUPS_ENAB yes
使用userdel删除使用者時,是否删除使用者的初始組,預設是删除。
ENCRYPT_METHOD SHA512
指定Linux使用者的密碼使用SHA512散列模式加密,這是新的密碼加密模式,原先是Linux隻能用DES或MD5方式加密
設定密碼
passwd 使用者名
passwd 改變root密碼
passwd root 改變root密碼
passwd 選項 使用者名
選項:
--stdin 允許管道符入密碼 echo “123456” | passwd –stdin user2
-l 鎖定使用者密碼,使用者不允許登入
-u 解鎖
3、使用者資訊修改 修改已經存在的使用者資訊
usermod -u -G -c -d -s 使用者名
注意:不要修改已經存在的使用者的初始組
usermod -L(大) 使用者名 鎖定使用者
usermod -U(大) 解鎖
usermod -l 新名 舊名 使用者改名
4、删除使用者
usermod -r 使用者名
-r 連帶家目錄一起删除
5、添加組
groupadd 組名
6、删除組
groupdel 組名 注:必須是空組
7、把已經存在的使用者加入組
usermod -G 組名 使用者名
gpasswd -a 使用者名 組名 #使用者加入組
gpasswd -d 使用者名 組名 #把使用者從組中删除
使用者相關指令
id 使用者名 #顯示使用者發UID,初始組,和附加組
su - 使用者名 #切換使用者身份
連帶環境變量一起切換
改變有效組的指令
假設aa使用者即屬于aa組,也屬于group1組,如果有效組是aa組,那麼aa使用者建立檔案時,檔案預設屬組是aa
aa組。如果有效組是group1組,那麼aa使用者建立檔案時,檔案預設屬組是group1組
aa身份登入:
newgrp group1 aa 必須屬于group1組,改變aa的有效組為group1 aa建立的新檔案,預設屬組是group1
,而不再是aa
/test #目錄,要求aa,bb,cc使用者對此目錄有rwx。其他人沒有權限
groupadd testgrp #建立組
gpasswd -a aa testgrp #把aa,bb,cc加入組
bb
cc
chmod 770 /test #修改組權限
chgrp testgrp /test # 修改屬組