一:新建用戶和用戶組:useradd和groupadd shell
1,useradd的參數: bash
-u:指定UID標記號 ui
-d:指定宿主目錄,缺省爲/home/用戶名 加密
-e:指定帳號失效時間(下面usermod也有此選項) spa
-g:指定所屬的基本組(組名或GID) 命令行
-G:指定所屬的附加組(組名或GID) token
-M:不爲用戶創建並初始化宿主目錄、 字符串
-s:指定用戶的登陸shell(默認爲/bin/bash,通常不用改,在創建非登陸用戶的時候能夠指定 emacs
爲/sbin/nologin) it
注:這些參數都能分開用,不衝突的能夠在創建用戶的時候連着用。
示例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 //查看user一、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 –d 而不能用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 組名:-r選項爲移除密碼,gpasswd –r 組名爲清空該組密碼
組密碼的用途:主要是一些用戶想要加入組,那麼須要用到的這個組帳戶的密碼,而這個用戶加入的時候也是臨時加入的,用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鎖定一個帳戶的時候能夠用passwd–u直接解鎖,可是用passwd –l鎖定的帳戶,用usermod–U解鎖的時間,須要解鎖兩次,由於,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~]$
4,newgrp
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 6789
第一段:用戶帳號的名稱
第二段:加密後的密碼字符串
注:在使用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指定)
第四段:組內成員
總結:
學的時間也不短了,老是想找個時間將用戶組這一章好好的作下筆記,這下好了,終於弄完了,哈哈
用戶和用戶組的管理這一章很繞口,理解也還算容易,命令很少,可是選項不少,一個題可能有好幾種作法,好比說usermod -a -g tech user01和gpasswd -a user01 tech,雖然都是講user01用戶加入到tech組中,可是還有那麼的不一樣,唉,慢慢搞吧!