====賬號管理配置文件====
vim /etc/passwd,顯示系統內所有賬號內容,每一行代表一個賬號,比如:
yidao:x:1000:1000:fedora17:/home/yidao:/bin/bash
解釋下這7個字段的含義:
1:賬號名稱 | 2:密碼 | 3:UID | 4:GID | 5:用戶信息說明 | 6:主文件夾 | 7:shell
vim /etc/shadow,顯示密碼信息,每一行代表一個賬號密碼信息,比如:
yidao:$1$Bylot.Y3$kMjNj1.KyW9lS3TUuAIPd/:15614:0:99999:7:::
解釋下這9個字段含義(以:隔開)
1:賬號名稱 | 2:密碼 | 3:最近更改密碼日期 , 與1970年1月1日比較的天數 | 4:密碼不可被更改的天數(與第三個字段比較) | 5:密碼需重新更新的天數(與第三個字段比較) | 6:密碼需重新更新前的警告天數(與第五個字段比較) | 7:密碼過期後的賬號寬限天數(密碼失效日)(與第五個字段比較) | 8:賬號失效日期,也是與1970年1月1日比較的天數 | 9:保留
/etc/group 文件:
yidao:x:1000:
用戶組名稱:用戶組密碼(已經移到/etc/gshadow中去,一般為x):GID:此用戶支持的賬號名稱(只寫改組不是其初始用戶組的賬號)
groups命令可以顯示該用戶的屬於所有的用戶組,第一個為有效用戶組,新建文件的時候有用
newgrp命令切換有效用戶組,新開子shell,用exit返回。
/etc/gshadow 文件:
root:::
用戶組名:密碼列(開頭為!代表無合法密碼,所有無用戶組管理員):用戶組管理員賬號:用戶組下的賬號
====新增用戶useradd====
# useradd [-u UID] [-g GID] [-G 次要用戶組] [-mM] [-c 說明] [-d 主文件夾] [-s shell] [-r] 用戶賬號
-M:強制不創建用戶主文件夾(系統賬號默認值)
-m:強制創建用戶主文件夾(一般賬號默認值)
-r:創建一個系統賬號
使用useradd創建賬號至少會參考:
/etc/default/useradd
/etc/login.defs
/etc/skel/*這些文件。
詳細的密碼顯示與修改命令chage:
# chage [-ldEImMW] 帳號名
-l:列出詳細密碼信息
-d:後面接日期,修改shadow第三個字段(最新修改日期),格式YYYY-MM-DD
-E:後面接日期,修改shadow第八字段(賬號失效日),格式YYYY-MM-DD
-I:後面接天數,修改shadow第七字段(密碼失效日期)
-m:後面接天數,修改shadow第四字段(密碼最短保留天數)
-M:後面接天數,修改shadow第五字段(密碼最長保留天數)
-W:後面接天數,修改shadow第六字段(密碼過期前幾天開始警告)
====賬號相關數據進行微調usermod====
# usermod [-cdegGlsuLU] username
-c:後面接賬號說明,即/etc/passwd第五列說明
-d:賬號主文件夾,/etc/passwd第六列
-e:後面接日期,YYYY-MM-DD格式,/etc/shadow第八字段(賬號失效日期)
-f:後面接天數,shadow第七字段(密碼失效日期)
-g:後接初始用戶組,/etc/passwd第四字段,即GID字段
-G:後接次要用戶組,修改這個用戶能支持的用戶組,修改的是/etc/group(賦值的意思,你懂的)
-a:與-G合用增加次要用戶組的支持而非設置(append的意思,你懂的)
-l:後接賬號名稱,即修改賬號名稱,/etc/passwd第一列
-s:後接shell實際文件,例如/bin/bash、/bin/csh等
-u:後接UID,/etc/passwd第三列
-L:暫時將用戶的密碼凍結,讓他無法登陸,其實僅僅改了/etc/shadow的密碼列
-U:將/etc/shadow密碼列的!去掉,解鎖密碼
幾個小命令:
# finger [-s] username:類似指紋功能,將用戶相關屬性列出來
# chfn [-foph] username:修改finger屬性,也就是個人信息
# chsh [-ls] :修改shell
# id username:查閱相關的ID信息
====用戶組管理命令====
# groupadd [-g gid] [-r] 用戶組
-g:後接GID
-r:新建系統用戶組
# groupmod [-g gid] [-n group_name] 用戶組名
-g:修改GID
-n:修改組名
這東東一般沒啥用,最好別用。
# groupdel 用戶組名
# gpasswd groupname:給個組密碼
# gpasswd [-A user1, ...] [-M user3, ...] groupname
-A:將groupname主控器交由後面的用戶管理(該用戶組的管理員)
-M:將某些賬號加入到這個組中
# gpasswd [-rR] groupname
-r:將groupname的密碼刪掉
-R:讓groupname的密碼欄失效
下面是組管理員命令:
# gpasswd [-ad] user groupname
-a:add
-d:delete
====主機的具體權限規劃ACL(Access Control List)====
先查看是否支持acl
# sudo dumpe2fs -h /dev/sda5 | grep acl
設置acl權限:
# setfacl [-bkRd] [{-m|-x} acl參數] 目標文件名
參數:
-m:設置後續的acl參數給文件使用,不可與-x合用
-x:刪除後續的acl參數,不可與-m合用
-b:刪除所有的acl參數
-k:刪除默認的acl參數,關於所謂的默認參數等等
-R:遞歸設置acl,亦包括子目錄也
-d:設置默認的acl參數!只對目錄有效,在該目錄下新建數據會引用此默認值
設置用戶規則:u:[用戶賬號列表]:rwx
# touch text.txt
# setfacl -m u:yidao:rx text.txt
# setfacl -m u::rx text.txt ==> 代表對該文件的所有者(user)設置
# getfacl text.txt ==>查看acl設置
裡面有個mask:表示用戶或者用戶組的權限必須要存在於mask的權限范圍內才會生效,即有效權限 effective permission的意思
設置用戶組規則:g:[用戶組列表]:rx text.txt
# setfacl -m g:yidao:rx text.txt
設置mask的規則: m:[rwx] text.txt
# setfacl -m m:rx text.txt
針對目錄的ACL的權限設置能夠被子目錄所繼承的話,設置規范:
d:[u|g]:[用戶|用戶組]列表:[rwx]
切換到root身份的時候使用:
====用戶身份切換====
# su -
# su – -c ‘head -n 3 /etc/shadow’ ==> 執行完root命令後自動返回當前用戶
# sudo [-b] [-u 新用戶賬號] command
-b:後續命令讓系統自動執行,不與目前的shell環境產生影響
-u:後面接用戶名,沒有就代表root
# sudo -u sshd touch /tmp/mysshd
# sudo -u testuser sh -c “mkdir ~testuser/www; cd ~testuser/www; echo ‘fuck you’ > index.html”
visudo 編輯/etc/sudoers文件:
yidao ALL=(ALL) ALL
用戶賬號 登錄者的來源主機號=(可切換的身份) 可執行的命令
%yidao ALL=(ALL) ALL ==>注意%代表對用戶組設置
%yidao ALL=(ALL) ALL NOPASSWD: ALL ==>免密碼功能
通過別名設置visudo:
# visudo
User_Alias ADMUSERS = myuser1, myuser2
Host_Alias www.springzoo.com, www.google.com.hk
Cmnd_Alias ADMCMD = !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
ADMUSERS ALL=(Host_Alias) ADMCMD
sudo搭配su輸入自己的密碼變成root用戶,然後以後就不用輸入sudo了
# visudo
User_Alias ADMINS = yidao, test…
ADMINS ALL=(root) /bin/su -
====PAM模塊(Pluggable Authentication Modules)====
可以編輯/etc/nologin.txt讓shell為/sbin/nologin的用戶登錄時候顯示消息給他看
PAM會調用在目錄/etc/pam.d/command文件對每個command進行認證,文件名與程序名一樣
====查詢用戶:====
w/who/last/lastlog 不解釋
用戶對談:write,mesg,wall
先用w查看當前用戶
# write 用戶賬號 [用戶所在終端接口]
# write yidao [pts/2]
最後按CTRL + D結束輸入
# mesg [-n|y] ==> 查看自己的消息,-n禁止別人的彈出消息
# wall ”Hello everybody…” ==> 廣播
====用戶郵件====
# mail username@localhost -s “郵件標題”
正文結束時,最後一行輸入一個.即可
==============================END==============================