Linux学习笔记——特殊权限之 SUID GUID StickyBit

◆ SUID ( Set User ID )

Linux里,用户的ID被称作UID。在实际生产中,可能需要临时借用别的用户执行程序,因此需要能够临时变更自己UID的机能叫做SUID。借助SUID权限,用户可以临时调用root权限。
※ 通常,文件的执行是由所属者发起,然而,赋予SUID权限后可临时继承所有者的权限(来执行文件)。通常用于二进制可执行文件上,文件夹赋予该权限无意义。

举个例子,假如我们要变更密码、需要编辑/etc/shadow文件,然而这个文件一般用户并没有修改权限。但由于更改密码的命令 passwd拥有SUID权限、一般用户就可以通过该命令来(继承root的权限进而)更改密码。同时我们也可以看到在ll命令下,拥有SUID权限的文件,执行权限的位置会由x变为s。

$ ls -l /usr/bin/passwd

-rwsr-xr-x. 1 root root 25980 Sat 07 2018 /usr/bin/passwd

 

从上面的命令中可以看到,所有者的权限显示为rws,其中,执行权变成了s。也就是说,有执行该命令权限的而用户可以临时继承所有者(root)的权限。

需要通过chmod来赋予(二进制可执行)文件SUID时,可通过添加数字“4000”来赋予权限。比如,原来的权限为755(rwx r-x r-x),赋予SUID权限后变成4755,即(rws r-x r-x)。若想用字母表示,则可用u+s来代替4755.

 ◆ 例子 : 给magedu.txt赋予「 rws r-x r-x 」权限

 $ chmod 4755 magedu.txt

 ◆ 或 : 把magedu.txt的权限由755变为4755 (SUID)

 $ chmod u+s magedu.txt

◆ SGID ( Set Group ID )

除了继承所有者权限的SUID、与之相对的还有继承组权限的SGID。默认情况下,用户创建文件(夹)时,其属组为此用户所属的主组。一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组。在生产生活当中,GUID权限通常用于创建协作目录。拥有SUID权限时,所有者的执行权限表现为s,而拥有GUID权限的情况下则是组权限中表达执行权限的x变为s。

通过chmod设置权限时,可以加算数字2000、或者使用文字g+s来赋予权限。

注:很少用来设置单个文件。

◆ 例子 : 把文件夹magedu 赋予「 rwx r-s r-x 」权限

 $ chmod 2755 magedu

◆ 或 : 用字母来添加GUID 权限

 $ chmod g+s magedu

◆ 粘滞位(sticky bit)

被设置了粘滞位的文件夹,其中的文件及子目录原来具有的权限将无效化。只有所有者及root才能对文件进行修改或删除。当需要「使一个目录既可以让任何用户写入文件,又不让用户删除这个目录下他人的文件」的时候,sticky位即可派上用场。比如系统中的 /tmp 目录就已经设定了粘滞位。

$ ll -d /tmp

drwxrwxrwt. 10 root root 4096 Sat 06 16:25 /tmp

粘滞位在“其它用户权限”中的执行权上显示为t。用chmod赋予该权限时、可加算数字 1000 来设置。同时也可以用字母(o+t)来赋予权限。

◆ 例 : 给目录magedudir 赋予「 rwx rwx rwt 」权限

 $ chmod 1755 magedudir

 ◆ 或 : 把目录magedudir 的权限由「755」变为「1755」

 $ chmod o+t magedudir

 

◆ SUIDSGID粘滞位的区别

权限类型 权限作用对象 数字标记 字母标记
SUID 所有者 4000 u+s
SGID 2000 g+s
Sticky Bit 其它用户 1000 o+t

◆ umask 命令(权限默认值)

文件或目录创建后都有其默认权限,而默认权限的设置与查看,由umask负责。
可以直接执行umask命令来查看umask的值。新建文件的默认权限则由数字666减去umask值,而新建目录的权限则由数字777减去umask的值。root用户的默认umask值为「0022」。则新建文件的权限为 666-022=644、新建目录的权限为 777-022=755。

※注:文件默认权限用666减去umask后可能会出现个位为奇数的情况,这样就会默认具有执行权限。为避免这种现象,系统会自行将奇数+1。例如:666-125=541(r-x rw- –x),所有奇数+1后,实际权限为642(rw- r– -w-)

 ◆ 例子 : 确认当前umask值

$ umask
0022

※ umask值可以由用户指定。

※    如需长期使用,umask设置需要写入配置文件。全局设置: /etc/bashrc 用户设置:~/.bashrc

◆ 例子 : 把umask值从0022变为0027

 $ umask 0027

※ 变更umask值后新建文件的权限即为(-rw r– —)。

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95320

(1)
上一篇 2018-04-07 19:43
下一篇 2018-04-07 19:47

相关推荐

  • 生产环境中数据文件删除,空间不释放问题

    首先数据文件删除文件系统空间不释放的问题不只出现在Linux平台,所有平台都可能有这样的问题。这里只是在Linux平台做一些测试,其他平台类似;其次只有将数据文件存放在文件系统中才会有此类问题。空间没有释放我们可能是通过df命令确认的,当我们用du去扫描目录的大小可能会发现df和du两个命令看到的空间使用情况是不同的,可能差别很大,找了一些文档,解决了这个问题;写这篇博客,希望跟大家分享一下。

    2018-05-18
  • linux基础篇

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。
    2、bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3、请使用命令行展开功能来完成以下练习:
    (1)、创建/tmp目录下的:a_c, a_d, b_c, b_d
    (2)、创建/tmp/mylinux目录下的:
    mylinux/
    ├── bin
    ├── boot
    │ └── grub
    ├── dev
    ├── etc
    │ ├── rc.d
    │ │ └── init.d
    │ └── sysconfig
    │ └── network-scripts
    ├── lib
    │ └── modules
    ├── lib64
    ├── proc
    ├── sbin
    ├── sys
    ├── tmp
    ├── usr
    │ └── local
    │ ├── bin
    │ └── sbin
    └── var
    ├── lock
    ├── log
    └── run

    2018-05-20
  • 马哥教育 第一周培训4.1

    常用命令 1.ifconfig 查ip地址 2.cal 日历 3.who查看用户名 (whoami,who a mi 也可以) 4.init 0 关机(poweroff) 5.init 3 字符界面 6.init5  图形界面  CERL+C 关闭图形界面 7.free 查看内存大小 8.free -m 以M为单位看内存大小 9.clock 查看时间10.h…

    Linux笔记 2018-04-01
  • shell脚本之判断httpd是否有异常

    案例 以web为例 大全讲解:如http为例 #/etc/init.d/httpd start      开启httpd #lsof –i :80 [root@centos6 ~/bin]$curl -I -s -o /dev/null -w “%{http_code}\n” http://172.16.0.1 析:-I 是响应头,响…

    Linux笔记 2018-05-20
  • 程序包管理工具及sed基本使用方法

    程序包管理工具及sed基本使用方法

    2018-04-01
  • Linux运维20180401计算机基础总结

    计算机基础及linux基础和帮助

    Linux笔记 2018-04-01