用戶身份與能力
- 管理員UID為0:系統(tǒng)的管理員用戶
- 系統(tǒng)用戶UID為1~999:Linux系統(tǒng)為了避免因某個服務(wù)程序出現(xiàn)漏洞而被黑客提權(quán)至整臺服務(wù)器,默認(rèn)服務(wù)程序會有獨立的系統(tǒng)用戶負(fù)責(zé)運行,進(jìn)而有效控制被破壞范圍
- 普通用戶UID從1000開始:由管理員創(chuàng)建的用于日常工作的用戶
useradd
創(chuàng)建新的用戶
參數(shù) | 作用 |
---|---|
-d | 指定用戶的家目錄(默認(rèn)為/home/username) |
-e | 賬戶的到期時間,格式為YYYY-MM-DD |
-u | 指定該用戶的默認(rèn)UID |
-g | 指定一個出事的用戶基本組(必須已存在) |
-G | 指定一個活多個擴(kuò)展用戶組 |
-N | 不創(chuàng)建與用戶同名的基本用戶組 |
-s | 指定該用戶的默認(rèn)Shell解釋器 |
# useradd -d /home/linux -u 8888 -s /sbin/nologin linux
groupadd
創(chuàng)建用戶組
# groupadd linux
usermod
修改用戶屬性
參數(shù) | 作用 |
---|---|
-c | 填寫用戶賬戶的備注信息 |
-d -m | 參數(shù)-m與參數(shù)-d連用,可重新制定用戶的家目錄截驮,并自動把舊的數(shù)據(jù)遷移過去 |
-e | 賬戶到期時間亏狰,格式為YYYY-MM-DD |
-g | 變更所屬用戶組 |
-G | 變更擴(kuò)展用戶組 |
-L | 鎖定用戶禁止其登錄系統(tǒng) |
-U | 解鎖用戶,允許登錄系統(tǒng) |
-s | 變更默認(rèn)終端 |
-u | 修改用戶的UID |
# usermod -u 8888 linux
passwd
修改用戶密碼定枷、過期時間、認(rèn)證信息等
參數(shù) | 作用 | |
---|---|---|
-l | 鎖定用戶届氢,禁止登陸 | |
-u | 解除鎖定欠窒,允許登錄 | |
--stdin | 允許通過標(biāo)準(zhǔn)輸入修改用戶密碼,如:echo “123” | passwd --stdinUsername |
-d | 使該用戶可用密碼登錄系統(tǒng) | |
-e | 強(qiáng)制該用戶在下次登錄時修改密碼 | |
-S | 顯示用戶的密碼是否被鎖定退子,以及密碼所采用的加密算法名稱 |
# passwd linux
略
userdel
刪除用戶
參數(shù) | 作用 |
---|---|
-f | 強(qiáng)制刪除用戶 |
-r | 同時刪除用戶及用戶家目錄 |
# userdel -r linux
文件權(quán)限與歸屬
- -: 普通文件
- d: 目錄文件
- l: 鏈接文件
- b: 塊設(shè)備文件
- c: 字符設(shè)備文件
- p: 管道文件
字符表示略
文件的特殊權(quán)限
SUID
可以讓二進(jìn)制程序的執(zhí)行者岖妄,臨時擁有屬主的權(quán)限(僅對擁有執(zhí)行權(quán)限的二進(jìn)制程序有效)
# ls -l /bin/passwd
-rwsr-xr-x. ...etc
SGID
讓執(zhí)行者臨時擁有屬組的權(quán)限
在某個目錄中創(chuàng)建的文件自動繼承掛目錄的用戶組
設(shè)置好目錄的777權(quán)限,保證普通用戶可以寫入文件寂祥,設(shè)置好SGID特殊權(quán)限位后荐虐,切換至一個普通用戶,然后嘗試在該目錄中創(chuàng)建文件丸凭,并查看新創(chuàng)建的文件是否會繼承所在目錄的所屬組名稱
# mkdir testdir
# ls -ald testdir/
drwxr-xr-x. 2 root root etc...
# chmod -Rf 777 testdir/
# chmod -Rf g+s testdir/
# ls -ald testdir/
drwxrwsrwx. 2 root root etc...
# su linux
$ cd /testdir/
$ echo "test" > test
$ ls -al test
-rw-rw-r--. linux root etc...
SBIT
帶有此權(quán)限的目錄福扬,只有該目錄的所有者腕铸,否則無法刪除這里面的文件
$ ls -ald /temp
drwxrwxrwt. 17 root root etc...
$ cd /tep
$ ls -ald
drwxrwxrwt. 17 root root etc...
$ echo "test" > test
$ chmod 777 test
$ ls -al test
-rwxrwxrwx. 1 linux linux etc...
$ su - otherLinux
$ cd /tmp
$ rm -f test
rm: cannot remove `test`: Operation not permitted
文件的隱藏屬性
chattr
設(shè)置文件的隱藏權(quán)限
參數(shù) | 作用 |
---|---|
i | 無法對文件進(jìn)行修改;若對目錄設(shè)置了該參數(shù)铛碑,則僅能修改其中的子文件內(nèi)容而不能信件或刪除文件 |
a | 僅允許補(bǔ)充(追加)內(nèi)容狠裹,無法覆蓋/刪除內(nèi)容(Append Only) |
S | 文件內(nèi)容在變更后立即同步到硬盤(sync) |
s | 徹底從硬盤中刪除,不可恢復(fù)(用0填充源文件所在硬盤區(qū)域) |
A | 不在修改這個文件或目錄的最后訪問時間(atime) |
b | 不在修改文件或目錄的存取時間 |
D | 檢查壓縮文件中的錯誤 |
d | 使用dump命令備份時葫蘆哦本文件/目錄 |
c | 默認(rèn)將文件或目錄進(jìn)行壓縮 |
u | 當(dāng)刪除該文件后依然保留其在硬盤中的數(shù)據(jù)汽烦,方便日后恢復(fù) |
t | 讓文件系統(tǒng)支持首尾合并(tail-merging) |
X | 可以直接訪問壓縮文件中的內(nèi)容 |
# echo "test" > test
# chattr +a test
# rm test
rm: remove regular file `test`y
rm: cannot remove `test`: Operation not permitted
lsattr
查看文件的隱藏權(quán)限
# lsattr test
-----a---------- test
# chattr -a test
# lsattr test
---------------- test
文件訪問控制列表
對某個指定的用戶金鼎單獨的權(quán)限限制(ACL)
# su linux
$ cd /root
-bash: cd: /root: Permission denied
setfacl
管理文件的ACL規(guī)則
設(shè)置過ACL的文件權(quán)限的最后一個點會變成+涛菠,使用-b可以刪除某個文件的ACL
# setfacl -Rm u:linux:rwx /root
# su linux
$ cd /root
$ ls
etc...
$ exit
# ls -ld /root
dr-xrwx---+ 14 root root etc...
getfacl
顯示文件上設(shè)置的ACL信息
# getfacl /root
getfacl: Removing leading '/' from absolute path names
# file: root
# owner: root
# group: root
user::r-x
user:linux:rwx
group::r-x
mask::rwx
other::---
su
切換用戶身份
如果在su后面添加一個減號(-),意味著完全切換用戶撇吞,即把環(huán)境變量信息也變更為新用戶的相應(yīng)信息
# su - linux
$ su root
Password:
sudo
給普通用戶提供額外的權(quán)限來完成原本root管理員才能完成的任務(wù)
參數(shù) | 作用 |
---|---|
-h | 列出幫助信息 |
-l | 列出當(dāng)前用戶可執(zhí)行的命令 |
-u 用戶名或UID值 | 以指定的用戶身份執(zhí)行命令 |
-k | 清空密碼的有效時間俗冻,下次執(zhí)行sudo時需要再次進(jìn)行密碼驗證 |
-b | 在后臺執(zhí)行指定的命令 |
-p | 更改詢問密碼的提示語 |
將linux用戶賦予root權(quán)限,這時如果切換用戶再使用sudo命令牍颈,需要填寫的是linux用戶的密碼
# visudo
98 root ALL=(ALL) ALL
99 linux ALL=(ALL) ALL
上面的做法并不安全言疗,我們并不想要賦予linux用戶所有的權(quán)限,如果想讓linux用戶可以使用某一個權(quán)限可以參考下面的配置颂砸,做完后可以用sudo cat 去查看之前權(quán)限查看不了的內(nèi)容
# visudo
98 root ALL=(ALL) ALL
99 linux ALL=(ALL) /usr/bin/cat
下面的設(shè)置可以讓我們在使用sudo命令時噪奄,不需要輸入密碼,這樣會減少密碼被黑客破譯的幾率
# visudo
98 root ALL=(ALL) ALL
99 linux ALL=NOPASSWD: /usr/sbin/poweroff