Linux文件权限管理

Linux文件权限管理

制作人:全心全意

Linux中文件的权限:属主 属组 其它用户

 

查看文件或目录的权限

[root@localhost ~]# ls -al
总用量 48
dr-xr-x---. 14 root root 4096 5月   6 12:05 .
dr-xr-xr-x. 17 root root  253 4月  28 16:35 ..
-rw-------.  1 root root 1891 4月  15 17:48 anaconda-ks.cfg
-rw-------.  1 root root 1114 4月  30 17:08 .bash_history
-rw-r--r--.  1 root root   18 12月 29 2013 .bash_logout
-rw-r--r--.  1 root root  176 12月 29 2013 .bash_profile
-rw-r--r--.  1 root root  176 12月 29 2013 .bashrc
......

第一列是文件类别和权限,这列由10个字符组成,第一个字符表明该文件的类型。接下来的属性中,每3个字符为一组,第2~4个字符代表该文件所有者的权限,第5~7个字符代表给文件所有组的权限,第8~10个字符代表其它用户拥有的权限。

  文件的类型:

    d:目录

    -:普通文件

    l:链接文件

    b:块文件

    c:字符文件

    s:socket文件

    p:管道文件

  权限对于文件:

    r:可读,可使用cat命令查看此文件

    w:可写:可以编辑或删除此文件

    x:可执行,可以提交给内核运行

  权限对于目录:

    r:可以列出此目录的所有文件

    w:可以在此目录中创建文件

    x:可以进入此目录,查看此目录文件的ls -l信息

 

---:(0-000)无权限

--x:(1-001)执行

-w-:(2-010)写

-wx:(3-011)写和执行

r--:(4-100)只读

r-x:(5-101)读和执行

rw-:(6-110)读和写

rwx:(7-111)读写执行

 

第二列代表“连接数”,除了目录文件之外,其它所有文件的连接数都是1,目录文件的连接数是该目录中包含其它目录的总个数+2。

第三列代表该文件的所有人。

第四列代表该文件的所有组。

第五列是该文件的大小

第六列是该文件的创建时间或最近修改时间。

第七列是文件名

 

文件的隐藏属性

在Linux中,文件还有一些隐藏属性,必须使用lsattr来显示,默认情况下,文件的隐藏属性都是没有设置的。

[root@localhost tt]# lsattr 123.txt 
---------------- 123.txt

  

  赋予隐藏属性

    用法:chattr [选项] 文件名

      a:拥有该属性的文件只能在尾部增加数据而不能被删除,即使是root用户

      i:拥有该属性的文件将无法写入、改名、删除。即使是root用户

 

文件权限的设置

  改变文件权限:在Linux中,我们使用u、g、o来分别代表拥有者、拥有组、其它用户,a代表所有,而对应的具体权限则使用rwx的组合来定义,增加权限使用+号,删除权限使用-号,详细权限使用=号

    用法:chmod 权限组合 文件名  

  改变文件的拥有组:chgrp

    用法:chgrp 用户组 文件名

  改变文件的拥有者:chown

    用法:chown 授权组合 文件名

  -R:操作目录时,递归授权

  --reference=文件:参考某文件,修改权限

[root@localhost tt]# chmod u+x 123.txt 
[root@localhost tt]# chmod u=rwx 123.txt 
[root@localhost tt]# chmod u-w 123.txt 
[root@localhost tt]# chmod 755 123.txt

      

[root@localhost tt]# chown zq 123.txt     #设置文件属主为zq
[root@localhost tt]# chown :zq 123.txt     #设置文件属组为zq
[root@localhost tt]# chown root:zq 123.txt    #设置文件属主为root,属组为zq

  

[root@localhost tt]# chgrp root 123.txt

  

文件的特殊属性

  SUID:普通用户可以使用root的身份来执行某个命令。SUID权限只能用于二进制文件,例如/usr/bin/passwd

chmod u+s filename  #给文件添加SUID权限

  SGID:如果二进制文件的用户组权限被设置了s权限,则该文件的用户组中所有的用户都能以该文件的用户身份去运行这个命令。

chmod g+s filename  #给文件添加SGID权限

  Sticky:该权限只能设置在目录上,设置了这种权限的目录,任何用户都可以在该目录中创建或修改文件,但是只有改文件的创建者和root可以删除自己的文件

chmod o+t Dirname    #给目录添加Sticky权限

  

默认权限

在Linux下,定义目录创建的默认权限的值是“umask遮罩777后的权限”,定义文件创建的默认权限是“nmask遮罩666后的权限”。

系统在/etc/profile文件(Centos7)中,定义了一段代码,设置了不同用户的遮罩值。

if [ $UID -gt 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then
    umask 002
else
    umask 022
fi

  从代码中可以看出,UID大于199的用户设置了umask为002,否则为022。root的UID为0,所以umask值对于root用户时022,对于普通用户是002。

  注:文件默认不能具有执行权限,如果遮罩后具有执行权限,则自动+1。

    目录:

      root:755

      普通用户:775

    文件:

      root:644

      普通用户:664

posted @ 2020-05-06 14:25  全心全意_运维  阅读(252)  评论(0编辑  收藏  举报