?我們登陸到系統(tǒng)之后,創(chuàng)建一個(gè)普通文件或者目錄的時(shí)候,會(huì)有一個(gè)默認(rèn)的權(quán)限。普通文件是644,目錄文件是755,想必大家都知道這個(gè)是由umask這個(gè)值決定的。我們可以直接執(zhí)行umask命令查看,linux系統(tǒng)默認(rèn)的umask值是0022。想改變創(chuàng)建文件默認(rèn)的權(quán)限,我們直接修改umask就可以,但是一般的權(quán)限都是通過777-022得到的默認(rèn)權(quán)限位。022前面的這個(gè)0是什么呢?第一個(gè)0就是特殊權(quán)限位,下邊我們就來跟大家說一下setuid、setgid和sticky這個(gè)三個(gè)特殊權(quán)限位。
1.suid,set uid:在一個(gè)程序或命令上添加setuid以后(u+s),這樣屬主有了s權(quán)限,意味著任何用戶在執(zhí)行此程序時(shí),其進(jìn)程的屬主不再是發(fā)起者本人,而是這個(gè)程序的屬主。最典型的一個(gè)例子就是passwd這個(gè)命令;
?普通用戶運(yùn)執(zhí)行passwd命令來修改自己的密碼,其實(shí)最終更改的是/etc/passwd這個(gè)文件。
我們知道/etc/passwd文件是用戶管理的配置文件,只有root權(quán)限的用戶才能更改。
| 1 2 | [root@Vmware5 ~]# ls -l /etc/passwd -rw-r--r--. 1 root root 981 Oct 25 01:00?/etc/passwd |
?按照常規(guī)的邏輯思維,普通用戶是修改不了/etc/passwd此文件的,但是在passwd這個(gè)命令上添加了setuid這個(gè)特殊權(quán)限位,普通賬號(hào)臨時(shí)變成root,就能間接修改自己賬號(hào)的密碼了。
| 1 2 | [root@Vmware5 ~]# ls -l /usr/bin/passwd? (s就是suid位) -rwsr-xr-x. 1 root root 30768 Feb 22? 2012?/usr/bin/passwd |
?設(shè)置setuid的方法:(其實(shí)前邊提到過了參數(shù)是u+s)
| 1 2 3 4 5 | chmod?u(+|-)s?/path/somefile chmod?4664?/path/somefile 注意: s:表示屬主原來有執(zhí)行權(quán)限 S:表示屬主原來沒有執(zhí)行權(quán)限 |
實(shí)例演示:
添加一個(gè)名字為taokey的普通用戶
| 1 | [root@Vmware5 ~]# useradd taokey |
把/etc/fsatb文件拷貝到/tmp目錄下一份
| 1 2 | [root@Vmware5 ~]# cp /etc/fstab /tmp/ [root@Vmware5 ~]# cd /tmp/ |
查看/tmp目錄下fstab文件的屬性
| 1 2 | [root@Vmware5 tmp]# ll fstab -rw-r--r--. 1 root root 899 Oct 25 00:16 fstab |
把其他用戶的讀權(quán)限給去掉
| 1 2 3 | [root@Vmware5 tmp]# chmod o-r fstab [root@Vmware5 tmp]# ll fstab -rw-r-----. 1 root root 899 Oct 25 00:16 fstab |
切換到普通用戶taokey
| 1 | [root@Vmware5 tmp]# su - taokey |
執(zhí)行cat命令,看下是否可以查看fstab文件
| 1 2 | [taokey@Vmware5 ~]$?cat?/tmp/fstab cat:?/tmp/fstab: Permission denied |
由于other去掉了r權(quán)限,所有提示cat被拒絕
為了保留原始環(huán)境,把cat命令拷貝到/tmp目錄一份
| 1 2 3 4 5 6 7 8 | [root@Vmware5 ~]# cp /bin/cat? /tmp/ [taokey@Vmware5 tmp]$?ls?-l fstab?cat -rwxr-xr-x. 1 root root 45224 Oct 25 00:21?cat -rw-r-----. 1 root root?? 899 Oct 25 00:16 fstab [taokey@Vmware5 tmp]$ ./cat?fstab ./cat: fstab: Permission denied [taokey@Vmware5 tmp]$?exit logout |
特?fù)Q到root用戶,添加setuid權(quán)限
| 1 | [root@Vmware5 tmp]# chmod u+s cat |
| 1 | 添加完s權(quán)限位之后,再切換到普通用戶taokey,測(cè)試是否可以成功執(zhí)行cat命令 |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root@Vmware5 tmp]# su - taokey [taokey@Vmware5 ~]$?cd?/tmp/ [taokey@Vmware5 tmp]$ ./cat?fstab # # /etc/fstab # Created by anaconda on Thu Oct 24 23:49:23 2013 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=b49ee2b3-75aa-4227-a9ff-5d0d990af0fd /?????????????????????? ext4??? defaults??????? 1 1 UUID=3a69daa4-b393-4694-abbb-b856345b376d?/boot???????????????????ext4??? defaults??????? 1 2 UUID=34f85ed8-5f68-4fdc-8aa0-e50d2f9f012e?/home???????????????????ext4??? defaults??????? 1 2 UUID=95d97c70-9291-499b-ac16-a38508a85e4d swap??????????????????? swap??? defaults??????? 0 0 tmpfs???????????????????/dev/shm????????????????tmpfs?? defaults??????? 0 0 devpts??????????????????/dev/pts????????????????devpts? gid=5,mode=620? 0 0 sysfs???????????????????/sys????????????????????sysfs?? defaults??????? 0 0 proc????????????????????/proc???????????????????proc??? defaults??????? 0 0 |
?切換到普通用戶之后,可以成功執(zhí)行cat命令,查看/tmp/fstab文件,就是因?yàn)閠mp目錄下cat這個(gè)命令上添加了s權(quán)限位。
| 1 2 | [taokey@Vmware5 tmp]$ ll?cat -rwsr-xr-x. 1 root root 45224 Oct 25 00:21?cat |
注意:設(shè)置suid這個(gè)特殊權(quán)限很危險(xiǎn),不到萬不得已,做好還是不要使用。
2.Sgid,Set id,屬組有s權(quán)限,意思就是執(zhí)行此程序時(shí),此進(jìn)程的屬組不再是運(yùn)行者本人所屬的基本組,而是此程序文件的屬組。Set gid權(quán)限如果給文件設(shè)置,是讓運(yùn)行此文件的其它用戶具有這個(gè)文件的屬組特性;給目錄設(shè)置Set gid權(quán)限,任何用戶在該目錄下創(chuàng)建的文件,則該文件屬組都和目錄的屬組一致。
工作中經(jīng)常會(huì)遇到這樣一個(gè)問題?
運(yùn)維和開發(fā)同屬于技術(shù)部,用戶同屬于一個(gè)組,文件在一個(gè)目錄中,運(yùn)維人員和開發(fā)人員可以相互之間訪問自己的文件,要是一個(gè)一個(gè)修改屬組就有點(diǎn)麻煩,這時(shí)候用sgid就會(huì)很方便的解決這個(gè)問題。
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 例子: [root@Vmware5 tmp]# usermod -a -G mygrp xen [root@Vmware5 tmp]# usermod -a -G mygrp kvm [root@Vmware5 tmp]# mkdir /tmp/test [root@Vmware5 tmp]# ls -ld /tmp/test/ drwxr-xr-x. 2 root root 4096 Oct 25 00:48?/tmp/test/ [root@Vmware5 tmp]# chmod g+w /tmp/test [root@Vmware5 tmp]# ls -ld /tmp/test/ drwxrwxr-x. 2 root root 4096 Oct 25 00:48?/tmp/test/ [root@Vmware5 tmp]# chown :mygrp /tmp/test [root@Vmware5 tmp]# ls -ld /tmp/test drwxrwxr-x. 2 root mygrp 4096 Oct 25 00:48?/tmp/test [root@Vmware5 ~]# su - xen [xen@Vmware5 ~]$?cd?/tmp/test [xen@Vmware5?test]$?touch?a.xen [xen@Vmware5?test]$?ls?-l total 0 -rw-rw-r--. 1 xen xen 0 Oct 25 00:50 a.xen [root@Vmware5 ~]# su - kvm [kvm@Vmware5 ~]$?cd?/tmp/test [kvm@Vmware5?test]$?touch?a.kvm [kvm@Vmware5?test]$?ls?-l total 0 -rw-rw-r--. 1 kvm kvm 0 Oct 25 00:51 a.kvm -rw-rw-r--. 1 xen xen 0 Oct 25 00:50 a.xen |
kvm用戶想往xen創(chuàng)建的文件a.xen中寫東西,但是被拒絕了。
| 1 2 | [kvm@Vmware5?test]$?echo?"hello"?>>a.xen -bash: a.xen: Permission denied |
咱們?cè)谟胷oot,給/tmp/test文件添加一個(gè)sgid權(quán)限位,然后再測(cè)試下。
| 1 2 3 | [root@Vmware5 ~]# chmod g+s /tmp/test [root@Vmware5 ~]# ls -ld /tmp/test drwxrwsr-x. 2 root mygrp 4096 Oct 25 00:51?/tmp/test |
切換到xen普通用戶
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@Vmware5 ~]# su - xen [xen@Vmware5?test]$?touch?b.xen [xen@Vmware5?test]$ ll b.xen -rw-rw-r--. 1 xen mygrp 0 Oct 25 01:01 b.xen [root@Vmware5 ~]# su - kvm [kvm@Vmware5 ~]$?echo?"hello"?>>b.xen [kvm@Vmware5 ~]$?cat?b.xen hello [kvm@Vmware5 ~]$?touch?b.kvm [root@Vmware5 ~]# su - xen [xen@Vmware5 ~]$?cd?/tmp/test/ [xen@Vmware5?test]$?echo?"My name is taoyake."?>>b.kvm [xen@Vmware5?test]$?cat?b.kvm My name is taoyake. |
可以成功寫進(jìn)去,這個(gè)就是因?yàn)樵?tmp/test文件設(shè)置了sgid權(quán)限位
但是這個(gè)不但可以能成功寫進(jìn)去,還可以刪除文件,我們只能自己刪除自己的文件,不想讓其他用戶刪除我們的文件,這時(shí)候怎么辦呢?
| 1 2 3 4 5 6 7 | 例如: [xen@Vmware5?test]$?rm?b.kvm [xen@Vmware5?test]$ ll total 0 -rw-rw-r--. 1 kvm kvm?? 0 Oct 25 00:51 a.kvm -rw-rw-r--. 1 xen xen?? 0 Oct 25 00:50 a.xen -rw-rw-r--. 1 xen mygrp 0 Oct 25 01:01 b.xen |
3.這時(shí)候就用到了粘滯位,t,sticky,附加other的權(quán)限上,表現(xiàn)為t。
chmod o+|-t /path/somefile
| 1 2 3 4 5 6 7 8 9 10 11 12 | 實(shí)例操作: [root@Vmware5 ~]# ls -ld /tmp/test drwxrwsr-t. 2 root mygrp 4096 Oct 25 01:10?/tmp/test [xen@Vmware5?test]$?ls a.kvm? a.xen? b.xen? c.kvm [xen@Vmware5?test]$?echo?"beyond"?>>c.kvm [xen@Vmware5?test]$?cat?c.kvm beyond [xen@Vmware5?test]$?echo?"">c.kvm [xen@Vmware5?test]$?cat?c.kvm [xen@Vmware5?test]$?rm?-rf c.kvm rm: cannot remove `c.kvm': Operation not permitted |
可以添加和任意修改其他用戶的文件,就是不能刪除其他用戶的文件,自己可以刪除自己創(chuàng)建的文件。
| 1 2 3 4 5 6 7 8 9 10 11 | [kvm@Vmware5?test]$?touch?c.kvm [kvm@Vmware5?test]$?ls a.kvm? a.xen? b.xen? c.kvm [kvm@Vmware5?test]$?rm?c.kvm [kvm@Vmware5?test]$?ls a.kvm? a.xen? b.xen [xen@Vmware5?test]$ ll total 0 -rw-rw-r--. 1 kvm kvm?? 0 Oct 25 00:51 a.kvm -rw-rw-r--. 1 xen xen?? 0 Oct 25 00:50 a.xen -rw-rw-r--. 1 xen mygrp 0 Oct 25 01:01 b.xen |
表示方法:?
將三個(gè)特殊位的用八進(jìn)制數(shù)值表示,放于 u/g/o 位之前。其中 suid :4 sgid:2 sticky:1.
總結(jié)
以上是生活随笔為你收集整理的linux特殊权限位之setuid、setgid和sticky的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。