chmod 用数字方法更改权限的问题

回复 收藏
本帖最后由 ChrisLinux 于 2015-12-2 14:04 编辑

当我用 chmod 给一个目录设置特殊权限时发生了下面出乎意料的事:
  1. [root ML]# mkdir a ; ls -dl a
  2. drwxr-xr-x 2 root root 4096 Dec  2 13:20 a
  3. [root ML]# chmod 2755 a && ls -dl a
  4. drwxr-sr-x 2 root root 4096 Dec  2 13:20 a
  5. [root ML]# chmod 1777 a && ls -dl a
  6. drwxrwsrwt 2 root root 4096 Dec  2 13:20 a


本以为可以用数字像更改普通权限那样更改特殊权限结果却不能,而是产生了SGID和SBIT叠加的效果。如果按着习惯做这样的设置会产生某些文件属性上的错误。

解决办法:
  1. [root ML]# ls -dl a
  2. drwxr-sr-x 2 root root 4096 Dec  2 13:20 a
  3. [root ML]# chmod 01777 a && ls -dl a
  4. drwxrwxrwt 2 root root 4096 Dec  2 13:20 a


对,在前面再加一个0就可以避免这种情况。同理,其它级别的权限也可以使用这种方法设置。

更多说明请阅读以下链接:
http://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html
2015-12-02 14:02 举报
已邀请:
0

阿铭 管理员

赞同来自:

不错的分享。

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: