1、用戶的賬號管理
shell
①添加賬號:useraddcentos
選項:安全
-c, --comment ‘COMMENT’;在建立用戶時爲用戶添加註釋信息,通常爲全名。app
-d, --home/PATH/TO/HOME_DIR:在建立用戶的時候爲用戶指定家目錄的絕對路徑,被指定的目錄應該是事先不存在的目錄;ide
-g, --gid GROUPNAME:在建立用戶時,爲用戶指定主組;ui
-G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:在建立用戶時,爲用戶添加附加組;加密
-m, --create-home:在建立用戶時強制性的爲用戶建立家目錄spa
-M:在建立用戶時,不會建立用戶的家目錄,即便在/etc/login.defs和CREATE_HOME的值爲yes也不建立,orm
-r, --system:建立系統用戶接口
-u, --uid UID:在建立用戶的時候,爲用戶指定UID,這個UID能夠超出60000的限制;
-s, --shell /PATH/TO/SHELL:在建立用戶時,爲用戶指定默認shell,使用絕對路徑;
-D, --defaults:顯示或修改用戶默認屬性值;
-s, --shell /PATH/TO/SHELL:修改/etc/default/useradd文件中SHELL的默認值;、
示例:# useradd -u 5000 -g centos -G distro,peguin gentoo
意爲:建立用戶gentoo,UID爲5000,基本組爲centos,附加組爲distro和peguin
# useradd -c "fedora Core" -G distro,peguin -s /bin/tcsh fedora
意爲:建立用戶fedora,其全名爲"Fedora Core",附加組爲distro和peguin,默認shell爲/bin/tcsh;
注:此兩個過程可能要新建centos、distro、penguin組
用戶賬戶自己在 /etc/passwd 中定義。Linux 系統包含一個 /etc/passwd 的同伴文件,叫作 /etc/shadow。該文件不像 /etc/passwd,只有對於 root 用戶來講是可讀的,而且包含加密的密碼信息。咱們來看一看 /etc/shadow 的一個樣本行:
drobbins1$1234567890123456789012345678901:11664:0:-1:-1:-1:-1:0
每一行給一個特別賬戶定義密碼信息,一樣的,每一個字段用 : 隔開。第一個字段定義和這個shadow條目相關聯的特別用戶賬戶。第二個字段包含一個加密的密碼。其他的字段在下表中描述:
字段 3 自 1/1/1970 起,密碼被修改的天數
字段 4 密碼將被容許修改以前的天數(0 表示「可在全部時間修改」)
字段 5 系統將強制用戶修改成新密碼以前的天數(1 表示「永遠都不能修改」)
字段 6 密碼過時以前,用戶將被警告過時的天數(-1 表示「沒有警告」)
字段 7 密碼過時以後,系統自動禁用賬戶的天數(-1 表示「永遠不會禁用」)
字段 8 該賬戶被禁用的天數(-1 表示「該賬戶被啓用」)
字段9 保留供未來使用
②刪除賬號userdel
選項:
-r:刪除用戶的同時,清除用戶的家目錄
示例:# userdel -r sam
意爲:此命令刪除用戶sam在系統文件(主要是/etc/passwd,/etc/shadow,/etc/group等)中的記錄,同時刪除用戶的主目錄。
③修改賬號信息usermod
選項:
-c, --comment‘COMMENT’;修改用戶的註釋信息;
-g, --gid GROUPNAME:修改用戶的主要組
-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用戶的附加組爲列表中的組;
-a, --append;與-G選項同時使用,給用戶添加新的附加組;
-d, --home /PATH/TO/HOME_DIR:修改用戶的家目錄;
-m, --move-home:與-d選項同時使用,將舊的家目錄中的數據移動至新家之中;
-l, --login NEW_LOGIN:更改用戶帳戶的登陸名;
-s, --shell /PATH/TO/SHELL:修改用戶帳戶的登陸shell
-u, --uid UID:修改用戶的UID
-L, --lock:鎖定用戶密碼;
-U, --unlock:解鎖用戶密碼;
示例:# usermod gentoo -G bin,root -s /bin/csh -c "Gentoo Distribution"
意爲:將用戶gentoo的附加組修改成bin和root,默認shell爲/bin/csh,註釋信息爲"Gentoo Distribution";
# usermod fedora -aG centos
意爲:爲用戶fedora添加新的附屬組centos
④查看賬號屬性 id
格式: id user1 顯示user1的uid和gid ,缺省爲當前用戶的id信息
真實的ID:在/etc/passwd定義的用戶的UID和GID
有效的ID:當前生效的用戶的UID和GID
id [OPTION]... [USER]
-u:盡顯示用戶的user ID
-g:盡顯示用戶的group ID
-G:顯示用戶全部組的ID
-n:以名稱來代替ID進行顯示
2、用戶認證管理
指定和修改用戶密碼的Shell命令是passwd。超級用戶能爲本身和其餘用戶指定密碼,普通用戶只能修改本身的密碼。
①passwd
1.若是省略用戶名,意味着更改當前登陸用戶的密碼;
2.若是指定用戶名,更改指定用戶的密碼,只能root使用;
選項:
-l, --lock:鎖定用戶密碼
-u, --unlock:解鎖用戶密碼;
相比較usermod -L|-U而言,其優先級更高;
若是使用usermod -L鎖定的用戶密碼,可使用passwd -u解鎖;
而使用passwd -l鎖定的用戶密碼,沒法使用usermod -U解鎖;
-d, --delete:刪除用戶密碼;將/etc/shadow文件中第二字段清空
-S, --status:查看用戶的密碼狀態;
--stadin:借住於管道將輸入數據流看成標準輸入信息送給passwd命令;
echo 「PASSWORD」|passwd --stdin USERNAME
示例:# passwd -d sam
意爲:此命令將用戶sam的密碼刪除,這樣用戶sam下一次登陸時,系統就再也不詢問密碼
3、用戶組的管理
①添加用戶組groupadd
選項:
-g gid:在建立組帳戶的時候,指定組帳戶的GID;若是不使用該選項指定,系統會選擇在組解析文件中出如今的不大於60000最大的GID加1;
-r:建立系統組,意思就是建立一個GID在1~999(1~499)之間的組;
示例:# groupadd -g 1001 group2
意爲:此命令向系統中增長了一個新組group2,同時指定新組的組標識號是1001。
②刪除用戶組groupdel
# groupdel group1
此命令從系統中刪除組group1。
③修改用戶組的屬性gorupmod
選項:
-g gid:修改組帳戶的ID;
-n :修改組名;
示例:# groupmod mydisk -g 808
意爲:將組mydisk的標識號修改成808
4、組的認證管理
①gpasswd命令
選項:
-a, --add user:向名爲 group 的組中添加用戶 user。
-d, --delete user:從名爲 group 的組中移除用戶 user。
-r, 刪除密碼
-R,限制用戶登入組,只有組中的成員才能夠用newgrp加入該組
5、其餘命令
切換用戶身份su
su - USERNAME
登陸式切換,徹底切換;在切換用戶的時候,從新讀取目標用戶的配置文件而且初始化工做環境;至關於su -1 USERNAME
-c COMMAND:
並不會切換用戶身份,而是以目標用戶的身份執行某命令;
使用su命令的時候,從root切換到其餘普通用戶,無需密碼;但普通用戶進行切換時,必須給出目標用戶的密碼;
進行用戶切換以後,不要連續切換,而是用exit命令返回以前的用戶;
示例:# su -root -c "命令內容"
意爲:用root的身份執行命令
================================================================================
* 、 和用戶和用戶組相關的信息都存放在一些系統文件中,這些文件包括/etc/passwd,/etc/shadow,/etc/group
Ⅰ. 用戶組的全部信息都存放在/etc/group文件中。此文件的格式也 相似於/etc/passwd文件,由冒號隔開若干個字段,這些字段有:
組名:口令:組標識號:組內用戶列表
(1)「組名」是用戶組的名稱,由字母或數字構成。和/etc/passwd中的登陸名相同,組名不該重複。
(2)「口令」字段存放的是用戶組加密後的口令字。通常Linux系統的用戶組都沒有口令,即這個字段通常爲空,或是*。
(3)「組標識號」和用戶標識號相似,也是個整數,被系統內部用來標識組。
(4)「組內用戶列表」是屬於這個組的全部用戶的列表,不一樣用戶之間用逗號「,」分隔。這個用戶組多是用戶的主組,也多是附加組。
/etc/group文件的一個例子以下:
# cat /etc/group
root::0:root
bin::2:root,bin
sys::3:root,uucp
adm::4:root,adm
daemon::5:root,daemon
lp::7:root,lp
users::20:root,sam
Ⅱ./etc/shadow中的記錄行和/etc/passwd中的一一對應,他由pwconv命令根據/etc/passwd中的數據自動產生。他的文件格式和/etc/passwd相似,由若干個字段組成,字段之間用「:」隔開。這些字段是:
登陸名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌
(1)「登陸名」是和/etc/passwd文件中的登陸名相一致的用戶帳號
(2)「口令」字段存放的是加密後的用戶口令字,長度爲13個字符。若是爲空,則對應用戶沒有口令,登陸時沒必要口令;若是含有不屬於集合{ ./0-9A-Za-z }中的字符,則對應的用戶不能登陸。
(3)「最後一次修改時間」表示的是從某個時刻起,到用戶最後一次修改口令時的天數。時間起點對不一樣的系統可能不相同。例如在SCO Linux中,這個時間起點是1970年1月1日。
(4)「最小時間間隔」指的是兩次修改口令之間所需的最小天數。
(5)「最大時間間隔」指的是口令保持有效的最大天數。
(6)「警告時間」字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。
(7)「不活動時間」表示的是用戶沒有登陸活動但帳號仍能保持有效的最大天數。
(8)「失效時間」字段給出的是個絕對的天數,若是使用了這個字段,那麼就給出相應帳號的生存期。期滿後,該帳號就再也不是個合法的帳號,也就不能再用來登陸了。
下面是/etc/shadow的一個例子:
# cat /etc/shadow
rootnakfw28zf38w:8764:0:168:7:::
daemon:*::0:0::::
bin:*::0:0::::
sys:*::0:0::::
adm:*::0:0::::
uucp:*::0:0::::
nuucp:*::0:0::::
auth:*::0:0::::
cron:*::0:0::::
listen:*::0:0::::
lp:*::0:0::::
sam:EkdiSECLWPdSa:9740:0:0::::
Ⅲ./etc/passwd文件是用戶管理工做涉及的最重要的一個文件。Linux系統中的每一個用戶都在/etc/passwd文件中有一個對應的記錄行,他記錄了這個用戶的一些基本屬性。這個文件對全部用戶都是可讀的。他的內容相似下面的例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18rinter administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/usr/sam:/bin/sh
從上面的例子咱們能看到,/etc/passwd中一行記錄對應着一個用戶,每行記錄又被冒號分隔爲7個字段,其格式和具體含義以下:
代碼:
用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登陸Shell
(1)「用戶名」是表明用戶帳號的字符串。一般長度不超過8個字符,而且由大小寫字母和/或數字組成。登陸名中不能有冒號,由於冒號在這裏是分隔符。爲了兼容起見,登陸名中最佳不要包含點字符「.」,而且不使用連字符「-」和加號「+」打頭。
(2) 「口令」,一些系統中存放着加密後的用戶口令,雖然這個字段存放的只是用戶口令的加密串,不是明文,不過因爲/etc/passwd文件對全部用戶均可讀,因此這還是個安全隱患。所以,目前許多Linux系統都使用了shadow技術,把真正的加密後的用戶口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一個特別的字符,例如「x」或「*」。
(3)「用戶標識號」是個整數,系統內部用他來標識用戶。通常狀況下他和用戶名是一一對應的。若是幾個用戶名對應的用戶標 識號是相同的,系統內部將把他們視爲同一個用戶,不過他們能有不一樣的口令、不一樣的主目錄及不一樣的登陸Shell等。一般用戶標識號的取值範圍是 0~65535。0是終極用戶root的標識號,1~99由系統保留,做爲管理帳號,普通用戶的標識號從100開始。在Linux系統中,這個界限是 500。
(4)「組標識號」字段記錄的是用戶所屬的用戶組。他對應着/etc/group文件中的一條記錄。
(5) 「註釋性描述」字段記錄着用戶的一些我的狀況,例如用戶的真實姓名、電話、地址等,這個字段並無什麼實際的用途。在不一樣的Linux系統中,這個字段的 格式並無統一。在許多Linux系統中,這個字段存放的是一段任意的註釋性描述文字,用作finger命令的輸出。
(6)「主目錄」,也就是用戶的起始工做目錄,他是用戶在登陸到系統以後所處的目錄。在大多數系統中,各用戶的主目錄都被組織在同一個特定的目錄下,而用 戶主目錄的名稱就是該用戶的登陸名。各用戶對本身的主目錄有讀、寫、執行(搜索)權限,其餘用戶對此目錄的訪問權限則根據具體狀況設置。(7)用戶登陸後,要啓動一個進程,負責將用戶的操做傳給內核,這個進程是用戶登陸到系統後運行的命令解釋器或某個特定的程式,即Shell。Shell是用戶和Linux系統之間的接口。