Linux文件权限与属性

来源:互联网 发布:淘宝怎么修改认证信息 编辑:程序博客网 时间:2024/05/16 07:22
  • 在利用ls -l显示的文件属性中,第一个字段是文件的权限,共十位,第一位是文件类型,接下来三组分别为users group others 的权限,每组有rwx三个权限

对于文件来说

  • read表示能否读到文件内容
  • write表示能否新增、修改、删除文件内容(但不包括删除该文件)
  • execute表示该文件能被系统执行的权限
    具有可执行的权限与具有可执行的程序代码是两回事。文件具有 x 权限,只是具有可执行权限,至于能否执行成功,要看文件内容。

对目录来说

  • read表示读取目录内文件信息的权限,是否能够查询该目录下文件名资料
    对目录来说,r 权限相当于照射到该目录的灯光,对该目录下的文件进行很多操作可以不需要 r 权限,因为你提前知道各文件的位置,但如果无 r 权限,利用Tab键进行自动补全功能也将无法实现。
  • write包括:
    1. 在该目录下新增文件与目录的权限
    2. 删除已建立的文件与目录的权限(不论该文件权限是什么,在Linux中,目录本质上也是一种文件)
    3. 将已存在的文件或目录进行更名
    4. 移动该目录下的文件或目录(包括复制该目录的权限)
      复制或移动到其他目录需要只需要本目录的 x 权限,目标目录的 wx 权限

如果 testing 目录权限为744,所有者为root,那么对于一般使用者simon来说只有read权限无execute权限,如果目录testing内部存在777所有者为simon的文件test
在testing位置执行ls -l
将出现?????????? ?test
这时因为该目录无x权限,只有read权限,能读取到文件名,但其他信息无法读取

  • 通常如果你想读一个文件的话,首先你要有这个文件所在目录的 x 权限才行,所以如果你想开放某个目录,至少要让其拥有 rx 这两个权限,但 w 权限不可随便给
  • execute权限包括:
    进入该目录使之成为工作目录的权限。

umask

  • 新建一个文件或目录,其属性与umask有关,umask就是指定当前用户在建立文件或目录时的属性值。
  • 不同用户具有不同umask。root用户的umask会去掉比较多的属性值,022,而一般身份用户umask为002;这是因为root身份建立的文件比较敏感,保护措施也较多
  • 默认权限的属性上,文件与 目录是不同的(此属性非umask值,设定的umsk会在默认属性上再做删减)
    1. 对文件来说,默认没有可执行权限,因此默认属性值为:
      -rw-rw-rw- (666)
    2. 对目录来说,x关系到是否可以进入目录,因此默认所有权限开放,即:
      -rwx-rwx-rwx- (777)
  • umask制定的是“ 该默认属性值需要减掉的权限 ”,因此,若umask值为022,user并没有被减掉,group和others均被减去了 w 权限,所以,当用户:
    1. 建立文件时,权限值为:-rw-r–r–;
    2. 建立目录时,权限值为:-drwxr-xr-x-;
  • 进行属性值计算时,最好用rwx符号进行加减,而不要使用数字进行,如6-3=3会出现错误,本来无x权限,减操作之后x出现。

隐藏属性

  • chattr 设置隐藏属性
    1. i 属性,无法重命名,删除,设置连接,也无法写入或新增数据,即使root身份也不行。可以通过-i来还原。
    2. a 属性,这个文件将只能增加数据,而不能删除,只有root可以,如登陆文件可以设置a属性。
  • lsattr : 查看隐藏属性

文件特殊权限

  • SUID -s权限(s位置在user位则为SUID,在group位则为SGID)
    1. 更改密码需要使用/usr/bin/passwd指令,该指令会修改保存密码的文件即/etc/shadow文件,shadow文件权限为-r——–,只有root身份才可以“强制”修改,而passwd文件权限为-r-s–x–x。此 s 权限即为SUID。正常来说,一般用户身份也可修改自己的密码,但shadow文件只有root能修改,就是因为passed的 s 权限,会让当前用户暂时拥有此文件的拥有者身份,set User ID,而passwd的user为root,所以才能操作shadow文件。
    2. SUID只适用于二进制文件,(binary file)。不能用在批处理文件(shell脚本文件)上,因为shell脚本只是是将很多二进制文件调进来执行而已,所以SUID权限,还要看shell调用进来的二进制文件的本身属性,而不是shell脚本本身。
    3. SUID 对目录无效
  • SGID -s权限
    1. SGID可用于文件或目录,有不同效果
    2. 文件:如果SGID设置在二进制文件上,无论用户是谁,执行该文件时,它的有效用户组(effective group)将变为该文件的用户组拥有者(group id)
    3. 目录:如果SGID设立的是在A目录,那么无论当前用户是谁,在A目录下建立的目录或文件的用户组都为A用户组,而不是当前用户组。
  • Sticky Bit (SBit) -t 权限
    只针对目录有效,如果一个目录具有SBit,则当用户在该目录下新建目录或文件时,只有文件拥有者与root有权删除。即使其他用户拥有该目录的 w 与 x 权限,也无法删除
  • 可通过chown 7ugo filename来更改增加文件或目录的SUID\SGID\SBit权限
    SUID:4
    SGID:2
    SBit:1
  • s 权限位在user 或group的 x 位上,t 权限位在others的 x 位上
    若此位原先有x权限,则 s 或 t 覆盖掉 x ,且为小写
    若此为原先无x权限,则显示为大写的S或T