Linux文件和目录的权限、ACL控制

Linux中的权限分为3种,分别是读(read)、写(write)和执行(execute),在系统中分别记作:r、w和x,或者用数字表示为4、2和1

一、查看文件权限

可以使用ls -al来查看文件的详细信息,如下所示:

1
2
[root@localhost ~]# ls -al /etc/passwd
-rw-r--r--. 1 root root 904 2月 10 10:04 /etc/passwd

第1个字符用来区分是目录还是文件,具体解释:
d:表示一个目录
-:表示一个文件
l:表示一个软连接
b、c:分别表示区块设备和其他的外围设备,是特殊类型的文件
s、p:表示系统的数据结构和管道,通常很少见到
第2~10个字符表示该文件的权限,每三个为一组,前三个表示文件所有者权限,中间三个表示文件所有者所在组的其他用户权限,最后三个表示其他用户权限:
r:读的权限,也可以用数字4表示
w:写的权限,也可以用数字2表示
x:执行的权限,也可以用数字1表示
以上/etc/passwd文件的权限为-rw-r–r–,表示文件所有者具有读、写权限,文件所有者所在组的其他用户具有读的权限,其他用户具有读的权限。

二、新建文件或目录的默认权限

  • 每个用户的home目录的权限默认为:

    1
    2
    3
    [test@localhost home]$ ll
    总用量 4
    drwx------. 4 test test 4096 2月 16 11:41 test
  • 除home目录以外,其他新建文件或目录的默认权限以umask的值为准,如果umask的值为077,那么新建的文件的默认权限为700。使用umask命令可查看umask的值:

    1
    2
    [test@localhost ~]$ umask
    0002
  • 使用umask命令更改权限的默认值:

    1
    2
    3
    4
    5
    [test@localhost ~]$ umask
    0002
    [test@localhost ~]$ umask 777
    [test@localhost ~]$ umask
    0777

三、其他特殊权限

除了r、w、x权限之外,还有其他三种特殊的权限,分别为:SUID(s、S、4)、SGID(s、S、2)、SBIT(t、T、1)

  • SUID
    此权限设置在文件所有者的x权限上,只对二进制文件有效,执行者拥有文件所有者的权限。如果为小写的s,表示在设置s权限前,该文件所有者有x权限;如果为大写的S,表示在设置S权限前,该文件所有者没有x权限。
  • SGID
    此权限设置在文件所属组的x权限上,执行者拥有文件所属组的权限。如果为小写的s,表示在设置s权限前,该文件所属组有x权限;如果为大写的S,表示在设置S权限前,该文件所属组没有x权限。
  • SBIT
    此权限设置在文件其他用户的x权限上,当设置了t权限后,只有root或者文件所有者才能删除此文件。如果为小写的t,表示在设置t权限前,其他用户有x权限;如果为大写的T,表示在设置T权限前,其他用户没有x权限。

    四、chmod命令详解

    此命令用来改变文件或目录的权限
  • 用法:

    1
    2
    3
    chmod [OPTION]... MODE[,MODE]... FILE...
    chmod [OPTION]... OCTAL-MODE FILE...
    chmod [OPTION]... --reference=RFILE FILE...
  • 操作对象:

    u 文件属主权限
    g 同组用户权限
    o 其它用户权限
    a 所有用户(包括以上三种)

  • 权限设定:

    + 增加权限
    - 取消权限
    = 指定操作对象设定权限

  • 权限类别:

    r 读权限
    w 写权限
    x 执行权限
    s 文件属主和组id(见标题三)
    t 只有root或者文件所有者才能删除此文件(见标题三)

  • 数字权限:

    r–>4
    w–>2
    x–>1
    举例:

  • 所有人可读取

    1
    2
    3
    4
    [root@localhost ~]# chmod 777 test
    [root@localhost ~]# chmod ugo+rwx test
    [root@localhost ~]# chmod a+rwx test
    [root@localhost ~]# chmod u=rwx,g=rwx,o=rwx test
  • 收回所有用户的权限

    1
    2
    3
    [root@localhost ~]# chmod 000 test
    [root@localhost ~]# chmod ugo-rwx test
    [root@localhost ~]# chmod a-rwx test
  • 递归给目录里所有的文件或目录赋予权限

    1
    [root@localhost ~]# chmod -R 777 test/

五、chattr命令和lsattr命令的详解

  • lsattr用来查看文件的隐藏属性
    1
    2
    3
    4
    [root@localhost ~]# lsattr
    -------------e- ./install.log.syslog
    -------------e- ./anaconda-ks.cfg
    -------------e- ./install.log

e是ext3,ext4文件系统自带的

1
-R #递归地列出目录以及其下内容的属性
1
-V #显示程序版本
1
-a #列出目录中的所有文件,包括以`.'开头的文件的属性和隐藏的文件
1
-d #以列出其它文件的方式那样列出目录的属性, 而不列出其下的内容
  • chattr用来修改文件的属性

操作符:

操作符’+’用来在文件已有属性的基础上增加选定的属性;
‘-‘用来去掉文件上的选定的属性;而’=’用来指定该文件的唯一属性

属性:

‘A’属性的文件时,它的atime记录不会改变。这可以在笔记本电脑系统中避免某些磁盘I/O处理
‘a’属性的文件只能在添加模式下打开用于写入。只有超级用户可以设置或清除该属性
‘c’属性的文件在磁盘上由内核自动进行压缩处理。从该文件读取时返回的是未压缩的数据. 对该文件的一次写入会在保存它们到磁盘之前进行数据压缩
‘d’属性的文件不能对其运行 dump(8) 程序进行备份
‘i’属性的文件不能进行修改:你既不能删除它。也不能给它重新命名,你不能对该文件创建链接,而且也不能对该文件写入任何数据。只有超级用户可以设置或清除该属性
‘s’属性的文件时,将对其数据块清零并写回到磁盘上
‘S’属性的文件时,修改会同步写入到磁盘上;这与应用到文件子系统上的’sync’挂载选项有相同的效果
`u’属性的文件时,将会保存其内容。这使得用户可以请求恢复被删除的文件

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器