虽然通过ACL增加了权限设置的灵活性,但是Linux系统中可供设置的权限只有读、写、执行三种,在某些特殊的场合,这可能将无法满足要求。因而,在Linux系统中还提供了几种特殊的附加权限,用于为文件或目录提供额外的控制方式,可用的附加权限包括:SET位权限(SUID、SGID)和粘滞位权限(Sticky Bit)。本文将介绍SET位权限。

SET位权限多用于给可执行的程序文件或目录进行设置,其中SUID表示对所有者用户添加SET位权限,SGID表示对所属组内的用户添加SET位权限。当一个可执行文件被设置了SUID、SGID权限后,任何用户在执行该文件时,将获得该文件所有者、所属组相对应的权限。

SET位权限的权限字符为“s”,设置SET位权限同样要通过chmod命令实现,可以使用“u+s”、“g+s”的权限模式分别用于设置SUID、SGID权限。

设置SUID、SGID权限后,使用ls命令查看文件的属性时,对应位置的“x”将变为s,表示该文件在执行时将以所有者或所属组的身份访问系统。注意,如果文件原来位置有x权限,执行该命令后其权限字符为小写s;若文件原位没有x权限,则设置权限后将显示为大写字符S。

1)设置SUID

例:查看passwd命令所对应的程序文件的属性信息。

[root@localhost ~]# ll /usr/bin/passwd

-rwsr-xr-x. 1 root root 30768 2月 17 2012 /usr/bin/passwd

/usr/bin/passwd文件的权限是“rwsr-xr-x”,SET位权限设置在第一组,表示针对所有者用户设置,因而称为SUID。这样当其他用户执行passwd命令时,会自动以文件所有者root用户的身份去执行。

SUID仅能针对可执行文件设置,对于目录无效。

由于SUID权限会改变用户身份,这给系统带来了一定的安全隐患,因而一般不建议我们自己去设置SUID,但是系统中有不少默认已经设置了SUID权限的可执行文件,我们能了解其用途即可。

系统中常见的已经设置了SUID权限的可执行文件还包括:

[root@localhost ~]# ll /bin/su

-rwsr-xr-x. 1 root root 34904 4月 17 2012 /bin/su

[root@localhost ~]# ll /bin/mount

-rwsr-xr-x. 1 root root 76056 4月 6 2012 /bin/mount

[root@localhost ~]# ll /bin/ping

-rwsr-xr-x. 1 root root 40760 3月 22 2011 /bin/ping

例:去除/bin/ping的SUID权限:

[root@localhost ~]# chmod u-s /bin/ping

[root@localhost ~]# ll /bin/ping

-rwxr-xr-x 1 root root 37312 2009-04-24 /bin/ping

2)设置SGID

如果SET位权限设置在所属组所对应的第二组权限位时,那么就称为SGID。

SGID可以针对可执行文件设置,也可以针对目录设置,但是所表达的含义却截然不同:

  • 文件:如果针对文件设置SGID,则不论使用者是谁,他在执行该程序的时候,都将以文件所属组成员的身份去执行。

  • 目录:如果针对目录设置SGID,则在该目录内所建立的文件或子目录的所属组,将会自动成为此目录的所属组。

一般来说,SGID通常用于目录的权限设置。

例如,设置/home/test目录的所有者是student,所属组是users,权限是770,默认情况下在该目录下创建的文件的所有者和所属组都是创建者,如下所示。

[root@localhost ~]# ll -d /home/test

drwxrwx---. 2 student users 4096 12月 2 21:46 /home/test

[root@localhost ~]# touch /home/test/file1

[root@localhost ~]# ll /home/test

总用量 0

-rw-r--r--. 1 root root 0 12月 2 21:47 file1

为/home/test目录设置SGID权限,再在目录中创建文件时,文件的所属组将被自动设置为目录的所属组users,如下所示。

[root@localhost ~]# chmod g+s /home/test

[root@localhost ~]# ll -d /home/test

drwxrws---. 2 student users 4096 12月 2 21:47 /home/test

[root@localhost ~]# touch /home/test/file2

[root@localhost ~]# ll /home/test

总用量 0

-rw-r--r--. 1 root root 0 12月 2 21:47 file1

-rw-r--r--. 1 root users 0 12月 2 21:50 file2

SUID权限在生产环境中被广泛用于协同办公。当为目录设置了SUID权限之后,所有用户在该目录中创建的文件都将属于同一个用户组,这样只要是该组的成员都将自动拥有对文件的相应权限,以方便同组成员之间的文件修改和信息交流。

网络安全系列之四十 在Linux中设置SET位权限相关推荐

  1. 网络安全系列之四十六 在IIS6中配置目录安全性

    Web站点默认是允许匿名访问的,某些特殊网站(或者虚拟目录)如果要求用户提供账号和密码才能访问,或者限定某些IP地址能(或不能)访问,那可以通过在Web站点属性的"目录安全性"选项 ...

  2. linux网络相关日志,网络安全系列之十五 Linux日志管理1

    Linux服务器一般都是被放置在机房中自动运行,管理员要了解服务器或是应用程序的运行状态,大都需要通过日志.日志文件用于记录Linux系统中各种运行消息,不同的日志文件记载了不同类型的信息,例如Lin ...

  3. Linux中设置vi编辑器的编码格式以及使用

    Linux中设置vi编辑器的编码格式以及使用 vi ~/.vimrc set fileencodings=utf-8,gbk set termencoding=utf-8 set encoding=u ...

  4. 配置linux登录超时命令,LINUX中 设置登录超时

    ssh设置超时时间 ssh连接超时问题解决方案: 1.修改server端的etc/ssh/sshd_config ClientAliveInterval 60 #server每隔60秒发送一次请求给c ...

  5. eclipse里source的快捷方法_教你如何在Linux中设置快捷方式图标

    这篇文章主要给大家介绍了关于如何在Linux中设置快捷方式图标的相关资料,文中通过示例代码的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧 前言 Linux系统 ...

  6. linux中设置环境变量_如何在Linux中设置环境变量

    linux中设置环境变量 Wondering how to set environment variables in Linux? This is exactly what we'll be doin ...

  7. linux蓝牙接收文件路径,在Linux中设置蓝牙,方便文件传输、连接耳麦

    在 Windows 和 macOS 上对蓝牙功能进行配置都非常容易,用户可以很简单地就连接蓝牙鼠标.键盘.耳机或其它任何蓝牙配件.而在 Linux 系统中使用蓝牙连接就不那么方便了,至少我还没遇到过能 ...

  8. 【VMware】虚拟机中给Linux设置ip——解决在linux中设置了ip地址,却还是连不上的问题

    大家好,我是好学的小师弟,最近在搭建虚拟机的时候,发现我虽然在linux中设置了ip地址却还是用MobaXterm连不上.后来查询相关文档,解决了该问题 进入虚拟机,点击编辑-虚拟网络编辑器 进入到N ...

  9. 在linux中设置nexus开机自启动

    本篇讲一下在linux中设置nexus开机自启动 关于 在linux中安装nexus可以看下我之前写的另外一篇文章: 在linux上搭建maven私服nexus和nexus的使用 一.把nexus配置 ...

  10. linux 日语软件下载,教你在 Arch Linux 中设置日语环境

    在本教程中,我们将讨论如何在 Arch Linux 中设置日语环境.在其他类 Unix 操作系统中,设置日文布局并不是什么大不了的事情.你可以从设置中轻松选择日文键盘布局.然而,在 Arch Linu ...

最新文章

  1. java 打开指定文件,java解决指定应用程序打开指定文件
  2. httpModules 与 httpHandlers
  3. 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用
  4. 微信公众号天气与聊天机器人小功能
  5. 图论 —— 环与块 —— 连通块的计数
  6. 递归:我不用栈 非递归:栈使我快乐
  7. linux 项目内存吃掉,Linux内存被吃掉了,它去哪里了?
  8. OpenCV-计时函数cv::getTickCountcv::getTickFrequency
  9. Halcon自定义直线卡尺rake
  10. 算法学习:最短路径SPFA算法
  11. masm32 安装过程(记录)
  12. 数据仓库系列之元数据管理
  13. 自己动手来做一寸或两寸照片(使用工具)
  14. Xposed框架的安装包和卸载包的默认下载路径以及网站下载地址
  15. windows方法和属性
  16. C# 使用WebSocket创建聊天室案例
  17. 神经网络模型结果怎么看,图像识别神经网络模型
  18. 华为云ESC产品突飞猛进,引领行业成长
  19. 毕向东—Java基础知识总结(超级经典)
  20. oracle adjusting parallel,Oracle 参数之_undo_autotune

热门文章

  1. 学在LINUX下编程(转)
  2. Bootstrap validation
  3. mongodb 索引1
  4. 系统调用服务号 linux 2.6.32
  5. Servlet JSP - 转发与重定向的区别
  6. Ubuntu修改默认root及密码
  7. mybatis insert 如何返回主键
  8. java 线程 interrupted_Java:当被另一个线程中断时,如何在线程上捕获InterruptedException?...
  9. 散粉在哪个步骤用_如何正确的使用散粉
  10. 最小二乘法2阶拟合数据