centos7.3下关于文件权限

知识点小结

权限:

UGO普通权限:  

文件共享时要考虑的权限问题:

1、此文件的属主有何权限

2、属组有何权限

3、其他人有何权限

    查权限:ls  -ld  文件名

    权限值:r可读4    w可写2     x可执行1

    权限中用户的类别:用户自己(属主)user      自家人(属组)group       其他人other

    改权限:chmod   权限  文件名     

    改属主属组:chown  属主:属组   文件名

例:chown  -v  adm.bin   a.txt

       chmod  -v  740  a.txt  或  chmod  -v  u=rwx,g=r,o=---   a.txt

 

FACL权限

ACL:文件访问控制列表。

命令:查 getfacl      设置:setfacl  选项   权限  文件名

例:setfacl  -m  u:tom:r  a.txt

    setfacl  -x   u:tom   a.txt

 

S权限:

suid:让普通用户以命令属主的身份来执行命令。chmod  u+s  文件名

sgid:继承目录的属组。chmod  g+s  目录名

sticky:目录中每个用户只能删除自己的文件。chmod  o+t  目录名

 

attr属性:

作用:防止root用户误删除、误修改。

命令:查lsattr      设置:chattr   +ia  文件名

 

umask权限掩码:

作用:用来控制新建文件和目录的权限。

root的umask值:022      普通用户的umask值:002

 

文件权限算法公式:

新建文件的权限=满权限 - umask权限=666-022=644

新建目录的权限=满权限 - umask权限=777-022=755

umask=031

文件权限=666-(031-011)=646

目录权限=777-031=746

 

知识点较详细解释

文件权限:

目标:

1、如何查看文件基本权限,如何看懂文件权限

2、权限该如何分配

3、ACL权限

4、三个s权限

5、attr隐藏权限

6、umask的作用

 

1、如何查看文件基本权限,如何看懂文件权限

查看:ls   -l   文件名    或  ls   -ld   目录名

例:ls  -ld  /etc    /etc/hosts   权限信息如下

drwxr-xr-x. 138 root root 8192 10月 27 16:56 /etc

-rw-r--r--.   1 root root  158 6月   7 2013 /etc/hosts

权限说明:

rwxr-xr-x由9位代码表示权限,每3个字符为一组。

以上红底色为属主(user)的访问权限,绿底色为属组(group)的访问权限,青底色为其他人(other)的访问权限。

r是读read,数字代号为4     

w是写write,数字代号为2    

x是执行execute,数字代号为1

root root  其中红字的root是文件的属主,蓝字的root是属组。

注:

权限对于文件来说的意义:

读r:用户可以用cat、head等命令查看其文件内容。

写w:用户可以用vim、vi、gedit等软件来修改内容。

执行x:用户可以运行此程序文件。命令和shell脚本必须有x可执行权限才能正常运行。

 

权限对于目录来说的意义:

读r:用户可以用ls命令查看其文件内容。

写w:用户可以用mkdir、rm、rmdir、touch等命令在文件夹中执行创建或删除操作。

执行x:用户可以用cd命令切换到此目录中。

警告:目录同时必须具有rwx权限时,才能正常在目录中执行创建或删除操作。

 

cat文件的权限分析:

文件的属主是root,他的权限是rwx可读可写可执行

文件的属组是root,组中成员的权限是r-x可读可执行,没有写权限 

 

其他人的访问权限是r-x可读可执行,没有写权限 

-------------------------

 

2、权限该如何分配

属主和属组设置的命令:chown   -Rv   属主:属组   文件名     (注:-R是递归修改,-v是显示过程)

权限设置的命令:chmod  -Rv  权限   文件名

 

权限修改中的代号如下:

u是改属主权限     g是改属组权限    o是改其他人的权限    a改所有人的权限

+添加权限      -减掉权限    =重设权限值

r可读4    w可写2    x可执行1    无权限0或-

具体修改参考:

chmod  -v  0   /priv    将权限设置为--- --- ---,即清除所有权限

chmod  -v  u+rw  /priv   给属主添加rw权限

chmod  -v  g+r,o+r  /priv   给属组添加r权限,给其他人添加r权限

chmod  -v  a+wx   /priv   给所有人添加wx权限

chmod  -v  u=rwx,g=rx,o=rx   /priv   给目录指定需要的权限,等同于下面一条命令

chmod  -v  755   /priv   将目录权限设置为755(rwx r-x r-x)

解释:7=4+2+1=rwx    5=4+1=r-x

 

3、FACL权限

FACL:是文件访问控制列表(File  Access  Control  List)的缩写。用来实现在文件上对指定用户一对一精准授权功能的。

特点:1、FACL权限的优先级高于普通的ugo权限。 2、文件默认的FACL权限跟文件的ugo权限是相同的。

命令:

查:getfacl   [选项]   文件名

设置:setfacl   [选项]   权限   文件名

setfacl的选项:

-m  修改或添加acl权限

-x   删除指定的acl权限

-b   删除所有的acl权限

-k   删除默认的acl权限

-d   设置默认的acl权限,通常用于目录,后期在目录中创建的新文件将采用这个acl权限值

-R   递归设置目录及其子目录中的文件的acl权限

 

查的示例:getfacl  /etc/hosts

设置FACL的实例:

setfacl  -m  u:u1:---   /etc/hosts   在hosts文件上给u1用户设置acl权限为---

getfacl   /etc/hosts   查hosts文件的acl权限

setfacl  -m  g:u1:rw   /etc/hosts   在hosts文件上给u1组设置acl权限为rw

setfacl  -x  u:u1   /etc/hosts    在hosts文件上删除u1用户的acl权限

setfacl  -b  /etc/hosts    在hosts文件上删除所有的acl权限

setfacl  -dm   u:u1:rw  /priv   给/priv目录设置默认的acl权限

setfacl  -k  /priv    给/priv目录删除默认(default)的acl权限

setfacl  -Rm   u:u1:r   /priv    递归设置/priv目录的acl权限

getfacl  -R  /priv   递归查询/priv目录的acl权限

setfacl  -Rb  /priv   递归删除/priv目录的acl权限

 

4、三个s权限

s权限也称为super超级权限,是用来提升权限的。包括suid、sgid、sticky bit这3个s权限。

 

suid权限:

功能:suid权限仅用于命令,让普通用户以命令的属主身份执行命令,数字代号是4(u+s)。系统中passwd命令默认就有suid权限(ls  -l  /usr/bin/passwd)。

测试1:查看/bin/cat命令和/etc/shadow的权限,然后切换到u1用户,执行cat  /etc/shadow看是否能读这个文件(不能读)。退出u1用户。

ls  -l  /bin/cat   /etc/shadow

su  -  u1

cat   /etc/shadow   提示“权限不够”

exit

 

测试2:给/bin/cat命令设置suid权限(chmod  -v  u+s  /bin/cat),然后切换到u1用户,执行cat  /etc/shadow看是否能读这个文件(能读)。退出u1用户。最后去掉suid权限(chmod  -v  u-s  /bin/cat)。

chmod  -v  u+s  /bin/cat

su  -  u1

cat   /etc/shadow   能正常查看文件内容,但这样是不安全的

exit

chmod  -v  u-s  /bin/cat

 

sgid权限:

功能:sgid权限通常用于目录,目录中新创建的文件的属组会继承目录的属组。主要应用于做文件共享时。

设置方法:chmod  -v  g+s   目录名

例:删除旧的/priv目录,创建/priv目录,将/priv目录的属组改为adm,并添加sgid权限,other权限改为rwx。然后切换到u1用户,在/priv目录中创建文件a、b,查看a、b文件权限中的属组是谁,最后exit退出u1用户。

rm  -rfv  /priv

mkdir  -pv  /priv

chown  -v  :adm   /priv

chmod  -v  g+s,o+rwx  /priv

su  -  u1

cd  /priv

touch   a   b

ls  -l

exit

 

sticky bit粘滞位(粘着位)权限:

功能:sticky权限通常用于目录,每个用户仅能删除自己的文件,而不能删除别人的文件。通常用于文件共享时。系统中/tmp目录默认就有sticky权限(ls  -ld  /tmp )。

设置方法:chmod  -v  o+t   目录名

 

实例:依次创建u2、u3用户,删除/priv目录,再创建/priv目录,给/priv目录的other权限设置为rwx,并添加sticky权限。切换到u2用户,在/priv目录中创建u2文件,退出u2用户。切换到u3用户,在/priv目录中创建u3文件,尝试删除u2文件(应该无权限删除)。退出u3用户。

useradd  u2

useradd  u3

rm  -rfv  /priv

mkdir  -pv  /priv

chmod  -v  o+rwx,o+t   /priv

su  -  u2

touch  /priv/u2

exit

su  -  u3

touch  /priv/u3

rm  -fv  /priv/u2

exit

chmod  -v  o-t  /priv    给/priv目录去掉sticky权限

su  -  u3

rm  -fv  /priv/u2    能正常删除u2用户的文件/priv/u2

exit

 

5、attr隐含权限(隐藏权限)

attrib:是文件的隐含属性。用来防止root用户误删除或误修改内容。

查:lsattr  -R  文件名

设置:chattr  [-R]  +ia   文件名 

说明:i属性(或i权限)是禁止删除、禁止修改文件。 

      a属性是禁止删除,且允许向文件中追加内容。

例:date  > a.txt

    chattr  +i  a.txt

    lsattr   a.txt

    date  >> a.txt   无权限追加

    rm  -fv  a.txt    无权限删除

    chattr  -i   a.txt   去掉i权限

    chattr  +a  a.txt   添加a权限

    date  >> a.txt    可以正常追加

    rm  -fv  a.txt     无权限删除

    cat   a.txt

 

6、umask的作用

umask是权限掩码,用来控制用户新创建文件的权限。用umask命令查或修改权限掩码。系统中默认情况下,root用户的umask是022,普通用户的是002。

 

权限分析:当umask为022时的权限分析如下。

文件的满权限:666     权限计算:新建文件的权限=满权限  -  umask权限=666-022=644

目录的满权限:777     权限计算:新建目录的权限=满权限  -  umask权限=777-022=755

 

问题:当umask为031时,新建文件、目录的权限分别是多少?

666-031=635  文件权限这样算是错的,正确算法:rw- rw- rw-(666) 减掉 --- -wx  --x(031)得rw- r-- rw-(646)

777-031=746  目录权限这样算是对的

 

注:umask属于环境变量,保存在/etc/profile或/etc/bashrc文件中。

       grep  umask  /etc/profile  /etc/bashrc

 

你可能感兴趣的:(Linux基础)