Linux系统中文件权限的管理

1.文件权限存在的意义
系统最底层安全设定的方法之一
保证文件可以被可用的用户做相应操作

2.文件权限的查看
(1)ls  -l  file 或者  ll      file

(2)ls  -ld  dir 或者 ll  -d  dir


3.文件权限的取读

 - |  rw-rw-r--| 1 |kiosk | kiosk | 0 | Jul 21 09:18 |file
[1]       [2]     [3]    [4]     [5]     [6]          [7]          [8]
 [1]

文件类型

-    l   s   b   
空文件 ,或者文本文件 目录 软连接 socket 套接字 block 块设备 字符设备


[2]
文件的权限
re-|rw-|r--
1   2   3

1 [u]文件拥有者对文件能做什么操作
2 [g] 文件所有组对文件能做什么操作
3 [o] 其他人对文件能做什么操作


[3]
文件硬链接的个数(文件内容被记录的次数)
对目录:目录中子目录的个数
[4]
文件所有人
[5]
文件所有组
[6]
对文件:文件大小
对目录:目录中子元件数据(matedate可理解为文件的属性)大小
[7]
文件的内容被修改的时间
[8]
文件的名称

4.如何改变文件的所有人和所有组
chown|chgrp

chown       username     file|dir (更改文件的所属人)

如下图所示,file文件初始的所属人为root,通过上述命令改为了student


chown   -R  user.group   dir  (更改目录的所属人和所属组)

操作和效果如下图 westos目录的所属人和所属组都被改为student

 chown       user.group   file|dir(更改文件的所属人或所属组)

操作和效果如下图 文件file的所属人和所属组都被改为student

chgrp        group      file (更改文件的所属组)

操作和效果如下图 文件的所属组被改为root


chgrp   -R    group      dir (更改目录的所属组)

操作和效果如下图 目录westos的所属组被改为root


5.如何改变文件的权限
1.对权限的理解

r

对文件:是否可以查看文件中的内容  --->cat file  

对目录:是否可以查看目录中有什么子文件或子目录------>ls  dir

w 对文件:是否可以改变文件里面记录的字符
对目录:是否可以对目录中的子目录或子文件的元数据进行更改
x 对文件:是否可以通过文件名称调用文件内记录程序
对目录:是否可以进入目录


2.更改方式
chmod  <u|g|o><+|-|=><r|w|x> file|dir

命令 解释 演示效果
chmod  u+x   file1 给u加上x的权限
chmod g-r file2  给g减去r的权限
chmod  ug-r     file3  给u g 减去r的权限
chmod  u-r,g+x  file4  给u减去r的,给g加上x的权限
chmod  -r  file5 给所有人减去r 的权限
chmod  o=r-x  file6   给o赋予r  x加不上去  而没有w的权限
 


rwx
r=4
w=2
x=1
7=rwx   6=rw-  5=r-x   4=r--   3=-wx  2=-w-   1=--x   0=---

除了上述命令,还可以通过数字的这种方式改动权限

例如:chmod 777 file1


6.umask

umask 系统建立文件时默认保留的权力
umask 007  ##临时设定系统预留权力为077
永久更改umask
vim /etc/profile    ##系统配置文件

 

source /etc/profile     让更改立即生效
vim /etc/bashrc      ##shall的配置文件
      
source /etc/bash     让更改立即生效

可以更改图中的022数字让系统的默认权限改变

7.特殊权限
<1>.sticky     粘制位
作用:
     只针对目录生效,当一个目录上有sticky权限时
     在这个目录中的文件只能被文件的所有者删除
设定方式:    chmod  o+t  dir 或者 chmod  1xxx  dir

  我们可以先建立根下的目录ww即:/ww  然后再改变 o g u 的权限都为 rwx ,切换成student用户 在/ww下建立文件file ,然后切换成tom用户 可以发现tom用户能成功删除student在/ww下建立的file文件。 如图

  然后在root用户下用命令:chmod o+t /ww 给/ww目录加上sticky权限  再切换成student用户在/ww下建立file文件,然后切换成tom用户去删除它,发现删除失败,如果是student用户删除的话就会删除成功,如下图。这就说明当一个目录上有sticky权限时,这个目录中的文件只有文件的所有者可以删除。


<2>.sgid         强制位
 作用: 
        (1)  对文件:  只针对于二进制可执行文件
                          当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
         (2) 对目录: 当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有设定方式
                  设定方式:   chmod g+s  file|dir 或者chmod 2xxx file|dir

(1)对文件:首先我们先将/bin/watch文件的所有组改为student,然后切换成tom用户,执行一个命令:watch -n 1 date

此命令与watch有关,再用一个监控命令 ps  ax  -o  comm,user,group | grep  watch (与最后一个监控命令在一张图,有利于对比)然后退出。如图

  然后我们用命令 chmod   g+s  /bin/watch 给/bin/watch文件加上sgid权限。切换成tom,去执行 watch -n 1 date命令。如图

 最后我们在用一个监控命令 ps  ax  -o  comm,user,group | grep  watch 监控如图

  由监控的结果可以看出来,在没有给watch文件加sgid权限时,tom执行watch这个动作时的所有人和所有组都是tom,而在watch文件上加上sgid后,我们再用tom执行watch时,它的组变为student,与watch的组一致。这就可以说明当文件上有sgid时任何人执行此文件产生的进程都属于文件的组

(2)对目录:先建立一个/hi目录,将其所有组改为student,并设置权限777.再切换成tom用户,在/hi目录下建立file1文件。然后给目录/hi加上sgid权限。再切换成tom用户,在/hi目录下建立文件file2,如下图所示,我们可以发现没有加sgid权限时建立的file1文件的所有组为tom,而在/hi目录加sgid权限后所建立的文件file2的所有组为student,与/hi目录的所有组一致。这样就可以说明当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有设定方式

<3>. suid  冒险位
  只针对二进制可执行文件
  当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人设定方式
设定方   chmod u+s file  或者   chmod 4xxx file

  我们都知道root用户是超级用户,拥有很大的权力。比如可以删除/etc下的所有文件,而普通用户就不行。我们先将/bin/rm文件的所有人改为tom,然后给/bin/rm加上suid权限,以超级用户的身份去删除/etc,我们会发现删除不了,没有权限。那是因为/bin/rm文件上有suid权限,所以当我们以超级用户的身份去执行rm这个命令时,其实是以/bin/rm文件所有人的身份,即:tom的身份去执行的,tom是普通用户,所以删除不了。也就解释了“ 当文件上有suid时任何人执行这个文件中记的程序产生的进程都属于文件的所有人设定方式”这句话。操作如下图



8.adl权限列表
<1>.作用
    让特定用户对特定的文件拥有特定的权限
<2>.adl列表查看
  

上图中的加号说明adl权限开启         
    查看adl开启的文件权限       getfacl file

   file:file         文件名称
   owener:root 文件拥有着
   user::rw-         文件拥有人的权限
   user::kiosk:rwx 指定用户的权限
   group::r--     文件拥有组的权限
   mask::rwx     赋予用户的最大权力阈值
  other::r--   其他人的权限
   group:root         文件拥有组


<3>.adl列表管理

命令 解释 操作效果
setfacl -m u:username:rwx file    设定username对file拥有rwx的权限  
setfacl -m g:group:rwx file  设定group组成员对file拥有rwx权限
setfacl -x u:username file 从acl列表中删除username
setfacl -b file 关闭file上的adl列表  


<4>.mask值
在权限列表中mask标示能生效的权力值
当用chmod减小开启acl的文件权限时
mask的值会发生改变
chmod  g-w westos
如果要恢复mask的值
setfacl -m m:rw westos

<5>.adl的默认权限设定
adl默认权限只针对目录设定
adl权限只针对设定完成之后建立的文件或目录生效,而已经存在的文件是不会继承默认权限
 

 

猜你喜欢

转载自blog.csdn.net/weixin_42709659/article/details/81194296
今日推荐