zoukankan      html  css  js  c++  java
  • 【转】chmod g+s 、chmod o+t 、chmod u+s

    Set uid, gid,sticky bit的三个权限的详细说明

    一个文件都有一个所有者, 表示该文件是谁创建的. 同时, 该文件还有一个组编号, 表示该文件所属的组, 一般为文件所有者所属的组.

    如果是一个可执行文件, 那么在执行时, 一般该文件只拥有调用该文件的用户具有的权限.

    而setuid, setgid 可以来改变这种设置.

    setuid: 设置使文件在执行阶段具有文件所有者的权限.

    典型的文件是 /usr/bin/passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权

    限, 从而可以更改用户的密码.

     

    setgid: 该权限只对目录有效.

    目录被设置该位后, 任何用户在此目录下创建的文件都具有和该目录所属的组相同的组.

     

    sticky bit: 该位可以理解为防删除位. 一个文件是否可以被某用户删除, 主要取决于

    该文件所属的组是否对该文件具有写权限. 如果没有写权限, 则这个目录下的所有文件都不能被删除, 同时也不能添加新的文件.

    如果希望用户能够添加文件但同时不能删除文件, 则可以对文件使用sticky bit位.

    设置该位后, 就算用户对目录具有写权限, 也不能删除该文件.

    下面说一下如何操作这些标志:

    操作这些标志与操作文件权限的命令是一样的, 都是 chmod. 有两种方法来操作,

    1) chmod u+s temp — 为temp文件加上setuid标志. (setuid 只对文件有效)

    chmod g+s tempdir — 为tempdir目录加上setgid标志 (setgid 只对目录有效)

    chmod o+t temp — 为temp文件加上sticky标志 (sticky只对文件有效)

    2) 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如

    4666, 2777等. 这一组八进制数字三位的意义如下,

    abc

    a - setuid位, 如果该位为1, 则表示设置setuid

    b - setgid位, 如果该位为1, 则表示设置setgid

    c - sticky位, 如果该位为1, 则表示设置sticky

    设置完这些标志后, 可以用 ls -l 来查看. 如果有这些标志, 则会在原来的执行标志位置上显示. 如

    rwsrw-r– 表示有setuid标志

    rwxrwsrw- 表示有setgid标志

    rwxrw-rwt 表示有sticky标志

    那么原来的执行标志x到哪里去了呢?

    系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

    这三个权限的数字位可以这么理解

    [root@server3 test]# 1 1 1

    [root@server3 test]# rw s rws rwt

    [root@server3 test]#

    [root@server3 test]# SUID SGID Sticky

    所以,可以得出

    chmod 4777是设sid

    chmod 2777是设置gid

    chmod 1777是设sticky

    常用操作

    找出所有危险的目录(设置目录所有人可读写却没有设置sticky位的目录)

    find / -perm -0007 -type d

    找出所有设置了suid的文件

    find / -perm -4000 -type f

    补充: (angelus) 
    SGID位,文件也是可以被设置为SGID的,比如一个可执行文件为赋予SGID,它就具有所有组的特权,任意存取所有组所能使用的系统资源,复制到拥有

    SGID位目录的文件,只有在复制时加上-p参数,才能保留原来的组群设置

    还有sticky-bit权限,简单说就是文件的其他用户即使有写权限也无法删除.移动

    等,只能被文件所有者删除,移动等

    在系统中典型例子就是/tmp(系统临时文件目录)避免不守法用户恣意乱删其他用户放置的文件

    SUID占用属主x(执行)位,SGID占用组x位,sticky-bit占用其他x位,

    如果该位有x权限,就用小写s,没有就用大写S

    用数值设定特殊权限,需要4位8进制数,第一个表示特殊权限,后三位表示基本权限

    只说第一位8进制代表权限

    0: 不设置特殊权限 
    1: 只设置sticky 
    2 : 只设置SGID 
    3: 只设置SGID和sticky 
    4 : 只设置SUID 
    5 : 只设置SUID和sticky 
    6 : 只设置SUID和SGID 
    7 : 设置3种权限

     
  • 相关阅读:
    《Django By Example》第十二章(终章) 中文 翻译 (个人学习,渣翻)
    《Django By Example》第十一章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第十章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第九章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第八章 中文 翻译 (个人学习,渣翻)
    《Django By Example》第五章 中文 翻译 (个人学习,渣翻)
    我的superui开源后台bootstrap开发框架
    LayoutInflater 总结
    Android屏幕分辨率概念(dp、dip、dpi、sp、px)
    android studio安装问题
  • 原文地址:https://www.cnblogs.com/ihongyan/p/4106710.html
Copyright © 2011-2022 走看看