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

歡迎訪問 生活随笔!

生活随笔

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

linux

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

發布時間:2025/3/15 linux 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 进程 setuid,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權限的用戶才能更改。

[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)chmod u(+|-)s /path/somefile

chmod 4664 /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/fstab

cat: /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]$ ./cat fstab

./cat: fstab: Permission denied

[taokey@Vmware5 tmp]$ exit

logout

特換到root用戶,添加setuid權限[root@Vmware5 tmp]# chmod u+s cat添加完s權限位之后,再切換到普通用戶taokey,測試是否可以成功執行cat命令[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權限位。[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就會很方便的解決這個問題。例子:

[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中寫東西,但是被拒絕了。[kvm@Vmware5 test]$ echo "hello" >>a.xen

-bash: a.xen: Permission denied

咱們在用root,給/tmp/test文件添加一個sgid權限位,然后再測試下。[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普通用戶

[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權限位

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

[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

實例操作:

[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

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

[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,linux特殊权限位之setuid、setgid和sticky的全部內容,希望文章能夠幫你解決所遇到的問題。

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