天天看點

LINUX-使用者和使用者組管理

使用者和使用者組管理

使用者相關檔案

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     # 修改屬組      

繼續閱讀