Linux下对文件权限的管理

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

2.文件权限的查看
(1)ls -l file 查看文件的属性
(2)ls -ld dir 查看目录的属性
首先建立一个目录test,ls -ld查看该目录的属性
在这里插入图片描述
然后在test目录下建立一个文件file,ls -l查看文件的属性
在这里插入图片描述
(3)ll file =ls -l file
在这里插入图片描述
(4)ll -d dir =ls -ld dir

注:ll是个别名,是对ls -l的缩写

3.文件权限的读取
" - rw- r-- r–. 1 root root 0 Jan 1 09:24 file"
<1>- 文件类型

  "-"  空文件或者文本 
   l 软链接相当于快捷方式  
   s 套接字(socket一个程序对外加刘的接口,通过他可以和程序内部交流) d  目录   
   b( block块设备 dev下的sdb1对U盘文件进行管理,文件所管理的是一个块设备)
   c (字符设备,显示字符的文件就是一个字符设备)

<2> -rw- r-- r-- 文件权限

1.【u】文件的拥有者对文件可以做的
2.【g】文件的组对文件可以做的
3.【o】其他人可以对文件做的

<3>‘1’
对文件:文件的内容被系统记录的次数,也是删除时要删除的次数 即文件的硬链接个数
对目录:目录中子目录的个数
<4> root
文件所有人 即文件是谁建立的
<5>root 文件所有组
<6> 0
对文件:文件大小
对目录:目录中子文件元数据的大小 (matedate可以理解为文件的属性)
一个空目录的默认大小为6
在这里插入图片描述
<7>文件最后一次被更改的时间(文件内容)不包含文件属性被修改的时间
<8>文件名
二、对权限的管理
1.管理属性 改变文件的所有人和所有组

例:先切换到mnt/中即对应的路径下,并建立一个目录test以及五个文件file1-file5
在这里插入图片描述
在test下建立文件file1-file3
在这里插入图片描述
执行watch -n 1 ls -lR /mnt/监控/mnt/下文件及目录属性的变化
在这里插入图片描述
在当前界面重新打开一个shell进行操作
在这里插入图片描述

注:递归显示 ls - lR 显示目录下的所有,所有人所有组的的东西只能超级用户来分配,
谁建立的东西就属于谁,要更改的用户和组必须存在

(1)chown username file|dir 改变文件的用户
在这里插入图片描述
(2)chgrp groupname file|dir 改变文件的组
在这里插入图片描述

注:对目录的操作默认情况下命令的操作只限于本身,其里面的内容是不会改变的
在这里插入图片描述
#####递归 -R 更改目录本身和里面所有内容的命令
(3)chgrp -R groupname dir
在这里插入图片描述
(4)chown -R username dir
在这里插入图片描述
(5)chown username:groupname file|dir 同时改变所有人和所有组用:隔开
在这里插入图片描述

(6)chown -R username:groupname dir

(7)chown 和 chgrp 后都可以加多个文件名同时改变多个文件所有人或所有组
在这里插入图片描述
2.如何改变文件的权限
(1). 对权限的理解
权限分为 r w x 前十位分为三部分

① r :对文件而言r表示是否可以查看文件的内容 cat file
对目录来说表示是否可以查看目录中有什么子文件或者子目录 ls dir

<1> 先去掉文件file1 的所有权限
在这里插入图片描述
<2>超级用户下vim编辑文件,由于没有任何权限所以保存的时候要加!强制退出保存(注: 所有的权限限制对超级用户都是没有用的)在这里插入图片描述
<3>超级用户下cat查看此文件的内容仍然是可以查看的
在这里插入图片描述
<4>切换到student用户下编辑此文件,系统会提示没有权限
在这里插入图片描述
<5>在student用户下查看此文件内容系统仍会提示没有权限,如图
在这里插入图片描述

② w: 对文件来说是是否可以更改i文件的内容
对目录可写就是可以更改目录或目录中文件的元数据,元数据就是属性
<1>首先删除其他文件方便观察,新建一个目录dir,这个目录的所有者对目录有读写和执行的权利,所以可以对文件和目录进行移动(文件或目录的移动是一个重命名的过程)
在这里插入图片描述
<2>切换到student用户下,执行之前的操作系统会提示没有权限
在这里插入图片描述
<3>给目录dir的其他用户写的权限
在这里插入图片描述
<4> 再将file1移动到dir下便可成功(重命名的过程)
在这里插入图片描述
在这里插入图片描述

注:对文件可写不代表可以更改文件的名字,文件的名字是文件的属性,在对文件可写时是不可以更改的

③x: 对文件:是否可以通过文件的名称调用文件内记录的程序
对目录:是否可以进入目录
<1>先赋给文件file1满权限,在文件中写入date命令,并cat查看文件内容
在这里插入图片描述
<2> ./file1 执行此文件
在这里插入图片描述

(2).更改权限的方式
<1>chmod <u|g|o><+|-|=><r|w|x> file|dir
例1. chmod u+x /mnt/file1 (增加文件所有人对文件执行的权限)
在这里插入图片描述
例2. chmod g+w /mnt/file1 (增加文件所有组对文件写的权利)
在这里插入图片描述
例3. chmod o-r file1 (去掉其他用户对此文件读的权利)在这里插入图片描述
例4. chmod u=rx /mnt/file1 赋予mnt/下的file1读和执行的权限
在这里插入图片描述
例5.chmod ugo+x /mnt/fiel2 (给/mnt/file2文件的所有人,所有组和其他人都具有执行此文件的权限)
在这里插入图片描述
例6. chmod u-r,g+w,o=x mnt/file3
在这里插入图片描述
例7. chmod -r /mnt/file4 (去掉每一位对此文件读的权利)
在这里插入图片描述

注:u g o的含义

u 文件的所有人
g 文件所有组
o 其他用户
“+” 表示增加
“-” 表示去掉
“=” 表示设定,文件设定的属性,会覆盖掉之前的权限

相同的可以合并,不同的用","隔开

<2> chmod xxx file (xxx表示三个数字)

r 2^2=4
w 2^1=2
x 2^0=1

按位计算 ,满权限 777 ,无权限000,对应的位置没有字符 * 0 有 字符* 1

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

例1.chmod 777 file1 = chmod ugo=rwx (满权限)
在这里插入图片描述
例2. chomd 740 file2 = chmod u=rwx,g=r,o=- - - file2
在这里插入图片描述

注:
1>.目录有写的权限,读和执行是必须赋予的
2>.没有明确说明的权力就表示回收
3>.默认权力为了安全 
4>. 一个目录的默认权力是755 
5>.文件的默认权限是644 没有执行权限  ,日志文件系统会默认把文件的执行权力回收,这是软件本身决定的
6>.windows系统没有linux系统稳定,前者系统下文件默认有执行权限
7>.不同的文件系统预留的权限是不同的

3.umask

umask 系统建立文件时默认保留的权力
作用: 查看系统的预留权限 , umask 可控,预留越多系统越安全
在这里插入图片描述
1) 使用方式: umask 077 临时设定系统预留权限为077
在这里插入图片描述
在当前shell下建立一个文件,此文件的权限是600(文件会默认回收执行权限,即所有文件的权限每一位自动-1)
在这里插入图片描述
关闭当前shell,新打开一个shell并建立新的文件,其权限会恢复默认
在这里插入图片描述

注: 当前shell关闭umask会还原 系统内存等资源会被回收,对umask的设定写在文件下才会永久被保存

2)永久更改umask
<1> vim /etc/bashrc ###etc/bashrc 是shell的配置文件(改变设备的预留权限)
if [ $UID -gt 199 ] && [ " id -gn" = " id -un " ]; then
umask 002 普通用户的umask
else
umask 022 超级用户的umask
fi

注:<1> -gt表示大于
       <2> id -gn 表示用户所有组
       <3>id -un 表示用户的名字
       <4>if 条件语句的意思是:如果用户的UID大于199,并且该用户的组和用户的名字相同,
         那该用户的umask值就为002,否则其umask值为022
        普通用户的UID大于1000,所以默认umask值为002
        超级用户的UID是0,小于199,所以其默认umask是022

如图所示:1>普通用户的umask为002,超级用户的umask为022
在这里插入图片描述

2>如图,修改之后将普通用户的umask设为070,超级用户的设为077在这里插入图片描述
3>设置完之后:wq保存退出,此时查看超级用户umask没有改变,是因为没有更新文件在这里插入图片描述
4> 程序初始化 source /etc/bashrc 后再次查看发现umask变了
在这里插入图片描述
<2> vim etc/profile 编辑系统配置文件/etc/profile(改变系统预留权限)
if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
umask 002 普通用户的umask
else
umask 022 超级用户的umask
fi

例:1>vim etc/profile 编辑后退出保存
在这里插入图片描述
2>程序未初始化前查看umask
在这里插入图片描述
3> source /etc/profile 程序初始化后查看umask改变
在这里插入图片描述
4>切换到普通用户后查看
在这里插入图片描述

注:程序初始化的作用是让更改立即生效

5>cd /mnt/切换到这个目录下,新建一个文件和目录测试

注:因为设置的普通用户umask为055,所以新建立目录的权限为777-055=722,
即rwx-w- -w-,而文件的权限会默认-1,因为文件默认保留执行权限

在这里插入图片描述
6>切换到超级用户建立文件和目录

注:umask 为042,新建文件和目录的权限为777-042=735 ,即rwx-wxr-x,同样文件的默认权限如果有执行权限x的话会被去掉

在这里插入图片描述

4.特殊权限

1)sticky 粘制位
作用:只针对目录生效,当一个目录上有sticky权限时,在这个目录中的文件只能被文件的所有者删除

用法:
chmod o+t dir
chmod 1777 dir

只针对目录 在公共目录上用,只能对自己的文件删除,不可以删除别人的文件

例:1>先建立用户tom,harry,leo ,他们分别属于组shengchan ,caiwu 和jishu
建立一个公共目录/pub/,任何人都可以在这个目录上读写和执行
在这里插入图片描述
2>watch -n 1 ls -lR /pub/监控这个公共目录的变化
在这里插入图片描述
3>切换到用户tom下,建立一个文件file1
在这里插入图片描述
4>退出tom用户,切换到用户harry下,建立一个文件file2
在这里插入图片描述
5>用户harry删除tom建立的文件file1,这时时可以删除的
在这里插入图片描述
6>对目录/pub/进行以下操作,其他用户位的x被换成了t
在这里插入图片描述
7>再次切换到用户tom,建立新的文件file0,file1
在这里插入图片描述
8>tom删除自己建的文件file1可以删除,但是删除harry建的文件file2 系统会提示:不能删除,操作不被允许
在这里插入图片描述
2)sgid 强制位
作用:只针对二进制可执行文件,当文件上有sgid时任何人执行此文件产生的进程都属于文件的组
对目录:当目录上有sgid权限时任何人在此目录中建立的文件都属于目录的所有组

注:sgid 任何用户在执行这个文件时都属于这个文件的组,用完后身份恢复
只对新的文件有效,已经存在的文件只能通过chgrp -R更改

用法:
chmod g+s file|dir
chmod 2755 file|dir

注:
<1>文件的类型由文件内容决定的,而不是文件名字
<2>进程属于进程的发起者
<3>ps 进程扫描  ax 系统所有  -o 表示 参数的表达方式
    eg:   ps ax -o comm,user,group
    

例:1>此命令观察进程比较直观所以创建一个watch进程,查看/bin/watch的属性
在这里插入图片描述
创建一个watch进程
在这里插入图片描述
2> ps ax -o comm,user,group查看这个进程的用户和组
在这里插入图片描述
可以看到watch进程的用户和组都是root
在这里插入图片描述
3>将/bin/watch文件的组改为student
在这里插入图片描述
4>关闭上一个进程新建一个,查看进程信息,虽然改变了文件的组,但进程中显示的认识执行这个进程的用户的组
在这里插入图片描述
5>切换到tom用户下重复以上操作
在这里插入图片描述
查看进程信息,watch进程的用户和组都是tom的
在这里插入图片描述
6>超级用户下chmod g+s /bin/watch ,用户组位的x变成s
在这里插入图片描述
7>再次创建进程并查看进程信息,此时进程中用户的组变成了/bin/watch 这个文件的组,即就是任何人执行此文件时产生的进程都属于更改文件的组
在这里插入图片描述

3)suid 冒险位

只针对二进制可执行文件
当文件上有suid时任何人执行这个文件中的程序产生的进程都属于文件的所有 人
(任何用户执行这个动作时都是这个文件的所有人,用完后恢复自己的身份)
用法:
chmod u+s file
chmod 4755 /bin/watch

例:1>超级用户下chmod u+s /bin/watch,文件权限用户位的x变成了s
在这里插入图片描述
2>刷新进程并查看进程信息,tom用户创建的进程这时进程的用户变成了root,即tom在执行/bin/watch这个文件时他的身份变成了root,也就是/bin/watch 这个文件的所有人
在这里插入图片描述
注:(在同时执行chmod g+s和chmod u+s时应该是chmod 6755 /bin/watch 因为二者同时存在)

5.权限列表acl

1) 存在的意义
作用让特定的用户对特定的文件拥有特定的权限

普通权限只能满足某一类情况,特定人有特定需求时用权限列表

2) acl列表的查看

<1>ls -l 查看
权限后有+表示权限列表开启
只要设定了权限列表系统显示的就是假的权限,是错误的,应该利用权限列表查看真的权限
在这里插入图片描述

<2>getfacl
getfacl file 查看acl开启后的文件的权限

   file: file   文件名称
   owner: root   文件所有者
   group: root   文件所有组  
   user::rw-       文件所有者的权限
   user:tom:rwx    指定的用户对该文件的权限
   group::---      文件所有组的权限
   group:caiwu:r-x  指定组对文件的权限
   mask::rwx       能赋予用户的最大权力,可改变,见注
   other::---      其他人对文件的权限

在这里插入图片描述

普通用户不能访问超级用户的桌面,做实验是需要在/mnt/下
权限列表虽然空但仍然开着

3 )acl列表的管理
<1>getfacl file
在这里插入图片描述
<2>setfacl -m u:username:rwx file 设定指定用户对文件的权限
在这里插入图片描述
<3>setfacl -m g:groupname:rwx file 指定组对文件的权限
在这里插入图片描述
<4>setfacl -x u:username file 从acl列表中删除该用户
在这里插入图片描述
<5>setfacl -x g:groupname file 从acl列表中删除这个组,即撤销这个组对文件的权限
在这里插入图片描述
<6>setfacl -b file 关闭权限列表
注:在权限列表为空,没有删除权限列表是查看文件的属性,文件的权限后会有+
在这里插入图片描述
setfacl -b file 关闭权限列表后查看文件属性,文件权限后的+消失了
在这里插入图片描述
一个文件的权限列表关闭一次后之前设定的内容会清空
4)mask值
(1)在权限列表中mask表示能生效的权限值
(2) 当使用chmod减小开启acl的文件权限时mask值会发生改变

当文件的权限出现+时,用chmod 改变文件权限时会影响mask权限,此时应该用

例:1.分别指定tom和harry的权限,并ls -l查看文件的权限,原来文件用户组(g)位的权限变成了mask的权限
在这里插入图片描述
2.chmod g-rx file ,去掉g位读和执行的权限后,mask的权限会改变,之前指定的用户拥有的权限系统会提示:有效的只有w即写的权限,没有读和执行的权限
在这里插入图片描述
(3)恢复mask的权限两种方法:

<1>chmod g+rx file ,因为mask的权限一般展示在group原来的位置
在这里插入图片描述
<2>setfacl -m m:rwx file 恢复mask的权限
在这里插入图片描述
5)acl的默认权限设定
(1)acl默认权限只针对目录设定
(2)acl权限只针对设定完成之后新建立的文件或目录生效,而已经存在的文件是不会继承默认权限的
(3)setfacl -m d:u:username:rwx /mnt/ dir,指定用户对目录的默认权限
例:1.新建一个目录test1 ,并在test1目录下建立文件file1 file2 file3
在这里插入图片描述
2.指定tom用户对这个目录有读写和执行的权利,切换到tom用户查看授权之前建立的文件file1 ,系统会提示没有权限
在这里插入图片描述
3.对tom指定权限后超级用户再建立一个新的文件file7
在这里插入图片描述
4.tom用户对新建文件file7进行查看
在这里插入图片描述
(4)setfacl -k /mnt/file 删除acl默认权限的设定
例:超级用户下删除之前设定的默认权限在这里插入图片描述
超级用户新建文件file9
在这里插入图片描述
tom用户查看文件file9失败,但查看删除权限之前建立的file8是可以的
在这里插入图片描述
默认权限对目录本身不生效

猜你喜欢

转载自blog.csdn.net/qq_44224894/article/details/85659380