CentOS特殊許可權位之setuid、setgid和sticky

來源:互聯網
上載者:User

我們登陸到系統之後,建立一個普通檔案或者目錄的時候,會有一個預設的許可權。普通檔案是644,目錄檔案是755,想必大家都知道這個是由umask這個值決定的。我們可以直接執行umask命令查看,linux系統預設的umask值是0022。想改變建立檔案預設的許可權,我們直接修改umask就可以,但是一般的許可權都是通過777-022得到的預設許可權位。022前面的這個0是什麼呢?第一個0就是特殊許可權位,下邊我們就來跟大家說一下setuid、setgid和sticky這個三個特殊許可權位。

1.suid,set uid:在一個程式或命令上添加setuid以後(u+s),這樣屬主有了s許可權,意味著任何使用者在執行此程式時,其進程的屬主不再是發起者本人,而是這個程式的屬主。最典型的一個例子就是passwd這個命令;

普通使用者運執行passwd命令來修改自己的密碼,其實最終更改的是/etc/passwd這個檔案。

我們知道/etc/passwd檔案是使用者管理的設定檔,只有root許可權的使用者才能更改。

[root@Vmware5 ~]# ls -l /etc/passwd-rw-r--r--. 1 root root 981 Oct 25 01:00 /etc/passwd

按照常規的邏輯思維,普通使用者是修改不了/etc/passwd此檔案的,但是在passwd這個命令上添加了setuid這個特殊許可權位,普通帳號臨時變成root,就能間接修改自己帳號的密碼了。

[root@Vmware5 ~]# ls -l /usr/bin/passwd  (s就是suid位)-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd

設定setuid的方法:(其實前邊提到過了參數是u+s)

chmodu(+|-)s /path/somefilechmod4664 /path/somefile注意:s:表示屬主原來有執行許可權S:表示屬主原來沒有執行許可權

執行個體示範:

添加一個名字為taokey的普通使用者

[root@Vmware5 ~]# useradd taokey

把/etc/fsatb檔案拷貝到/tmp目錄下一份

[root@Vmware5 ~]# cp /etc/fstab /tmp/[root@Vmware5 ~]# cd /tmp/

查看/tmp目錄下fstab檔案的屬性

[root@Vmware5 tmp]# ll fstab-rw-r--r--. 1 root root 899 Oct 25 00:16 fstab

把其他使用者的讀許可權給去掉

[root@Vmware5 tmp]# chmod o-r fstab[root@Vmware5 tmp]# ll fstab-rw-r-----. 1 root root 899 Oct 25 00:16 fstab

切換到普通使用者taokey

[root@Vmware5 tmp]# su - taokey

執行cat命令,看下是否可以查看fstab檔案

[taokey@Vmware5 ~]$ cat/tmp/fstabcat: /tmp/fstab: Permission denied

由於other去掉了r許可權,所有提示cat被拒絕

為了保留原始環境,把cat命令拷貝到/tmp目錄一份

[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]$ ./catfstab./cat: fstab: Permission denied[taokey@Vmware5 tmp]$ exitlogout

特換到root使用者,添加setuid許可權

[root@Vmware5 tmp]# chmod u+s cat
添加完s許可權位之後,再切換到普通使用者taokey,測試是否可以成功執行cat命令
[root@Vmware5 tmp]# su - taokey[taokey@Vmware5 ~]$ cd/tmp/[taokey@Vmware5 tmp]$ ./catfstab## /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 1UUID=3a69daa4-b393-4694-abbb-b856345b376d /bootext4    defaults        1 2UUID=34f85ed8-5f68-4fdc-8aa0-e50d2f9f012e /homeext4    defaults        1 2UUID=95d97c70-9291-499b-ac16-a38508a85e4d swap                    swap    defaults        0 0tmpfs                   /dev/shmtmpfs   defaults        0 0devpts                  /dev/ptsdevpts  gid=5,mode=620  0 0sysfs                   /syssysfs   defaults        0 0proc                    /procproc    defaults        0 0

切換到普通使用者之後,可以成功執行cat命令,查看/tmp/fstab檔案,就是因為tmp目錄下cat這個命令上添加了s許可權位。

12 [taokey@Vmware5 tmp]$ ll cat -rwsr-xr-x. 1 root root 45224 Oct 25 00:21 cat

注意:設定suid這個特殊許可權很危險,不到萬不得已,做好還是不要使用。


2.Sgid,Set id,屬組有s許可權,意思就是執行此程式時,此進程的屬組不再是運行者本人所屬的基本組,而是此程式檔案的屬組。

工作中經常會遇到這樣一個問題?

營運和開發同屬於技術部,使用者同屬於一個組,檔案在一個目錄中,營運人員和開發人員可以相互之間訪問自己的檔案,要是一個一個修改屬組就有點麻煩,這時候用sgid就會很方便的解決這個問題。

12345678910111213141516171819202122232425 例子: [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建立的檔案a.xen中寫東西,但是被拒絕了。

12 [kvm@Vmware5 test ]$ echo "hello" >>a.xen - bash : a.xen: Permission denied

咱們在用root,給/tmp/test檔案添加一個sgid許可權位,然後再測試下。

123 [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普通使用者

1234567891011121314 [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.

可以成功寫進去,這個就是因為在/tmp/test檔案設定了sgid許可權位

但是這個不但可以能成功寫進去,還可以刪除檔案,我們只能自己刪除自己的檔案,不想讓其他使用者刪除我們的檔案,這時候怎麼辦呢?

1234567 例如: [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.這時候就用到了粘滯位,t,sticky,附加other的許可權上,表現為t。

chmod o+|-t /path/somefile

123456789101112 執行個體操作: [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

可以添加和任意修改其他使用者的檔案,就是不能刪除其他使用者的檔案,自己可以刪除自己建立的檔案。

1234567891011 [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



本文出自 “歲月在流逝,光輝依然在” 部落格,請務必保留此出處http://taokey.blog.51cto.com/4633273/1329992


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.