(五)Linux用戶管理

轉自:http://murongqingqqq.blog.51cto.com/2902694/1360239


用戶和組的管理,想了一下,無非就是這幾個方面:

一,新建用戶和用戶組:useradd、groupadd

二,刪除用戶和用戶組:userdel、groupdel

三,爲用戶和用戶組添加密碼:passwd、gpasswd

四,用戶組成員的添加和刪除:gpasswd,usermod

五,用戶和組屬性的查看和修改:usermod、chage、id、newgrp

六,附:用戶和用戶組的密碼及新建用戶宿主目錄裏面的隱藏文件

用戶和組的管理學習需要配合權限方面,詳細的權限可以參考:

Linux系統管理_基本權限和歸屬:http://murongqingqqq.blog.51cto.com/2902694/1360265

Linux系統管理_附加控制權限:http://murongqingqqq.blog.51cto.com/2902694/1360874

Linux系統管理_ACL訪問控制:http://murongqingqqq.blog.51cto.com/2902694/1361506


一:新建用戶和用戶組:useradd和groupadd

   1,useradd的參數:

   -u:指定UID標記號

   -d:指定宿主目錄,缺省爲/home/用戶名

   -e:指定賬號失效時間(下面usermod也有此選項)

   -g:指定所屬的基本組(組名或GID)

   -G:指定所屬的附加組(組名或GID)

   -M:不爲用戶建立並初始化宿主目錄、

   -s:指定用戶的登錄shell(默認爲/bin/bash,一般不用改,在建立非登錄用戶的時候可以指定

   爲/sbin/nologin)

   注:這些參數都能分開用,不衝突的可以在建立用戶的時候連着用。

   示例1:添加用戶stu01,指定UID爲520,宿主目錄爲/public/stu01,指定基本組爲users(注:系統中本身就

   存在users這個組GID爲100),附加組爲tech:

   [root@localhost ~]# useradd -u 520 -d /public/stu04 -g users-G tech stu01

   [root@localhost ~]# id stu01

   uid=520(stu01) gid=100(users) groups=100(users),200(tech)

   示例2:添加用戶stu02,不爲用戶建立宿主目錄:

   [root@localhost ~]# useradd -M -s /sbin/nologin stu02   //創建一個非登錄用戶stu02

   [root@localhost ~]# cat /etc/passwd | grep stu02

   stu02:x:1001:1001::/home/stu02:/sbin/nologin      //-s參數指定bash shell

   2,groupadd的參數:

   gourpadd [-g GID] 組名

   -g參數指定了新建用戶組的GID

   [root@localhost ~]# groupadd -g 600 stu //添加一個組stu,指定其GID爲600

   [root@localhost ~]# cat /etc/group | grep stu   //查看stu組的信息

   stu:x:600:


二:刪除用戶和用戶組

   1,userdel

   -格式:userdel [-r] 用戶名

   添加-r選項,宿主目錄/用戶郵件也一併刪除

   示例:

[root@localhost~]# useradd user1;useradd user2 //添加用戶user1和user2

[root@localhost~]# ll -d /home/user1/ /var/mail/user1 /home/user2/ /var/mail/user2 //查看user1、user2的宿主目錄和郵件文件是否存在

drwx------ 3 user1 user1 4096 02-1809:53 /home/user1/

drwx------ 3 user2 user2 4096 02-1809:53 /home/user2/

-rw-rw---- 1 user1 mail     0 02-18 09:53 /var/mail/user1

-rw-rw---- 1 user2 mail     0 02-18 09:53 /var/mail/user2

[root@localhost~]# userdel user1 ; userdel -r user2    //加不加-r的區別

[root@localhost~]# ll -d /home/user1/ /var/mail/user1 /home/user2/ /var/mail/user2

ls:/home/user2/: 沒有那個文件或目錄//加-r之後刪除宿主目錄

ls:/var/mail/user2: 沒有那個文件或目錄//加-r之後刪除郵件文件

drwx------ 3 1002 1002 4096 02-1809:53 /home/user1/

-rw-rw---- 1 1002 mail    0 02-18 09:53 /var/mail/user1

[root@localhost~]#

   2,groupdel:刪除用戶組

   -格式:groupdel組名

   -刪除的目標組不能是用戶的基本組。

-在刪除用戶組的時候,如果該組爲某個成員的私有組,則無法刪除,必須先刪除組裏面的成員,才能成功刪除該組。

[root@localhost~]# id user1    //查看user1的基本組和附加組

uid=1002(user1) gid=1002(user1) groups=1002(user1),600(stu)

[root@localhost ~]# grep stu /etc/group

stu:x:600:user1,user2

上面的操作可以看到,user1的基本組爲user1,附加組爲stu,那麼現在只能刪除stu,而不能直接刪除組user1,因爲user1組是一個基本組,要想刪除user1,必須先刪除user1用戶,再刪除user1組,而stu組不是一個基本組,只是user1和user2的附加組,所以可以直接刪除。

[root@localhost~]# groupdel user1  //嘗試刪除user1用戶組,因爲user1組爲user1的基本組,所以需要先刪除user1用戶,才能刪除user1組。

groupdel:不能刪除用戶的主組。

[root@localhost~]# groupdel stu

[root@localhost~]# grep stu /etc/group //刪除stu組之後,不能看到/etc/group文件裏面的stu組的信息了。


三:爲用戶和用戶組添加密碼

   1,爲用戶添加密碼:

Passwd命令:

選項有:

-d :清空用戶的密碼,使之無需密碼即可登錄

-l :鎖定用戶賬號

-S :查看用戶賬號的狀態(是否被鎖定)

-u :解鎖用戶賬號

- - stdin:標準輸入(比如管道)取密碼

注:刪除密碼用passwd 而不能用echo “” | passwd - -stdin 用戶名

示例:

[root@localhosthome]# cat /etc/shadow| grep user3      //查看user3是否有密碼

user3:$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhosthome]# passwd -d user3  //使用-d選項刪除密碼

Removing passwordfor user user3.

passwd: Success

[root@localhosthome]# cat /etc/shadow| grep user3      //再次查看,密碼取消

user3::16119:0:99999:7:::

[root@localhosthome]#

示例:

如果修改一個用戶的密碼,可以直接輸入passwd 用戶名,然後進入交互式的密碼輸入去人,使用- -stdin使用非交互式設置密碼,直接將密碼導入。

[root@localhost/]# echo "123" | passwd --stdin user3       //設置user3的密碼爲123,使用--stdin爲面交互式導入密碼

Changing password for user user3.

passwd: all authentication tokensupdated successfully.

[root@localhost/]# passwd -l user3 //鎖定user3賬戶

Locking password for user user3.

passwd: Success

[root@localhost/]# grep user3 /etc/shadow  //查看鎖定賬戶密碼信息,有兩個“!”

user3:!!$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhost/]# passwd -S user3 //用-S查看是否被鎖定

user3 LK 2014-02-18 0 99999 7 -1(Password locked.)

[root@localhost/]# passwd -u user3 //-u參數爲解鎖

Unlocking password for user user3.

passwd: Success.

[root@localhost/]# grep user3 /etc/shadow  //解鎖之後,該賬戶密碼段沒有“!”

user3:$1$4vGPvNrT$xrFPE9XQhl.w1jchu10wo/:16119:0:99999:7:::

[root@localhost/]#

2,用戶組的密碼gpasswd

gpasswd 組名:進入交互式的密碼輸入確認。

gpasswd 組名:-r選項爲移除密碼,gpasswd 組名爲清空該組密碼

組密碼的用途:主要是一些用戶想要加入組,那麼需要用到的這個組賬戶的密碼,而這個用戶加入的時候也是臨時加入的,用exit即可退出該組。



四:用戶組成員的添加和刪除

   1,gpasswd在用戶組中的應用

-A :定義組管理員列表(可以在/etc/gshadow文件裏查看組管理員和組成員)

-a :添加組成員,每次只能加一個

-d :刪除組成員,每次只能刪一個

-M :定義組成員列表,可設置多個(爲覆蓋操作,在定義之後,之前組內用戶將被刪除;注意在寫多個成員列表的時候,用逗號隔開)

示例:

[root@localhost ~]# grep user /etc/gshadow  

user:!::

[root@localhost ~]# gpasswd -a user1 user   //將賬戶user1加入到user組中

正在將用戶“user1”加入到“user”組中

[root@localhost ~]# gpasswd -a user2 user   //將user2加入到user組中

正在將用戶“user2”加入到“user”組中

[root@localhost ~]# grep user /etc/gshadow | tail -1    //查看user用戶組的成員

user:!::user1,user2

[root@localhost ~]# gpasswd -M stu01,stu02 user //-M參數覆蓋添加多個用戶

[root@localhost ~]# cat /etc/gshadow | tail -1  //再次查看,user1和user2被覆蓋

user:!::stu01,stu02

[root@localhost ~]# gpasswd -d stu01 user       //將stu01從user組中刪除

正在將用戶“stu01”從“user”組中刪除

[root@localhost ~]# cat /etc/gshadow | tail -1

user:!::stu02       //刪除後只剩下stu02用戶

[root@localhost ~]# gpasswd -A stu02 user       //將stu02設置爲管理員

[root@localhost ~]# grep user /etc/gshadow | tail -1

user:!:stu02:stu02      //gshadow文件中,第三個字段爲該組的管理員賬戶,爲stu02

[root@localhost ~]#


2,usermod主要是對用戶的屬性進行更改,可以增加用戶成員的所屬附加組

只是用usermod的 -a-G選項(-a表示添加,-G指定組,-a -G爲新加一個附加組)

命令:usermod -a -G 用戶組 用戶名

[root@localhost~]# usermod -a -G tech stu02    //爲stu02增加一個附加組tech

[root@localhost~]# id stu02

uid=501(stu02) gid=1201(nsd)groups=1201(nsd),200(tech),1204(user)


五:用戶和組屬性的查看和修改

   1,usermod :主要針對用戶與組之間屬性的更改

格式:usermod [選項](選項可以有多個)用戶名

-l :更改用戶賬號的登錄名稱

-L :鎖定用戶賬戶(注:用usermod L鎖定一個賬戶的時候可以用passwdu直接解鎖,但是用passwd l鎖定的賬戶,用usermodU解鎖的時間,需要解鎖兩次,因爲,passwd l鎖定的賬戶密碼前面有兩個!,而usermod L鎖定的賬號密碼前面有一個!,可以通過查看/etc/gshadow文件裏面的密碼段來驗證。)

-U :解鎖用戶賬戶

-u、-d、-e、-g、-G、-s :與useradd相同

-a :和-G搭配使用爲添加該用戶的附加組(只是用-G的時候,爲修改附加組)

示例:

usermod -e 20140630(或2014-06-30) user1 :爲修改user1賬戶失效時間爲20140630

但是在用chage -E 2014-06-30 user1的時候,不能用20140630

[root@localhost~]# cat /etc/shadow | grep user1

user1:!!:16119:0:99999:7:::

[root@localhost~]# usermod -e 20140630 user1   //修改user1的賬戶失效時間

[root@localhost~]# cat /etc/shadow | grep user1

user1:!!:16119:0:99999:7::16251:

[root@localhost~]# usermod -l user01 user1 //修改user1的登錄名爲user01

usermod:警告:/var/spool/mail/user1 不屬於 user1

[root@localhost~]#


2,chage :主要針對用戶的密碼進行設定

-l :列出密碼有效信息

-E :指定賬戶過期時間,YYYY-MM-DD

-I :指定當密碼失效後多少天鎖定賬號

-m :指定密碼的最小天數

-M :指定密碼的最大天數

示例:

[root@localhost~]# chage -l  user01    //查看user01的密碼信息

最近一次密碼修改時間:2月 18, 2014

密碼過期時間:從不

密碼失效時間:從不

帳戶過期時間:從不

兩次改變密碼之間相距的最小天數:0

兩次改變密碼之間相距的最大天數:99999

在密碼過期之前警告的天數:7

[root@localhost ~]# cat /etc/shadow | grep user01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:0:99999:7:::

[root@localhost ~]# chage -E 2014-07-10 user01      //修改user01的賬戶過期時間

[root@localhost ~]# chage -I 3 user01       //修改user01用戶的密碼失效3天后鎖定

[root@localhost ~]# chage -m 10 user01  //密碼修改之後10天內不準修改

[root@localhost ~]# chage -M 40 user01  //密碼修改後40天之後必須再次修改密碼

[root@localhost ~]# cat /etc/shadow | grep user01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:10:40:7:3:16261:

[root@localhost ~]# chage -l  user01

最近一次密碼修改時間:2月 18, 2014

密碼過期時間:3月 30, 2014

密碼失效時間:4月 02, 2014

帳戶過期時間:7月 10, 2014

兩次改變密碼之間相距的最小天數:10

兩次改變密碼之間相距的最大天數:40

在密碼過期之前警告的天數:7

[root@localhost ~]#


3,id

-在命令行輸入id,爲查看該賬戶的用戶名及用戶所屬組等信息;

[root@localhost~]# su - frank

[frank@localhost~]$ id     //id命令直接查看當前用戶的ID和所屬組

uid=507(frank) gid=507(frank)groups=507(frank)

-id 用戶名 :表示查看該用戶的相關信息

[root@localhost~]#id frank        //查看frank用戶的用戶ID和所屬組

uid=507(frank) gid=507(frank)groups=507(frank)

[root@localhost~]# id user01       //查看user01的用戶ID和所屬組

uid=1005(user01)gid=1005(user1) groups=1005(user1)

[root@localhost~]#

-id gn :查看當前用戶的所屬組

[root@localhost~]# su - frank

[frank@localhost~]$ id -gn     //查看當前所屬組,爲frank組,下面修改一下

frank

[frank@localhost~]$ exit

logout

[root@localhost~]# usermod -g tech frank   //將frank的基本組修改爲tech

[root@localhost~]# su - frank

[frank@localhost~]$ id -gn     //用id -gn查看當前組

tech

[frank@localhost~]$


4newgrp

newgrp 用戶組 :爲當前用戶臨時增加一個用戶的附加組(可以用exit退出該附加組)

示例:

[root@localhost~]# su - frank

[frank@localhost~]$ id

uid=507(frank) gid=200(tech) groups=200(tech)

[frank@localhost~]$ newgrp user

密碼:  //這個密碼爲用gpasswd來設置的用戶組密碼,當有新用戶加入是,需要輸入,如果沒有密碼,直接確定即可加入

[frank@localhost~]$ id -gn

user   //用戶組爲user,未修改之前爲tech

[frank@localhost~]$ id

uid=507(frank) gid=1204(user) groups=200(tech),1204(user)

[frank@localhost~]$ exit       //只是臨時增加的附加組,可以用exit退出該組

exit

[frank@localhost~]$ id

uid=507(frank) gid=200(tech) groups=200(tech)

[frank@localhost~]$ id -gn

tech       //退出後的用戶組還未之前的tech

[frank@localhost~]$


5,groups :查看用戶所屬組

groups :查看當前用戶的所屬組(包括基本組和附加組)

groups 用戶名 :查看該用戶所屬組(包括基本組和附加組,前面的爲基本組)

注:也可以查看/etc/group和/etc/gshadow文件的第四段。

[root@localhost ~]# groups  //查看當前用戶的所屬組

root bin daemon sys adm disk wheel

[root@localhost ~]# groups user2    //查看user2用戶的所屬組

user2 : user2 tech      //那麼user2用戶的基本組爲user2,有一個附加組,爲tech

[root@localhost ~]#


六,附:用戶和用戶組的密碼及新建用戶宿主目錄裏面的隱藏文件

1,用戶的密碼 :/etc/passwd 和/etc/shadow


/etc/passwd文件:保存了用戶賬號的基本信息

[root@localhost~]# head -1 /etc/passwd

root:x:0:0:root:/root:/bin/bash

1     2 3 4 5     6        7

可以看到passwd裏面的內容分爲7個字段,分別用“:”隔開,每個字段的含義:

第一段:用戶賬號的名稱

注:可使用user -l user1 user01修改

第二段:密碼字符或佔位符

注:加密後的密碼保存在/etc/shadow文件中

第三段:用戶賬號的UID號

注: 在建立的時候用useradd -u來指定UID號

第四段:所屬基本組的GID號

注:在新建用戶的時候,如果不指定基本組,會默認新建一個和用戶同名的組,可以使用useradd -g users/100來指定新建用戶組的GID

第五段:用戶全名

第六段:宿主目錄

注:在新建用戶的時間,用useradd -d來指定

第七段:登錄shell程序的路徑

注:在新建用戶時候使用useradd -s來指定,也可以在後來使用usermod -s來指定


/etc/shadow文件:保存了密碼字串,有效期等信息

[root@localhost/]# head -1 /etc/shadow

root:$1$SmlKPNho$qNqybQOGBSnK6iWmviI6b1:15908:0:99999:7:::

1      2                                                                       3        4  5       6 789

第一段:用戶賬號的名稱

第二段:加密後的密碼字符串

注:在使用passwd -l鎖定之後加兩個!,用usermod -L鎖定之後該字符串前面加一個!

第三段:上次修改密碼的時間

第四段:密碼的最短有效天數,默認爲0

注:也就是在上次修改密碼後多少天之內不準修改密碼,可以使用chage -m來修改

第五段:密碼的最長有效天數

注:也就是說,密碼在到達有效天數之後,必須進行修改,可以使用chage -M修改

第六段:密碼過期後的警告天數,默認爲7

注:在密碼最長有效天數的前7天進行提醒

第七段:密碼過期後多少天禁用此賬戶,默認值爲空

注:如果密碼過期之後,也就是密碼最長有效時間到了之後,用戶還可以繼續使用該賬號,如果還不修改密碼,那麼,這個時間將起作用,該用戶將被禁用。可以使用chage -I 來修改

第八段:賬號失效時間,默認值爲空

可以使用chage -E 或者usermod -e來修改賬號的失效時間

例如:

[root@localhosthome]# chage -l  user01

最近一次密碼修改時間:2月 18, 2014

密碼過期時間:3月 30, 2014

密碼失效時間:4月 02, 2014

帳戶過期時間:7月 10, 2014

兩次改變密碼之間相距的最小天數:10

兩次改變密碼之間相距的最大天數:40

在密碼過期之前警告的天數:7

[root@localhost~]# cat /etc/shadow | grep user01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:10:40:7:3:16261:

[root@localhost~]# usermod -e 20140810 user01  //或chage -E 20140810 user01

[root@localhost~]# cat /etc/shadow | grep user01

user01:$1$609lnAxS$qk/Yzf4qd727R9Q2dieQ1.:16119:10:40:7:3:16292:

[root@localhost~]# chage -l  user01

最近一次密碼修改時間:2月 18, 2014

密碼過期時間:3月 30, 2014

密碼失效時間:4月 02, 2014

帳戶過期時間:8月 10, 2014

兩次改變密碼之間相距的最小天數:10

兩次改變密碼之間相距的最大天數:40

在密碼過期之前警告的天數:7

第九段:該字段保留


2,新建一個用戶時候的默認配置/etc/login.defs、/etc/useradd和/etc/skel

[root@localhost~]# grep -vE "^#|^$" /etc/login.defs

MAIL_DIR        /var/spool/mail     //定義郵件文件路徑

PASS_MAX_DAYS   99999           //定義密碼最長有效天數,/etc/shadow第五段

PASS_MIN_DAYS   0       //密碼最短有效天數爲0,/etc/shadow的第四段

PASS_MIN_LEN    5       //密碼最小長度爲5,這裏不起作用,有其他文件來規定

PASS_WARN_AGE   7       //密碼過期後的警告天數

UID_MIN                   500       //UID的起始值,/etc/passwd中的第三段

UID_MAX                 60000       //UID的最大值,/etc/passwd中的第三段

GID_MIN                   500       //GID的起始值,/etc/passwd中的第四段

GID_MAX                 60000       //GID的最大值,/etc/passwd中的第四段

CREATE_HOME     yes         //是否創建宿主目錄

UMASK           077         //umask值爲077

USERGROUPS_ENAB yes         //

MD5_CRYPT_ENAB yes          //密碼使用MD5加密

ENCRYPT_METHOD MD5          //

[root@localhost~]#cat /etc/default/useradd

# useradd defaults file    

GROUP=100       //

HOME=/home      //定義創建用戶的宿主目錄在/home下

INACTIVE=-1         //是否啓用該賬戶,-1代表是

EXPIRE=             //

SHELL=/bin/bash     //指定新建用戶的shell爲/bin/bash

SKEL=/etc/skel      //新建用戶的宿主目錄模板爲/etc/skel

CREATE_MAIL_SPOOL=yes       //是否創建用戶的郵件文件


[root@localhost~]# ll -a  /etc/skel/       //在新建一個用戶的時候,宿主目錄裏面的內容就是將skel拷貝過去,然後放到/home目錄下並改名爲新建的用戶名

總計 64

drwxr-xr-x  3 root root 4096 2013-07-10 .

drwxr-xr-x 97 root root 1228802-18 16:24 ..

-rw-r--r--  1 root root   33 2011-05-13 .bash_logout

-rw-r--r--  1 root root  176 2011-05-13 .bash_profile

-rw-r--r--  1 root root  124 2011-05-13 .bashrc

-rw-r--r--  1 root root  515 2011-04-07 .emacs

drwxr-xr-x  4 root root 4096 2012-11-16 .mozilla


3,全局配置文件~/.bash_profile、~/.bashrc和~/.bash_logout

注:可以在用戶的宿主目錄下使用ls -a查看。

~/.bash_profile:每次登錄時執行

~/.bashrc :每次進入新的Bash環境時執行

~/.bash_logout:每次推出登錄時執行


4,查看用戶組信息:/etc/group和/etc/gpasswd

/etc/group查看用戶組的信息

[root@localhost~]# cat /etc/group | tail -1

user:x:1204:user01,user2

第一段:組名

第二段:密碼佔位符

第三段:GID

第四段:組內成員(使用gpasswd -a添加,gpasswd -d刪除,gpasswd -M覆蓋添加多個)


[root@localhost~]# cat /etc/gshadow | tail -1

user:$1$u/W2qj.L$W8GJY5HxyLzphdtgLKpxW0:stu02:user01,user2

第一段:組名

第二段:密碼(使用gpasswd來設置)

第三段:組管理員(使用gpasswd -A指定)

第四段:組內成員

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章