2.18 特殊权限set_uid

set_uid

例子 -rwsr-xr-x.中的s的权限

[root@hf-01 ~]# which passwd
/usr/bin/passwd
[root@hf-01 ~]# ls -l /usr/bin/passwd        会发现passwd文件含有特殊的s权限
-rwsr-xr-x. 1 root root 27832 6月  10 2014 /usr/bin/passwd

set_uid介绍

  • set_uid(s):该权限针对二进制可执行文件使文件在执行阶段具有文件所有者的权限。
    • 可以使用chmod u+(-)s 【二进制文件名】 来设置权限。
  • 相当于set_uid设置user的权限位。
[root@hf-01 ~]# ls /etc/shadow
/etc/shadow     改用户密码的文件
[root@hf-01 ~]# ls -l !$    会发现更改密码的文件权限为000
ls -l /etc/shadow
----------. 1 root root 665 10月 26 08:04 /etc/shadow

set_uid总结

  • set_uid命令,就是保证普通用户临时拥有该命令所有者的身份
  • 给一个文件设置set_uid拥有临时所有者的权限
    • 前提,是该文件必须是二进制文件,而且是一个可执行(x)的文件
      • 例如:ls,passwd这些文件就是二进制文件
      • 而像,1.txt去设置set_uid权限是没有意义的
    • 小写的s包括了x权限,大写的S表示没有x权限
[root@hf-01 ~]# ls -l /usr/bin/ls     这里想给ls命令加一个
-rwxr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

然后复制SSH渠道,打开另一个终端2hf(1)下
[root@hf-01 ~]# su - hanfeng        切换到普通用户hanfeng下去
[hanfeng@hf-01 ~]$ whoami       来查看当前用户
hanfeng
[hanfeng@hf-01 ~]$ ls /root/    这时访问/root/目录,会提示没权限
ls: 无法打开目录/root: 权限不够

这时回到之前的终端下1hf(0)下
[root@hf-01 ~]# chmod u+s /usr/bin/ls       给ls命令增加+s权限
[root@hf-01 ~]# ls -l /usr/bin/ls           这时查看ls命令,会发现x变化为了s权限(小写的s包括了x权限,大写的S表示没有x权限)
-rwsr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls

在切换到另一个终端2hf(1)下
[hanfeng@hf-01 ~]$ ls /root/        这时会看到有访问权限了,就是因为set_uid权限赋给ls。(当在其他用户下使用ls命令时,在执行过程中会以root身份来运行)
11.txt  123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
[hanfeng@hf-01 ~]$ ls -ld /root/
dr-xr-x---. 5 root root 4096 10月 26 09:41 /root/

回到终端1hf(0)下
[root@hf-01 ~]# chmod u-s /usr/bin/ls   去除set_uid赋予给ls的权限

set_uid的写法

  • ls命令的绝对路径为 /usr/bin/ls
[root@hf-01 ~]# chmod u+s /usr/bin/ls       命令ls被赋予了s权限
[root@hf-01 ~]# chmod u-s /usr/bin/ls       收回s权限
[root@hf-01 ~]# chmod u=rws /usr/bin/ls     这也是赋予ls权限的方法,但是它缺少可执行的权限(小写的s包括了x权限,大写的S表示没有x权限)
[root@hf-01 ~]# !ls     会发现这里显示的是大写S
ls -l /usr/bin/ls
-rwSr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls
[root@hf-01 ~]# chmod u+x /usr/bin/ls       在这里再给它加上+x可执行的权限即可
[root@hf-01 ~]# !ls     会发现这里显示的是小写s
ls -l /usr/bin/ls
-rwsr-xr-x. 1 root root 117616 6月  10 2014 /usr/bin/ls
[root@hf-01 ~]# 

  • 目录可增加set_uid权限,但是基本没啥作用,目录基本不用去执行啥
  • set_uid权限本身的作用就是给一个普通用户的用户执行,临时拥有所有者的身份

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Script Boy (CN-SIMO)

PowerShell:因为在此系统上禁止运行脚本

在安装chocolatey(官网)的时候,不能运行chocolateyInstall.pal脚本文件。 ? 查阅资料后,得出如下解决办法: 首次在计算机上启动 ...

36300
来自专栏魏艾斯博客www.vpsss.net

如何在 wordpress 文章页和单页面隐藏作者/发布者

31430
来自专栏电光石火

solr安装配置

环境介绍 solr 6.5.1 tomcat8 jdk1.8

26790
来自专栏从零学习云计算

kubernetes工作记录(2)——基于release工程的kubernetes1.7.3 rpm包的编译生成

使用release工程编译的方式,生成kubernetes1.7.3的rpm包。 虚拟机环境为Centos7.2。 安装git # yum -y install...

24900
来自专栏编程软文

服务器版本更新与客户端不同步的问题

13230
来自专栏小古哥的博客园

Git 常用命令合集

$ git init          建立git仓库(一般都是在github上新建好,直接克隆到本地) $ git clone **.git       克隆...

37480
来自专栏码神联盟

Linux | CentOS7下会玩JDK不?你确定?

Linux下如何搭建Java环境 软件环境 虚拟机:VMware Workstation 系统:Linux:CentOS-7-x86_64 工具: 安装工具...

39090
来自专栏九彩拼盘的叨叨叨

用 GitHub 展示静态页面的几种方法

如何展示自己做的静态页面?需要自己有个服务器,还要买个域名?其实用 GitHub 就能搞定。

10820
来自专栏木子昭的博客

解决.gitignore无法生效的问题

使用git的过程中, 为了避免垃圾文的上传,我们可以手动配置.gitignore排除一些文件或文件夹.

9210
来自专栏算法修养

Git 使用篇二:搭建远程服务器

一般做一个私人的项目,不希望开源的,是不会放在GitHub上的,这个时候我们需要建里一个自己的Git远程服务器,方便小组成员开发。 这里以Centos云服务器为...

40460

扫码关注云+社区

领取腾讯云代金券