suid/guid
  我们在前面曾经提到过s u i d和g u i d。这种权限位近年来成为一个棘手的问题。很多系统供应商不允许实现这一位,或者即使它被置位,也完全忽略它的存在,因为它会带来安全性风险。那么人们为何如此大惊小怪呢?
  s u i d意味着如果某个用户对属于自己的s h e l l脚本设置了这种权限,那么其他用户在执行这一脚本时也会具有其属主的相应权限。于是,如果根用户的某一个脚本设置了这样的权限,那么其他普通用户在执行它的期间也同样具有根用户的权限。同样的原则也适用于g u i d,执行相应脚本的用户将具有该文件所属用户组中用户的权限。

1.   为什么要使用suid/gui

  为什么要使用这种类型的脚本?这里有一个很好的例子。我管理着几个大型的数据库系统,而对它们进行备份需要有系统管理权限。我写了几个脚本,并设置了它们的g u i d,这样我指定的一些用户只要执行这些脚本就能够完成相应的工作,而无须以数据库管理员的身份登录,以免不小心破坏了数据库服务器。通过执行这些脚本,他们可以完成数据库备份及其他管理任务,但是在这些脚本运行结束之后,他们就又回复到他们作为普通用户的权限。有相当一些U N I X命令也设置了s u i d和g u i d。如果想找出这些命令,可以进入/ b i n或/ s b i n目录,执行下面的命令:

$ ls -l | grep '^...s'

上面的命令是用来查找s u i d文件的;

$ ls -l | grep '^...s..s'

  上面的命令是用来查找s u i d和g u i d的。
  现在我们明白了什么是s u i d,可是如何设置它呢?下面就来介绍这个问题。如果希望设置s u i d,那么就将相应的权限位之前的那一位设置为4;如果希望设置g u i d,那么就将相应的权限位之前的那一位设置为2;如果希望两者都置位,那么将相应的权限位之前的那一位设置为4+2。
  一旦设置了这一位,一个s将出现在x的位置上。记住:在设置s u i d或g u i d的同时,相应的执行权限位必须要被设置。例如,如果希望设置g u i d,那么必须要让该用户组具有执行权限。
  如果想要对文件l o g i n设置s u i d,它当前所具有的权限为rwx rw- r-- (741),需要在使用c h m o d命令时在该权限数字的前面加上一个4,即chmod 4741,这将使该文件的权限变为r w srw- r - -。

$ chmod 4741 logit

2 设置suid/guid的例子

下面给出几个例子:

  还可以使用符号方式来设置s u i d / g u i d。如果某个文件具有这样的权限: rwx r-x r- x,那么可以这样设置其s u i d:

chmod u+s <filename>

  于是该文件的权限将变为: rws r-x r-x在查找设置了s u i d的文件时,没准会看到具有这样权限的文件:rwS r-x r- x,其中S为大写。它表示相应的执行权限位并未被设置,这是一种没有什么用处的s u i d设置,可以忽略它的存在。注意,c h m o d命令不进行必要的完整性检查,可以给某一个没用的文件赋予任何权限,但chmod 命令并不会对所设置的权限组合做什么检查。因此,不要看到一个文件具有执行权限,就认为它一定是一个程序或脚本。

最新文章

  1. windows下mysql 主从同步
  2. 99 Lisp Problems 列表处理(P1~P28)
  3. leetcode@ [336] Palindrome Pairs (HashMap)
  4. Touch事件or手机卫士面试题整理回答(二)
  5. 通往WinDbg的捷径
  6. oracle存储过程异常捕获
  7. WinForm 进程、线程
  8. Java的构造器
  9. 2018上c语言第0次作业
  10. gridview使用小知识
  11. Family 科
  12. Nodejs----单点登录
  13. computational biology | Bioinformatician | 开发者指南
  14. Spring和SpringBoot比较,解惑区别
  15. Android之ToolBar和自定义ToolBar实现沉浸式状态栏
  16. 【TCP/IP详解 卷一:协议】第六章:DHCP 和自动配置
  17. PTA(BasicLevel)-1010 一元多项式求导
  18. 反编译apk + eclipse中调试smali
  19. Servlet的监听器Listener
  20. 带依赖包的maven打包配置

热门文章

  1. ookla 网络上传下载 PING 测试
  2. Linq 分组(group by)求和(sum)并且按照分隔符(join)分割列数据
  3. ice地址
  4. Python学习(六)模块 —— 第三方库
  5. add-strings
  6. Echarts动画效果:实现数据左右移动
  7. java设计模式6--适配器模式(Adapter )
  8. windows获取本机MAC地址并写入文件的bat
  9. IDEA20181.4破解
  10. Linux mkdir 如何递归创建目录?