日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux特殊权限位之setuid、setgid和sticky

發布時間:2023/12/2 linux 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux特殊权限位之setuid、setgid和sticky 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


?我們登陸到系統之后,創建一個普通文件或者目錄的時候,會有一個默認的權限。普通文件是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權限的用戶才能更改。

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

?按照常規的邏輯思維,普通用戶是修改不了/etc/passwd此文件的,但是在passwd這個命令上添加了setuid這個特殊權限位,普通賬號臨時變成root,就能間接修改自己賬號的密碼了。

1 2 [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)

1 2 3 4 5 chmod?u(+|-)s?/path/somefile chmod?4664?/path/somefile 注意: s:表示屬主原來有執行權限 S:表示屬主原來沒有執行權限

實例演示:

添加一個名字為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

把其他用戶的讀權限給去掉

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

執行cat命令,看下是否可以查看fstab文件

1 2 [taokey@Vmware5 ~]$?cat?/tmp/fstab cat:?/tmp/fstab: Permission denied

由于other去掉了r權限,所有提示cat被拒絕

為了保留原始環境,把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

特換到root用戶,添加setuid權限

1 [root@Vmware5 tmp]# chmod u+s cat
1 添加完s權限位之后,再切換到普通用戶taokey,測試是否可以成功執行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

?切換到普通用戶之后,可以成功執行cat命令,查看/tmp/fstab文件,就是因為tmp目錄下cat這個命令上添加了s權限位。

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

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


2.Sgid,Set id,屬組有s權限,意思就是執行此程序時,此進程的屬組不再是運行者本人所屬的基本組,而是此程序文件的屬組。Set gid權限如果給文件設置,是讓運行此文件的其它用戶具有這個文件的屬組特性;給目錄設置Set gid權限,任何用戶在該目錄下創建的文件,則該文件屬組都和目錄的屬組一致。

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

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

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創建的文件a.xen中寫東西,但是被拒絕了。

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

咱們在用root,給/tmp/test文件添加一個sgid權限位,然后再測試下。

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.

可以成功寫進去,這個就是因為在/tmp/test文件設置了sgid權限位

但是這個不但可以能成功寫進去,還可以刪除文件,我們只能自己刪除自己的文件,不想讓其他用戶刪除我們的文件,這時候怎么辦呢?

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

chmod o+|-t /path/somefile

1 2 3 4 5 6 7 8 9 10 11 12 實例操作: [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

可以添加和任意修改其他用戶的文件,就是不能刪除其他用戶的文件,自己可以刪除自己創建的文件。

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

表示方法:?
將三個特殊位的用八進制數值表示,放于 u/g/o 位之前。其中 suid :4 sgid:2 sticky:1.

總結

以上是生活随笔為你收集整理的linux特殊权限位之setuid、setgid和sticky的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。