linux中一些特殊的权限(setuid/setgid/sticky)

问题描述

今天在测试文件系统的时候,发现新创建的文件系统不能使用sudo命令,具体表现如下:

sudo su
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

在网上查了一下都说是要在超级用户权限下执行如下两个命令:

chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo

相对应的就是上述两个错误:sudo的用户属组要属于uid 0,即root用户;同时sudo要设置setuid位。我首先查询了一下我系统中sudo的信息:

ls /usr/bin/sudo
-rwxr-xr-x 1 root root 155008 Aug 28  2015 /usr/bin/sudo

已经是输入root用户组了,所以按照执行sudo时的错误提示,应该是要设置setuid位。执行命令chmod 4755 /usr/bin/sudo或者chmod u+s /usr/bin/sudo,再查看一下sudo的信息:

ls /usr/bin/sudo
-rwsr-xr-x 1 root root 155008 Aug 28  2015 /usr/bin/sudo

发现有一位”x”已经变成了”s”。这时我想起了在学习The Linux Command Line的时候,提到了一些特殊的用户权限,其中就包括设置setuid位。翻出来看看,学而时习之嘛~

特殊权限

虽然常见的八进制权限掩码都是用三位数表示的,但确切地说,它是用四位数表示的,因为除了读、写和执行权限以外,还有一些其他较少用到的权限设置,其中就涉及到上面的setgid设置。

setuid

其中之一就是setuid位,八进制表示为4000,当把它应用到一个可执行文件时,有效用户ID将从实际用户ID(实际运行该程序的用户)设置成该程序所有者的ID,大多数情况下,该权限设置通常应用于一些由超级用户所拥有的程序,例如本问题中的sudo。当普通用户运行一个具有“setuid root”(已设置setuid位,由root用户所有)属性的程序时,该程序将以超级用户的权限执行。

setgid

第二个是setgid位,八进制表示为2000,类似于setuid,它会把有效用户组ID从该用户的实际组ID更改为该文件所有者的组ID。如果对一个目录设置setgid位,那么在该目录下创建的文件将由该目录所在组所有,而不属于文件创建者所在组。当一个公共组下的成员需要访问共享目录下的所有文件时,设置setgid位将会很有用,并不需要关注文件所有者所在的用户组。

sticky

第三个是sticky位,八进制表示位1000,它是从UNIX中继承下来的,在LINUX中将会忽略文件的sticky位。但是对一个目录设置sticky位,那么将能阻止用户删除或者重命名文件,除非用户是这个目录的所有者、文件所有者或者超级用户。它通常用来控制对共享目录(例如/tmp)的访问。

设置方法

授予setuid权限

chmod u+s prog1
or
chmod 4xxx prog1

具有setuid属性的程序为-rwsr-xr-x

授予setgid权限

chmod g+s dir1
or
chmod 2xxx dir1

具有setgid属性的目录为drwxrwsr-x

授予sticky权限

chmod t dir1
or
chmod 1xxx dir1

具有sticky属性的目录为drwxrwxrwt

祝枫
2016年7月26日于深圳

linux中一些特殊的权限(setuid/setgid/sticky)相关推荐

  1. Linux中的文件特殊权限

    Linux中的文件特殊权限 博客分类: 我爱linux linux中除了常见的读(r).写(w).执行(x)权限以外,还有3个特殊的权限,分别是suid.sgid和sticky bit 1.suid. ...

  2. Linux文件系统上的特殊权限      SUID, SGID, Sticky(粘之位)

    每个人都有自己的梦想,我想把它写出来. Linux文件系统上的特殊权限 SUID, SGID, Sticky(粘之位) 1 文件基本权限 r读, w写, x执行 user, group, other ...

  3. linux中/usr下文件权限修改setuid导致的问题

    2019独角兽企业重金招聘Python工程师标准>>> 在Ubuntu系统中因为一些原因我使用如下命令修改了/usr目录的拥有者权限: chown -R root:root /usr ...

  4. Linux内核学习笔记——Linux中的用户组和权限管理(UID是什么?)

    目录 一.背景 进程权限 最小权限原则 二.linux系统安全模型 用户 用户组 用户和组的关系 安全上下文 进程的用户ID 函数setreuid和setregid 函数seteuid和setegid ...

  5. linux 修改 gid uid,uid, gid, setuid, setgid

    程序和进程 一般而言,程序是一个可执行的文件,而进程是程序执行的实例,一个程序可以产生任意多个进程,这些进程具有相同的代码. 用户名/组名和uid/gid 每一个用户具有一个用户名和组名以及对应的ui ...

  6. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...

  7. linux 文件夹换所属用户,Linux中账号管理之权限管理(下)

    linux中的账号管理我们在前面两张已经介绍了一些用户和组的相关概念,常用的配置文件,命令的使用.现在我们来看看账号管理中最傲娇的部分就是我们的权限管理. 一.简单介绍权限的概念 以install.l ...

  8. linux中facl有什么作用,在Linux中使用setfacl后权限被拒绝

    有3个用户:A,B,C. A在他的主文件夹/ home / A / mydir中有mydir B可以读/ home / A内容 C可以读写/ home / A内容 我试过这样的方式: setfacl ...

  9. centos sudo不能运行_如何在Linux中配置sudo访问权限

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为. 如果其他用户想去实施一些行为,不能为所有人都提供 ...

最新文章

  1. 利用FLASH和XML做炫酷图片相册
  2. CompactExifLib:访问JPEG文件中的EXIF标签
  3. 【layui】【laydate】设置可以选择相同的年份范围
  4. 赚钱就是一个合作的过程,合作的过程,也是扯淡的过程
  5. NPS内网穿透服务端一键安装脚本
  6. finally中关闭资源
  7. paip.dom4j中 selectSingleNode 或selectNodes获取不到节点的原因总结
  8. php 图片轮换 代码,jQuery实现图片轮播特效代码分享
  9. 幅值与峰峰值的计算_交流电有效值与峰值计算公式的推导过程.
  10. 测试图片真假软件,如何找出照片的PS痕迹__如何检测一张图片是否被PS过_飞翔教程...
  11. 系统集成项目管理工程师10大管理5个过程组47个过程域
  12. 【杂谈】斯科特与阿蒙森的南极点竞赛
  13. 重新发现Oracle太美之root.sh
  14. Python语言程序设计笔记(全)
  15. 使用gdiplus显示gif图片
  16. Mac电脑启动出现空白屏幕的解决办法
  17. 10.13(129. 求根到叶子节点数字之和 130. 被围绕的区域)
  18. react利用react-activation实现子路由缓存
  19. .NET 4.0安装提示一般信任关系失败
  20. [1]无线通信--介绍基本概念

热门文章

  1. spring boot(三)Junit 测试controller
  2. django框架之模板系统
  3. 深度解析javascript中的浅复制和深复制
  4. 网络协议从入门到底层原理(6)应用层 - 域名、DNS、DHCP、HTTP(ABNF、HTTP报文格式、请求方法、头部字段、状态码、跨域)、代理、CDN
  5. springboot国际化04
  6. 安装docker和jupyter采坑历程
  7. 那些拆中台的CTO,70%被裁了
  8. 深入了解帆软报表系统的启动过程一
  9. linux创建用户已存在哪里,解决linux下创建用户时出现 Creating mailbox file: 文件已存在...
  10. java mybatis分页查询语句_mybatis分页查询的实现(一)