用戶管理相關命令
工作中經常用到對系統上用戶及文件權限的管理,本文詳細介紹下用戶及權限管理相關的命令
相關知識:
對計算機而言,每個使用者都是一個用戶,每個用戶都有一個用戶ID和密碼;用戶登錄系統分爲認證(Authentication)、授權(Authorization)、審計(Audition)三步,任何一步出錯用戶都會登錄不上系統;
在linux系統中用戶分爲管理用戶和普通用戶,普通又分爲系統用戶和登錄用戶;其中,每個用戶都有一個ID號用來惟一標識此用戶,此ID號也叫做UID;在linux系統中UID是由16bits的二進制數字組成的,範圍爲(0-65535),其中:
管理員的UID號爲0
普通用戶爲1-65535
系統用戶爲1-499(CentOS5/6),1-999(CentOS7)
登錄用戶爲500-60000(CentOS5/6),1000-60000(CentOS7)
當用戶登錄系統時需要輸入用戶名,用戶輸入用戶名之後需要進行名稱解析,將用戶的用戶名轉換爲系統的UID來惟一標識此用戶,在此,系統根據名稱解析庫/etc/passwd進來行解析,其中,/etc/passwd中的內容由冒號分隔爲七段:
account:password:UID:GID:GECOS:directory:shell
account:表示用戶名
password:表示加密的密碼,也可以是佔位符;用戶的真實密碼存放於/etc/shadow中
UID:表示用戶ID
GID:表示用戶所屬的主組的ID號
GECOS:表示註釋信息
directory:表示用戶的家目錄路徑
shell:表示用戶的默認shell,登錄時默認的shell程序
剛剛提到用戶的真實密碼存放於/etc/shadow文件中,其中,/etc/shadow文件的內容由冒號分隔爲九段:
sp_namp:sp_pwdp:sp_lstchg:sp_min:sp_max:sp_warn:sp_inact:sp_expire:sp_flag
sp_name:賬號名稱,由於密碼也需要與賬號對應。因此,這個文件的第一列就是賬號,必須要與/etc/passwd相同才行;
sp_pwdp:表示用戶加密後的密碼
sp_lstchg:最近一次修改密碼的時間
sp_min:表示密碼的最短使用期限(密碼不可被改動的天數)
sp_max:表示密碼的最長使用期限(密碼需要重新更動的天數)
sp_warn:表示密碼最長使用期限到期後的警告時間段,在此時間段內用戶還可以正常使用密碼
sp_inact:非活動時間(密碼過期後的賬號寬限時間),不過,如果密碼過期了,那當你登錄系統時,系統會強制要求你必須要重新設置密碼才能登錄繼續使用。
sp_expire:賬號失效日期,這個日期跟第三個字段一樣,都是使用1970年以來的總日數設置。這個字段表示:這個賬號在此字段規定的日期之後,將無法再使用。
sp_inact:保留字段
在linux系統中組分爲管理員組和普通用戶組,普通用戶組又分爲系統組和登錄組,同用戶ID一樣,組也有ID叫做GID,GID和UID一樣也是由16bits位的二進制數組成,範圍爲(0-65535),其中:
管理員組的ID號爲0
普通用戶組的ID號爲1-65535
系統登錄組的ID號爲1-499(CentOS5/6),1-999(CentOS7)
登錄用戶組的ID號爲500-60000(CentOS5/6),1000-60000(CentOS7)
存儲組信息的名稱庫爲/etc/group,此文件被冒號分隔爲四段:
roup_name:passwd:GID:user_list
group_name:表示組名
passwd:組密碼佔位符,真實的密碼存放於/etc/gshadow中,稍後介紹。
GID:組ID號
user_list:用戶列表,表示的是以此組爲附加組的用戶列表。
組密碼存放於/etc/gshadow中,此文件由冒號分隔爲四段
group name:encrypted password:administrators:members
group name:用戶組名,和/etc/group裏面的組名一樣
encrypted password:密碼列
administrators:用戶組管理員的賬號
members:該用戶組的所屬賬號
用戶管理的命令詳解:
useradd命令:
功能:創建用戶
用法:useradd[options] LOGIN
參數:
-u:指定用戶UID
-g:指定基本組ID,此組得事先存在
-G:指定用戶所屬的附加組,多個組之間用逗號分隔;
-c:指明註釋信息
-d:指定用戶家目錄,通過複製/etc/skel目錄並重命名實現,指定的家目錄路徑如果事先存在,則不會爲用戶複製環境配置文件
-s:指定用戶的默認shell,可用的所有shell列表存儲在/etc/shells文件中;
-r:表示創建的是系統用戶
-m:創建用戶時爲用戶創建家目錄,默認創建用戶時已經創建家目錄
-M:表示創建用戶時不爲用戶創建家目錄
-D:顯示創建用戶時的默認配置,用戶的默認配置文件爲/etc/login.defs;
-e:後面接一個日期,格式爲"YYYY-MM-DD",此選項可寫入shadow第八個字段,即賬號失效日;
-f:後面接shadow的第七個字段選項,指定密碼是否會失效;
usermod命令:
功能:修改用戶屬性
用法:usermod[options] LOGIN
參數:
-u:修改用戶的UID
-g:修改用戶所屬的基本組
-G:修改用戶所屬的附加組;原來的附加組會被覆蓋,如果不想覆蓋需要添加-a選項
-c:修改註釋信息
-d:修改用戶的家目錄;用戶原有的文件不會被轉移至新位置,如果想轉移原有的文件,需要添加-m選項;
-l:修改用戶名
-s:修改用戶的默認shell
-L:鎖定用戶賬號,即在用戶原來的密碼字符串之前添加一個“!”,解鎖即去掉歎號;
-U:解鎖用戶鎖定
userdel命令:
功能:刪除用戶
用法:userdel[options] LOGIN
參數:
-r:刪除用戶時一併刪除用戶家目錄,默認不刪除
passwd命令:
功能:(1)修改用戶自己的密碼(2)修改制定用戶的密碼,僅root有此權限
用法:passwd/passwdUSERNAME
參數:
-l,-u:鎖定和解鎖用戶
-d:清除用戶密碼
-e:date過期期限,日期
-i:days非活動期限
-n:密碼的最短使用期限
-x:密碼的最長使用期限
-w:警告期限
--stdin:
echo"PASSWORD" |passwd --stdin 用戶名 修改用戶名密碼
groupadd命令
功能:添加用戶組
用法:groupadd[options] groupname
參數:
-g GID:指定GID,默認是上一個組的GID+1;
-r:創建系統組,id號爲1-499(CentOS6)或1-999(CentOS7)
groupmod命令:
功能:修改組信息
用法:groupmod[options] groupname
參數:
-g GID:修改GID
-n new_name:修改組名
groupdel命令:
功能:刪除組
用法:groupdel組名
gpasswd命令:
功能:給組設定密碼
用法:gpasswd[option] group
參數:
-a USERNAME:向組中添加用戶
-d USERNAME:從組中移除用戶
newgrp命令:
功能:臨時切換用戶的基本組爲其它組,這時如果切換的組不是用戶的附加組需要輸入密碼;
用法:newgrp[-] [group]
參數:
-:會模擬用戶重新登錄以實現重新初始化其工作環境;
chage命令:
功能:修改用戶的密碼過期信息
用法:chage[options] [LOGIN]
參數:
-d:修改最近一次更改密碼的日期
-E:修改賬號失效日
-W:修改密碼過期警告時間
-m:修改密碼最短保留天數
-M:修改密碼多久需要進行更改的時間
-l:列出該賬號的詳細密碼參數
-I:修改密碼失效日期
id命令:
功能:顯示用戶的真實和有效ID
用法:id[OPTION]... [USERNAME]
參數:
-u:僅顯示有效的UID;
-g:僅顯示用戶的基本組ID;
-G:僅顯示用戶所屬的所有組的ID
-n:顯示名字而非ID
-r:顯示真實ID
su命令:switchuser
功能:
登錄式切換:會通過重新讀取目標用戶的配置文件來重新初始化
非登錄式切換:不會讀取目標用戶的配置文件來進行初始化
注意:管理員可無密碼切換至其它任何用戶;非管理員切換時必須給出目標用戶的密碼,否則,無法切換;
參數:
-c ‘COMMAND’僅以指定用戶的身份運行此處指定的命令;
su - woniu -c 'whoami' 表示以woniu用戶執行whoami命令,執行完成後還是當前用戶
chown命令:
功能:更改文件的屬主或屬組
用法:chown[OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
參數:
-R:遞歸修改
權限管理知識及命令
在命令ls -l的結果中,前一列爲文件的類型和權限說明,如下所示:
[root@localhost/]# ls -l
total 106
dr-xr-xr-x. 2 root root 4096 Dec 11 09:43 bin
其中的d表示文件爲目錄,接下來的字符中,以3個爲一組,且均爲“rwx”的3個參數的組合。其中r代表可讀、w代表可寫、x代表可執行。要注意的是,這3個權限的位置不會改變,如果沒有權限就會減號-代替。
第一組爲文件所有者的權限,用u表示
第二組爲文件用戶組的權限,用g表示
第三組爲其它非本用戶組的權限,用o表示
進程對文件的訪問權限應用模型:
首先檢查進程的屬主於文件的屬主是否相同;如果相同,則應用屬主權限;
否則,則檢查進程的屬主是否屬於文件的屬組;如果是,則應用屬組權限;
否則,就只能應用other的權限;
對文件而言:
r:可獲取文件的數據
w:可修改文件的數據
x:可將此文件發起運行爲進程
對目錄而言:
r:可使用ls命令獲取其下的所有文件列表
w:可修改此目錄下的文件列表;即創建或刪除文件
x:可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;
權限管理命令:
chmod命令:
功能:修改文件或目錄的權限
用法:chmod[OPTION]... MODE[,MODE]... FILE...
MODE表示法:
賦權表示法: 直接操作一類用戶的所有權限位
u=
g=
o=
a=
授權表示法:直接操作一類用戶的一個權限位
u+,u-
g+,g-
o+,o-
a+,a-
chmod [OPTION]...OCTAL-MODE FILE...
chmod 755/etc/fstab
chmod[OPTION]... --reference=RFILE FILE...
chmod--reference=/var/log/message /etc/fstab 將/etc/fatab的權限修改爲和/var/log/message的權限一樣。
參數:
-R:表示遞歸修改
umask:文件的權限反向掩碼,遮罩碼,文件默認權限
對文件而言,默認權限是666,因爲文件默認沒有執行權限:而目錄默認權限是777,而umask是從權限中“拿走”相應的位
所以默認創建文件時的權限爲:666-umask;創建目錄時的權限爲777-umask
對文件而言,如果減得的結果中有執行權限,則需要將其加1;而目錄不變。
例如,如果umask值爲023,則創建出來的文件的權限爲
666-023+1=644
umask命令:
umask:查看當前umask
umask MASK:設置umask
注意:此類設定僅對當前shell進程有效;