《用戶管理和權限設置》
RHEL系統中普通用戶和組的ID默認從500開始,0~499作為系統保留。
2.命令行管理用戶
- 1)使用useradd創建用戶
用法:useradd [options] user_name
-u UID:為新用戶指定一個uid(不使用系統默認按順序分配),使用-r強制簡歷系統用戶,-o允許新用戶不唯一的uid
-g Group:為新用戶指定一個組(指定組必須存在)
-G Goups:為新用戶指定一個附加組
-M 不創建用戶的家目錄
-m 為新用戶創建家目錄,使用-k選項將skeleton——dir內的檔案復制到家目錄下
-c 為新用戶進行說明註釋(/etc/passwd的說明欄)
-d 為新用戶指定家目錄,默認值為default_home內的login
-e 為新用戶指定帳號的終止日期,日期格式為MM/DD/YY
-f 用戶帳號過期幾日後永久失效,當值為0時帳號則立刻失效,為-1時關閉此功能,默認關閉
例子:
useradd -u 1000 -c "ftp user" -s /bin/nologin user1
- 2)使用passwd設置用戶密碼
用法:passwd [options] user_name
常用選項:
-l 鎖定指定密碼
-u 解鎖指定的被鎖定的帳號
-n 指定密碼最短時間
-x 指定密碼最長時間
-w 指定密碼過期前的警告天數
-i 指定密碼過期後,帳號失效前的天數
-s 報告指定用戶密碼的狀態
例子:
passwd user1
用cat命令查看:
cat /etc/passwd
查看用戶密碼信息新行:
cat /etc/shadow
- 3)用usermod命令修改用戶帳號信息:
用法:usermod [options] user_name
-L 鎖定帳號(在/etc/passwd中密碼部分前加一個!)
-U 用於解鎖
-l 改變用戶的登錄名
例子:
usermod -c "web user" user1
cat /etc/passwd |grep user1
查看用戶的密碼文件,在密碼前加“!”符號,用戶不能登錄
grep user1 /etc/passwd
- 4)使用userdel命令刪除用戶
用法:userdel [options] user_name
-f 強制刪除用戶,即使該用戶仍在登錄
-r 刪除用戶的同時刪除該用戶的家目錄和郵件
例子:
userdel user1
ls /home
沒有-r選項刪除用戶,而用戶的家目錄被保留,如果同名組沒有其他成員,則連同刪除,反之,保留。
-
5)使用groupadd命令新建組
用法:groupadd [options] group_name
-g 指定新建組的gid
-o 可以重復使用gid
-r 建立系統帳號
例子:創建一個新組
groupadd nona
修改nona密碼:(沒有密碼的組是不允許用戶申請加入的)
gpasswd nona
查看當前組群:
groups
用戶主動申請加組群nona
newgrp nona
用戶退出組群:exit
刪除組nona的密碼:gpasswd -r nona
在root用戶下,將用戶zhangsan加入到nona組中
gpasswd -a zhangsan nona
將lisi設置為組nona的管理員
gpasswd -A lisi nona
切換組:
newgrp nona(在zhangsan用戶下)
修改組名,將nona名改為xs:
groupmod -n nona xs
刪除組:
groupdel xs查看user1的uid,gid,組:
id user1
查看用戶的帳號密碼信息:
change -l user1
設置用戶user1帳號過期時間是2018-05-28:
change -E "2018-05-28" user1
檢查系統內用戶帳號信息的完整性:
pwck (輸出中系統帳號家目錄信息的缺失是正常的)
- 6)sudo命令獲得root權限
使用visudo命令編輯sudo配置文件
visudo /etc/sudoers
3.用戶初始化
-
1)用戶特定配置文件
當用戶被創建時,系統從/etc/skel/目錄下復制用戶的配置文件到用戶的目錄。這些配置文件用來定義用戶的工作環境,比如:PATH,別名,這些文件位於每個用戶的家目錄下,僅對當前用戶有效。
~/.bashrc 定義函數和別名
~/bash_profile 設置環境變量
~/.bash_logout 定義用戶退出時執行的命令
(可將別名定義在bashrc文件中)全局配置文件:(對所有用戶都生效)
/etc/bashrc 定義函數和別名
/etc/profile 設置環境變量
/etc/profile.d 目錄下的腳本被/etc/profile引用系統預設的值:
用戶屬性信息的默認值在文件/etc/login.defs中被定義
例子:查看/etc/login.defs,使用grep命令過濾文件以“#”開頭的註釋行
grep -v ‘^#‘ /etc/login.defs查看/etc/default/useradd文件中的配置項
cat /etc/default/useradd
使用useradd命令列出系統預設的添加用戶信息的默認值
useradd -D
可以通過useradd -D加上相應的選項更新這些預設值
-b 定義用戶家目錄的上一級目錄
-e 用戶帳號的過期日期
-f 用戶帳號過期幾日後失效
-g 新建用戶的起始群組或ID
-s 新建用戶登錄後使用的shell
4.Linux文件權限管理
註意:用戶權限高於組的權限,高於其他人的權限
權限 | 對文件影響 | 對目錄影響 |
---|---|---|
r(讀取) | 可以讀文件內容 | 可以列出目錄的內容 |
w(寫入) | 可以更改文件內容 | 可以創建或刪除目錄中任意文件 |
x (執行) | 可以作為執行文件 | 可以訪問目錄內容(還取決於目錄文件的權限) |
在命令行中列出目錄的屬性 :
ll -d /home/demo
查看文件目錄有多大:
du -sh /root
-
1)在命令行中管理權限
使用chmod命令更改文件的權限
用法:
chmod [options] [模式] file...
chmod [options] 八進制模式 file...
chmod [options] --referrence=參考文件 file...常用選項
-R:以遞歸方式更改所有的文件及子目錄
符號模式:chmod who what which file|girectory
簡單理解:chmod [-R] [ugoa] [+-=] [rwx] file|firectorywho:指u、a、g、o(代表擁有者,全部,組,其他)
what:值+、-、=(代表添加,刪除,精確設置)
which:r、w、x(代表讀取,寫入,可執行)
八進制模式:chmod [-R]###
file|diretory###
代表數字,#代表權限總和 r=4,w=2,x=1精確設置文件的權限:chmod u=rw,g=r file
統一設置目錄及目錄下所有文件的權限:chmod -R +w targetdir/
使用數字方式設置權限:chmod 755 file
- 2)chown命令更改文件用戶所有權
更改文件或者文件夾的用戶或組的所有權,使用chown或chgrp命令
用法:
chown [options] [所屬者]:[所屬組] file
chown [options] --reference=參考文件 file
例子:
改變文件的所屬者:
chown zhangsan file
改變文件的所屬組:
chgrp mail file
同時改變用戶和組的所有權,並使用-R選項遞歸目錄和目錄下的所有文件:
chown zhangsan:mail targetdir/
- 3) 特殊權限
查看passwd的權限
ll ‘which passwd‘
特殊權限對文件和目錄的影響
特權 | 對文件的影響 | 對目錄的影響 |
---|---|---|
u+s(setuid或suid) | 以擁有文件和目錄的用戶身份執行文件,而不是運行文件的用戶身份 | 無影響 |
g+s(setgid或sgid) | 以擁有文件的組身份執行文件 | 對目錄中最新創建的文件將其組所有者設置為與目錄的組所有者相同 |
o+t(sticky) | 無影響 | 對目錄具有寫入權限的用戶僅可以刪除其擁有的文件,而無法刪除其他用戶所擁有的文件 |
設置特殊權限有兩種方法:
- 符號法:setuid=u+s;setgid=g+s;sticky=o+t
-
數字法:setuid=4;setgid=2;sticky=1
例子:給目錄設置sgid權限
chmod u+s directory
chmod 2775 directory搜索所有異常的程序或腳本
find / -perm -4000
4.擴展屬性
lsattr testfile.txt 查看文件的擴展屬性
-
1)設置文件的擴展屬性:
chattr +i testfile.txt
lsattr testfile.txt
s:系統刪除這個文件時,用o填充文件區域
a:只允許追加數據,不允許覆蓋或截斷這個文件
i:表示不能被刪除,不能修改,不能重復命名,不能創建鏈接
S:表示同部數據
d:在文件備份時,dump程序忽略這個文件,通過man chattr獲得說明
c:以透明方式壓縮這個文件
u:當一個程序要刪除這個文件時,系統會保留其數據塊以使恢復
A:告訴系統不要修改對這個文件的最後訪問時間
- 2)訪問控制列表(ACL)
查看文件或目錄的acl權限
用法:getfacl [options] file
例子:查看文件的acl
getfacl testfile
對於添加ACL的文件,使用ll命令列出,權限位的最後帶有“+”號
ll testfile - 3)設置文件或目錄的ACL
用法:
setfacl [-bkndRLP] {-m|-M|-x|-X|...} file
常用選項:
-m:設置或修改文件的ACL權限
-x:刪除文件的一個ACL權限
-b:刪除文件所有的ACL權限
-k:刪除所有的默認ACL權限
--set:設置文件ACL,替代當前的ACL
--mask:重新計算有效的mask值
-R:遞歸子目錄
-d:設置默認的ACL權限,僅能針對目錄使用
--restore:從文件恢復備份的ACL
例子:查看和設置ACL
針對用戶zhangsan來設置rwx
setfacl -m u:zhangsan:rwx acltest.file
針對組nona來設置rw
setfacl -m g:nona:rw acltest.file
設置限制的權限為r
setfacl -m m:r acltest.file (mask為限制權限)
查看當前的ACL
getfacl acltest.file
設置ACL權限,如果同時設置多個權限,權限之間使用“,”分隔,同時設置多個ACL用戶和組的權限:
setfacl -m u:user1:rwx,u:user2:rw,u:user3:r,g:nona:rw testfile
刪除ACL權限
setfacl -x g:zhangsan acltest.file
一次性刪除所有ACL的權限
setfacl -b acltest.file
設置目錄默認的ACL
setfacl -d -m g:nona:rwx testdir/ - 4)備份和恢復ACL
主要文件操作命令cp和mv都支持備份時保留文件的acl,cp命令需要加上-p參數。但是tar等常見的備份工具是不會保留目錄和文件的ACL信息的。--restore選項來恢復文件中保存的ACL。
例子:
查看目錄及其所有子目錄和文件當前的ACL信息
getfacl -R testdir/
備份目錄及其子目錄中文件的ACL
getfacl -R testdir/ > testdir.acl
刪除原文件所有ACL
setfacl -R -b testdir/
恢復被刪除的ACL信息
setfacl --restore testdir.acl
5.SELINUX
Selinux狀態有三種:啟用模式(enforcing),寬容模式(permissive),禁用模式(disabled)。
查看當前selinux的狀態:
getenforce
寬容模式設置:
setenforce 0
恢復selinux狀態 :
setenfroce 1
getenforce
永久禁用selinux:
vim /etc/selinux/config
將SElinux=enforcing改為 SElinux=disabled
重啟系統使其生效。
《用戶管理和權限設置》