centos7.3下关于文件权限

来源:互联网 发布:linux进入vim 编辑:程序博客网 时间:2024/05/16 11:15
知识点小结
权限:
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

原创粉丝点击