Linux文件权限

2016/05/08 工具配置

常规文件权限

user group others
rwx rwx rwx

修改文件权限

给用户添加执行权限

chmod u+x filename

用户权限掩码umask

umask命令用来设置新文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。

umask [选项] [掩码]
  • 选项:
    • -S 显示当前掩码
  • 掩码计算权限:
    • 对于文件来说,权限最大值是6(系统不允许文件创建时就赋予可执行权限,需要手工通过chmod命令添加权限);
    • 对于目录来说,权限最大值是7;
    • 默认文件(夹)的权限可以如下计算:
      • 文件:666-umask,负值赋0
      • 文件夹:777-umask
      • 如umask为002,则默认新建文件权限为666-002=664,默认文件夹权限为777-002=775

特殊文件权限

从文件角度看

每个文件都有用户ID(UID)和组ID(GID)。如果该文件是一个可执行文件,一般该文件只拥有调用该文件的UID具有的权限。但是我们可以通过setuid、setgid来改变这种设置。

  • setuid: 该位是让普通用户可以以root用户的角色运行只有root用户才能运行的可执行文件。
  • setgid: 该位只对目录有效,表示任何用户在此目录下创建的文件都具有和该目录所属的组相同的组。
  • sticky bit: 该位可以理解为防删除位。w权限表示可以新建也可以删除目录中的文件。而sticky bit位则表示即使有写的权限也无法删除该文件(达到可新建但不可删除的效果)。

从进程角度看

每个进程有两个用户ID:UID和有效用户ID(EUID),后者存在的目的是方便资源访问:它使得运行程序的用户拥有该程序的有效用户的权限。 如/bin/su,程序的所有者是root,当任何普通用户运行su程序时,由于setuid标志位的存在,其有效用户就是改程序的所有者root。(注:有效用户为root的进程称为特权进程。)

特殊权限显示与修改

显示

  • rwsrw-r– 表示有setuid标志
  • rwxrwsrw- 表示有setgid标志
  • rwxrw-rwt 表示有sticky标志

原来的执行标志x到哪里去了呢? 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)

修改

  • 方法一 chmod u+s temp – 为temp文件加上setuid标志. (setuid 只对文件有效) chmod g+s tempdir – 为tempdir目录加上setgid标志 (setgid 只对目录有效) chmod o+t temp – 为temp文件加上sticky标志 (sticky只对文件有效)

  • 方法二 采用八进制方式. 对一般文件通过三组八进制数字来置标志, 如 666, 777, 644等. 如果设置这些特殊标志, 则在这组数字之外外加一组八进制数字. 如 4666, 2777等. 这一组八进制数字三位的意义如下: abc a - setuid位, 如果该位为1, 则表示设置setuid 4— b - setgid位, 如果该位为1, 则表示设置setgid 2— c - sticky位, 如果该位为1, 则表示设置sticky 1—

参考博客

linux权限补充:rwt rwT rws rwS 特殊权限

Search

    Post Directory