一:新建用戶和用戶組: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?–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指定)
第四段:組內成員