一,Linux 用戶和用戶組基礎概念
Linux系統是一個多用戶多任務的分時操作系統,任何一個要使用系統資源的用戶,都必須首先向系統管理員申請一個賬號,然後以這個賬號的身份進入系統。
(1)用戶、用戶組的類別:
在CentOS 6下,系統用戶:1-499,普通用戶:500+
UID: 16bits二進制數字:0-65535;
Linux內核(2.6x版)已經可以支持到4294967295(2^32-1)個標識符
注意:CentOS 7(RHEL 7)開始用戶系統用戶的數量增大
(2)用戶配置文件
1. 用戶信息庫,名稱解析庫:/etc/passwd
2. 密碼存儲位置:/etc/shadow
3.組的認證信息庫:/etc/gshadow
4.用戶組的所有信息存儲位置:/etc/group
二,用戶和用戶組的管理
基本的用戶命令爲:useradd(創建用戶)、usermod(修改用戶)、userdel(刪除用戶)
基本的組管理命令爲:groupadd(創建組)、groupmod(修改組)、groupdel(刪除組)
密碼配置:passwd(設置用戶密碼)、gpasswd(設置組密碼)
①useradd :創建新的用戶
useradd [選項] 登錄名 -c, --comment COMMENT:註釋信息,一般爲Full Name; -d, --home /PATH/TO/HOME_DIR:家目錄路徑;目標路徑不能事先存在,否則會有警告,不會得利skel相關的文件給用戶; -g, --gid GROUP:用戶的基本組組名或GID; -G, --groups GROUP1[,GROUP2,...[,GROUPN]]]:用戶所屬的附加組列表,彼此間用逗號隔開,中間沒有空格; -m, --create-home:強制創建家目錄; -M:不創建用戶主目錄,即使系統在 /etc/login.defs 中的設置(CREATE_HOME)爲yes; -r, --system:創建一個系統賬戶 -s, --shell SHELL:用戶的登錄shell名,默認爲留空,讓系統根據 /etc/default/useradd 中的SHELL變量選擇默認的登錄shell; -u, --uid UID:用戶ID的數字值。此值必須爲唯一的,除非使用了-o選項。此值必須非負,默認使用大於等於UID_MIN,且大於任何其他用戶ID最小值。
例1:創建一個用戶sam,爲sam指定主目錄爲/usr/sam;
# useradd –d /usr/sam -m sam
例2:新建用戶gem,指定該用戶的登錄Shell是 /bin/sh
,指定它屬於group用戶組,同時又屬於adm和root用戶組,其中group用戶組是其主組。
# groupadd group # groupadd adm # useradd -s /bin/sh -g group –G adm,root gem 注意:創建登錄用戶時,爲其自定義的shell程序必須爲可登錄shell,且要位於/etc/shells文件中;
useradd -D:顯示創建用戶時的默認設置;
useradd -D 選項:設置某默認選項;
新建用戶不選擇選項時,useradd會按照默認選項創建用戶。
【PS:這些默認選項實際是記錄在/etc/default/useradd文件中,另外/etc/login.defs也會影響useradd、userdel等命令的默認動作。】
②usermod:修改賬號信息
【注意:usermod不允許改變正在線上的使用者帳號名稱。當usermod改變userID,必須確認這名user沒在電腦上執行任何程序】
-L, --lock:鎖定用戶的密碼。這會在用戶加密的密碼之前放置一個“!” -U, --unlock:解鎖用戶的密碼。這將移除加密的密碼之前的“!”
③userdel:刪除用戶賬號
userdel [選項] 登錄名 -r, --remove:用戶主目錄中的文件將隨用戶主目錄和用戶郵箱一起刪除
④groupadd:添加組
用法:groupadd [選項] group 常用選項: -g GID :指明GID,默認是上一個組的GID+1 -r,--system:創建系統組,默認爲1-999數字
⑤passwd:密碼管理命令
(1) passwd:修改自己的密碼; (2) passwd username:修改其它用戶的密碼,僅root有此權限; 密碼複雜度: (1) 不能少於8個字符; (2) 不能使用與過去的密碼太相似的密碼; (3) 應該使用四類字符中的至少三類; (4) 定期更換; 選項: -l:鎖定密碼 -u:解鎖解密 -d:清除密碼 --stdin:從標準輸入接收密碼; echo "PASSWORD" | passwd --stdin USERNAME
⑥su:切換用戶
(1) 不讀取目標用戶的配置文件(非登錄式切換,半切換); su USERNAME (2) 讀取目標用戶的配置文件(登錄式切換,完全切換); su -l USERNAME su - USERNAME -c command, --command=command: 僅以指定的用戶的身份運行此處指定的命令,而不執行真正的身份切換操作; 注意:root切換至任何其它用戶無須認證密碼;普通用戶切換至其它用戶,都需要密碼;
⑦gpasswd:爲組添加密碼
gpasswd [選項] group -a USERNAME:把用戶添加至組中; -d USERNAME:從此組中移除此用戶;
⑧newgrp命令:登錄到一個新組
⑨chage命令:修改用戶賬號的各種期限;
. 修改賬戶或口令的期限設定
【口令最短使用期限7天,最長使用期限30天,警告期3天,非活動期3天。 [root@localhost ~]# chage -m7 -M30 -W3 -I3 mageedu 修改口令最近一次修改時間,需轉換爲設定時間到1970年1月1日的天數 [root@localhost ~]# chage -d16860 mageedu 設置賬戶過期時間,需轉換爲設定時間到1970年1月1日的天數。 [root@localhost ~]# chage -E16920 mageedu】
chsh:更換登入系統時使用的shell,
chfn:提供使用者更改個人資訊,
finger:使用者查詢一些其他使用者的資料,
pwck : 檢查密碼文件的完整性,
grpck:檢查組文件的完整性
三,與用戶賬號有關的系統文件
1、/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:
/etc/passwd中一行記錄對應着一個用戶,每行記錄又被冒號(:)分隔爲7個字段:
用戶名:口令:用戶標識號:組標識號:註釋性描述:主目錄:登錄Shell 系統中有一類用戶稱爲僞用戶(psuedo users)。 這些用戶在/etc/passwd文件中也佔有一條記錄,但是不能登錄, 因爲它們的登錄Shell爲空。它們的存在主要是方便系統管理,滿足相應的系統進程對文件屬主的要求。 僞 用 戶 含 義 bin 擁有可執行的用戶命令文件 sys 擁有系統文件 adm 擁有帳戶文件 uucp UUCP使用 lp lp或lpd子系統使用 nobody NFS使用
2./etc/shadow文件用於單獨存放加密後的口令字,只有超級用戶才擁有該文件讀權限
【注意:/etc/shadow中的記錄行與/etc/passwd中的一一對應,它由pwconv命令根據/etc/passwd中的數據自動產生】
它的文件格式與/etc/passwd類似,由若干個字段組成,字段之間用":"隔開。這些字段是:
登錄名:加密口令:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間:不活動時間:失效時間:標誌 "登錄名":/etc/passwd文件中的登錄名相一致的用戶賬號 "口令":字段存放的是加密後的用戶口令字,長度爲13個字符。如果爲空,則對應用戶沒有口令,登錄時不需要口令;如果含有不屬於集合 { ./0-9A-Za-z }中的字符,則對應的用戶不能登錄。 "最後一次修改時間":表示的是從某個時刻起,到用戶最後一次修改口令時的天數。時間起點對不同的系統可能不一樣。例如在SCO Linux 中,這個時間起點是1970年1月1日。 "最小時間間隔":指的是兩次修改口令之間所需的最小天數。 "最大時間間隔":指的是口令保持有效的最大天數。 "警告時間":字段表示的是從系統開始警告用戶到用戶密碼正式失效之間的天數。 "不活動時間":表示的是用戶沒有登錄活動但賬號仍能保持有效的最大天數。 "失效時間":字段給出的是一個絕對的天數,如果使用了這個字段,那麼就給出相應賬號的生存期。期滿後,該賬號就不再是一個合法的賬號,也就不能再用來登錄了。
# cat /etc/shadow root:Dnakfw28zf38w:8764:0:168:7::: daemon:*::0:0::::
3、用戶組的所有信息都存放在/etc/group文件中。
當一個用戶同時是多個組中的成員時,在/etc/passwd文件中記錄的是用戶所屬的主組,也就是登錄時所屬的默認組,而其他組稱爲附加組。
用戶要訪問屬於附加組的文件時,必須首先使用newgrp命令使自己成爲所要訪問的組中的成員。
用戶組的所有信息都存放在/etc/group文件中。此文件的格式也類似於/etc/passwd文件,由冒號(:)隔開若干個字段,這些字段有:
組名:口令:組標識號:組內用戶列表 "組名":是用戶組的名稱,由字母或數字構成。與/etc/passwd中的登錄名一樣,組名不應重複。 "口令":字段存放的是用戶組加密後的口令字。一般Linux 系統的用戶組都沒有口令,即這個字段一般爲空,或者是*。 "組標識號":與用戶標識號類似,也是一個整數,被系統內部用來標識組。 "組內用戶列表":是屬於這個組的所有用戶的列表/b],不同用戶之間用逗號(,)分隔。這個用戶組可能是用戶的主組,也可能是附加組
/etc/group文件的一個例子如下: root::0:root bin::2:root,bin
四,用戶和用戶組權限管理
例:[root@localhost~]# ls -l total 120 # 顯示文件名與相關屬性命令 drwxr-xr-x 2 root root 4096 Dec 10 07:57 07:57:04
(1) 類型和權限(permission):十位分四段表示
【顯示格式】:
總用量:
類型和權限 連接數 所有者 用戶組 文件大小 修改日期 文件名
(2)權限組合機制:(8bites 二進制)
第二道十個字符:每三個爲一組,均爲'rwx'三個參數組合
rwxrwxrwx每個位置固定不定,若無則爲空,用'-'符號表示
r:readable, 讀;w:writable, 寫;x:excutable,執行
r=4 w-2 x=1 -=0
(3)文件權限系統主要分爲3類用戶:
屬主:owner,u 屬組:group,g 其他:other,o
其與之對應的權限: rwx rwx rwx
(4)文件和目錄的權限管理:
①對於文件的含義
r:可獲取文件的數據;可以使用類似於cat命令查看文件內容
w: 可修改文件的數據;可以編或者刪除此文件
x:可將此文件運行爲進程;可以在命令提示符下當做命令提交給內核運行
②對於目錄的含義
r:可使用ls命令獲取其下的所有文件列表;
w: 可修改此目錄下的文件列表;即創建或刪除文件;
x: 可cd至此目錄中,且可使用ls -l來獲取所有文件的詳細屬性信息;
五,權限管理命令
1.chmod:更改文件目錄權限
用戶類型:u:屬主 g:屬組 o:其它 a: 所有
(1)chmod [OPTION]... MODE[,MODE]... FILE… 1)賦權表示法:直接操作一類用戶的所有權限位rwx. 用等號表示:[u|g|o|a]=rwx中的一位或者多位 2)授權表示法:直接操作一類用戶的一個權限位r,w,x 用加減號表示:[u|g|o|a][+|-]rwx
(2)chmod [OPTION]... OCTAL-MODE FILE… 直接使用三位數字的方式給文件目錄增加權限,分別表示所有者、所屬組、其他人的權限 數字的表示方法同上:8bites 二進制表示權限的組合機制 r=4 w-2 x=1 -=0三位相加
(3)chmod [OPTION]... --reference=RFILE FILE… 參照某個文件的權限來進行授權操作 -R, --recursive:遞歸修改 【注意:普通用戶僅能修改屬主爲自己的那些文件的權限;root可以更改所有用戶】
2.chown:更改文件目錄的所有者,也可以更改所屬組
僅更改用戶的所有者 所有者:所屬組,可以同時更改 【PS:所有者.所屬組,也可以上述操作,但小心文件名中有.系統識別錯誤】
3..chgrp:更改文件目錄的所屬組
(1)chgrp [OPTION]... GROUPFILE… 更改所屬組 (2)chgrp [OPTION]... --reference=RFILE FILE…
【注意:僅管理員有權限
改屬主:chown
改屬組:chgrp】
4.install:複製和設置屬性權限
(1)單源複製: install[OPTION]... [-T] SOURCE DEST (2)多源複製: install [OPTION]... SOURCE... DIRECTORY install [OPTION]... -t DIRECTORY SOURCE… (3)創建目錄: install [OPTION]... -d DIRECTORY... (4)OPTIONS: -m, --mode=MODE:設定目標文件權限,默認爲755; -o, --owner=OWNER:設定目標文件屬主; -g, --group=GROUP:設定目標文件屬組;
5.umask:文件的權限反向掩碼,遮罩碼
(1)umask:查看當前umask 系統默認爲:0022表示特殊權限、所有者權限、所有組權限、其他人權限 更改默認設置位置:/etc/login.defs (2)對文件目錄的umask操作 ①文件:666-umask ,文件默認不能擁有執行權限 如果減得的結果中有執行權限,則需要將其加1 ②目錄:777-umask
6.mktemp:建立暫存文件
mktemp [OPTION]... [TEMPLATE] 模板文件名:filename.XXX 至少三個X; 使用方式:用變量保存生成的文件路徑; myfile=$(mktemp /tmp/myfile.XXXX) -d:創建臨時目錄而非文件; -p DIR, --tmpdir[=DIR]:設定臨時文件所在的目錄;默認爲當前目錄,或爲TMPDIR環境變量設定的路徑;