[Linux實(shí)用命令]-13-如何設(shè)置文件特殊權(quán)限

引言

這篇文章介紹Linux文件系統(tǒng)三個(gè)特殊權(quán)限suid,sgid,sticky。

文章目錄

  • 0×1.如何查看當(dāng)前用戶創(chuàng)建文件默認(rèn)權(quán)限
  • 0×2.如何給文件添加suid權(quán)限
  • 0×3.如何給文件夾添加sgid權(quán)限
  • 0×4.如何給文件夾添加sticky權(quán)限

0×1.如何查看當(dāng)前用戶創(chuàng)建文件默認(rèn)權(quán)限

Linux在創(chuàng)建文件和文件夾時(shí)會(huì)默認(rèn)分配一組權(quán)限,這個(gè)權(quán)限是根據(jù)系統(tǒng)的umask值來(lái)確定的,請(qǐng)看下面的實(shí)例:

#查看普通用戶的umask值
qing@qingsword.com:~$ umask
22

#使用普通用戶創(chuàng)建一個(gè)文件夾和文件,查看它們的屬性
qing@qingsword.com:~$ touch qingfile
qing@qingsword.com:~$ mkdir qingdir
qing@qingsword.com:~$ ls -a
drwxr-xr-x qingdir/
-rw-r--r-- qingfile

#文件的默認(rèn)權(quán)限等于666減去umask查看到的值的后三位
# 666-022=644轉(zhuǎn)換成權(quán)限就是-rw-r--r--
#文件夾的默認(rèn)權(quán)限等于777減去umask查看到的值的后三位
# 777-022=755轉(zhuǎn)換成權(quán)限就是drwxr-xr-x

#umask值決定了當(dāng)前用戶創(chuàng)建文件或文件夾時(shí)默認(rèn)的權(quán)限分配,如果想修改umask值,在命令后面輸入umask值的后三位,如下
qing@qingsword.com:~$ umask 002
qing@qingsword.com:~$ umask
2

0×2.如何給文件添加suid權(quán)限

首先簡(jiǎn)單的介紹一下suid權(quán)限的作用,被分配了suid權(quán)限的文件在執(zhí)行的時(shí)候,將以文件所屬用戶的權(quán)限來(lái)運(yùn)行。為了讓大家更好的理解,請(qǐng)看下面的實(shí)例:

#Linux系統(tǒng)保存密碼的shadow文件只有root用戶擁有讀寫權(quán)限
qing@qingsword.com:~$ ls -l /etc/shadow
-rw-r----- 1 root shadow /etc/shadow

#既然這樣,普通用戶使用passwd命令是如何修改密碼的呢?
#通過(guò)查看passwd文件的權(quán)限"-rwsr-xr-x"發(fā)現(xiàn)這個(gè)文件被分配了suid權(quán)限,這樣,當(dāng)普通用戶使用這個(gè)文件來(lái)更改密碼時(shí),文件將以文件所屬用戶root的權(quán)限來(lái)運(yùn)行,而root用戶是能夠?qū)?etc/shadow做出修改的
qing@qingsword.com:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root /usr/bin/passwd

給一個(gè)文件添加suid權(quán)限的方法:

#方法一
qing@qingsword.com:~$ sudo chmod u+s qingfile
qing@qingsword.com:~$ ls -l
drwxr-xr-x 2 qing qing qingdir
-rwSr--r-- 1 qing qing qingfile

#方法二,千位4代表了suid權(quán)限,后面的744對(duì)應(yīng)了ugo
qing@qingsword.com:~$ sudo chmod 4744 qingfile
qing@qingsword.com:~$ ls -l
drwxr-xr-x 2 qing qing qingdir
-rwsr--r-- 1 qing qing qingfile

#在上面這個(gè)實(shí)例中,如果對(duì)應(yīng)的權(quán)限是4644那么看到的權(quán)限位中的s就會(huì)大寫成"-rwSr--r--",這就表明在S位沒(méi)有x權(quán)限,如果S位有x權(quán)限,那么S會(huì)小寫

0×3.如何給文件夾添加sgid權(quán)限

sgid權(quán)限用于文件夾,當(dāng)一個(gè)文件夾設(shè)置sgid權(quán)限后,所有在這個(gè)文件夾下新建的文件,無(wú)論是哪個(gè)用戶創(chuàng)建的,都被自動(dòng)分配到設(shè)置了sgid權(quán)限的父文件夾所屬組中,請(qǐng)看下面的實(shí)例:

#新建一個(gè)測(cè)試組testgroup,調(diào)整qingdir權(quán)限所屬組為testgroup
qing@qingsword.com:~$ sudo groupadd testgroup
qing@qingsword.com:~$ sudo chgrp testgroup qingdir

#給qingdir添加sgid權(quán)限
qing@qingsword.com:~$ sudo chmod g+s qingdir
qing@qingsword.com:~$ ls -l
drwxr-sr-x 2 qing testgroup qingdir

#進(jìn)入qingdir新建一個(gè)文件和文件夾*/
qing@qingsword.com:~$ cd qingdir/
qing@qingsword.com:~$ touch subtestfile
qing@qingsword.com:~$ mkdir subdir

#新建的文件夾和文件都被自動(dòng)分配到了testgroup組中
qing@qingsword.com:~$ ls -l
drwxr-sr-x 2 qing testgroup subdir
-rw-r--r-- 1 qing testgroup subtestfile

#方法二,千位2代表sgid權(quán)限,755對(duì)應(yīng)了ugo
qing@qingsword.com:~$ chmod 2755 qingdir

0×4.如何給文件夾添加sticky權(quán)限

如果一個(gè)用戶對(duì)一個(gè)目錄擁有rwx的權(quán)限,就意味著這個(gè)用戶對(duì)這個(gè)目錄擁有完全控制權(quán),他可以刪除這個(gè)目錄下的所有文件及文件夾,而如果這個(gè)目錄設(shè)置了sticky權(quán)限(Sticky Bit簡(jiǎn)稱SBIT權(quán)限),對(duì)這個(gè)目錄擁rwx權(quán)限的用戶在這個(gè)目錄下,只能刪除和更改自己創(chuàng)建的文件和文件夾,不能刪除和更改其他用戶創(chuàng)建的文件和文件夾。

假設(shè)有兩個(gè)用戶bob和steven,他們被分配到ceo組,現(xiàn)在有一個(gè)testdir的文件夾屬于ceo組,ceo組中的成員對(duì)這個(gè)文件夾擁有rwx權(quán)限,使用sticky權(quán)限對(duì)這個(gè)文件夾進(jìn)行控制,讓bob和steven在對(duì)自己創(chuàng)建的文件有完全控制權(quán)的同時(shí),只能查看其他人在這個(gè)目錄創(chuàng)建的文件,但不能修改和刪除,請(qǐng)看下面的實(shí)例:

#創(chuàng)建ceo組
qing@qingsword.com:~$ sudo groupadd ceo

#創(chuàng)建bob和steven并將他們分配到ceo組中
qing@qingsword.com:~$ sudo useradd -g ceo bob
qing@qingsword.com:~$ sudo useradd -g ceo steven

#分別給bob和steven配置密碼
qing@qingsword.com:~$ sudo passwd bob
qing@qingsword.com:~$ sudo passwd steven

#創(chuàng)建testdir文件夾并將它的所屬組更改為ceo,給這個(gè)組添加rwx權(quán)限,現(xiàn)在ceo組中成員對(duì)這個(gè)目錄擁有完全控制權(quán)
qing@qingsword.com:~$ sudo mkdir testdir
qing@qingsword.com:~$ sudo chgrp ceo testdir/
qing@qingsword.com:~$ sudo chmod g+rwx testdir/

#給testdir目錄添加sticky權(quán)限(注意sticky權(quán)限是添加在others上的)
qing@qingsword.com:~$ sudo chmod o+t testdir/

#查看當(dāng)前testdir目錄的權(quán)限
qing@qingsword.com:~$ ls -ld testdir/
drwxrwxr-t 2 root ceo testdir/

#切換到用戶bob,切換到testdir目錄中(假設(shè)testdir目錄路徑為/home/qing/testdir),touch一個(gè)文件
qing@qingsword.com:~$ su - bob
bob@qingsword.com:~$ cd /home/qing/testdir
bob@qingsword.com:~$ touch bobfile

#退出bob,使用steven登錄,切換到testdir文件夾中,嘗試刪除bob創(chuàng)建的文件*/
bob@qingsword.com:~$ exit
qing@qingsword.com:~$ su - steven
steven@qingsword.com:~$ cd /home/qing/testdir
steven@qingsword.com:~$ ls
bobfile
steven@qingsword.com:~$ rm -rf bobfile
rm: 無(wú)法刪除"bobfile": 不允許的操作
#此時(shí)steven只有查看bob創(chuàng)建的文件或文件夾內(nèi)容的權(quán)限,但無(wú)法刪除和修改它們

#退出steven,使用root權(quán)限刪除testdir的sticky權(quán)限,再次測(cè)試使用steven刪除bob創(chuàng)建的文件,成功
steven@qingsword.com:~$ exit
qing@qingsword.com:~$ sudo chmod o-t testdir/
qing@qingsword.com:~$ su - steven
steven@qingsword.com:~$ cd /home/qing/testdir
steven@qingsword.com:~$ ls
bobfile
steven@qingsword.com:~$ rm -rf bobfile

#方法二,千位1代表sticky權(quán)限,775對(duì)應(yīng)ugo
qing@qingsword.com:~$ sudo chmod 1775 testdir/
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容