一、基本含义

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是可以的

默认权限对目录本身不生效

Linux下对文件权限的管理相关推荐

  1. linux 文件权限 rwt,Linux下修改文件权限(所有权)

    Linux与Unix是多用户操作系统,所以文件的权限与所有权的实现就显得很有必要:每个文件主要与三组权限打交道,分别是用户(user),用户组(group),其他用户(other) 用户(u)是文件的 ...

  2. linux系统电脑的权限设置,Linux下的文件权限设置修改详解linux操作系统 -电脑资料...

    在linux中更改所属用户组是使用chgrp,更改文件拥有者, chown,更改9个属性, chmod这三种常用的问题,在linxu中这三个命令就是对文件目录权限的控制命令了,下面我来介绍它们的用法与 ...

  3. Linux下更改文件权限

    目录 查看文件权限 修改文件权限 查看文件权限 查看文件权限可以通过ls -l命令查看,如下所示: 如果只想查看某一个文件的权限,可以使用grep,如下所示: 可以发现,每一个文件的第一个字段都是由r ...

  4. linux 下某文件权限为drw -r r--,用数值形式表示该权限,则八进制数为_____,文件类型为______

    原文链接 linux 下某文件权限为drw -r r--,用数值形式表示该权限,则八进制数为_____,文件类型为______ 各权限用十进制数字表示分别是: 值 表示的意义 4 表示文件或者目录的读 ...

  5. Linux下,文件权限,访问控制列表ACL,UGO的补充,文件用户特权suid

    标题Linux下,文件权限,访问控制列表ACL,UGO的补充 一.访问控制列表 ACL access control list 访问 控制 列表 用于限制用户对文件的访问, 二.ACL是对UGO的补充 ...

  6. linux下查看文件的权限,Linux下查看文件权限、修改文件权限的方法

    查看权限命令查看目录的相关权限可以采用命令ls -lD,或者直接用ls -la 如 ls -l www.jb51.net  //这里表示查看www.jb51.net目录 修改权限命令 chmod 77 ...

  7. Linux下,文件权限UGO,ls -l命令的详细查看内容,修改文件文件夹属主属组的命令

    Linux下,用户权限UGO 注意: 1.Linux中的对象都有基本权限UGO,ugo分别表示user,group,other, 2.这里的对象是对文件和文件夹的简写,不是编程语言中的对象概念. 一. ...

  8. linux 下恢复文件权限设置,备份和恢复Linux文件权限的方法

    在Linux系统的使用过程中,有时候我们会通过一些工具备份或恢复文件权限来进行文件日常管理.其实备份和恢复文件权限使用访问控制列表并不难,ACL根据不同的属主和属组在兼容posix的文件系统上定义了单 ...

  9. linux下wxr的权限,Linux下的文件权限

    在学习Linux中,发现Linux系统对文件的权限管理要比Windows很严格. Linux下建立新的组:groupadd 组名 Linux新建立用户:useradd 用户名 创建用户并分组: use ...

最新文章

  1. html自定义datajs,科技常识:HTML5的自定义属性data-*详细介绍和JS操作实例
  2. ITK:清除四边网格
  3. 为什么matlab显示error,【求救】我安装了资源 MATLAB R2012b 后,显示有error……
  4. 2013年3月编程语言排行榜:有毒的Java
  5. 有符号位和无符号位。——int8疑问有感
  6. rs232串口驱动_RS232与RS485在性能上有啥区别和联系?老电工总结分析,一目了然...
  7. Eclipse搭建Cocos2d-x运行环境问题汇总(不含CygWin)
  8. 2020,难过的一年
  9. 系统不做限流,我看你是对中国人口数量有什么误解
  10. 被圈粉的微信小程序纯UI组件colorUi
  11. oc实时渲染的图如何导出_如何高效学习C4D?看完这篇文章你就知道了!
  12. luma3ds7.1按start键开机无法启动payload解决
  13. Matlab三维绘图plot3按二维数组分类区分颜色
  14. 阿里的《基于pai的推荐系统》--摘抄笔记
  15. 赵小楼《天道》《遥远的救世主》深度解析(124)遇事别怕,出事别躲
  16. 循环队列–C语言实现–数据结构
  17. 英语测试题软件,英语试题软件
  18. 数字取证一 证据固定、文件过滤、文件类型、文件签名、文件哈希
  19. datagrip 快捷键
  20. Linux系统安装教程_闲情偶寄

热门文章

  1. 10min快速回顾C++语法(一)语法常识专题
  2. uniApp学习(8)搜索框的创建和自动获取焦点
  3. 智能合约开发——TypeScript 基础(全)
  4. Flutter 组件之AlertDialog、SimpleDialog、showModalBottomSheet、showToast、自定义Dialog
  5. 程序员 神经衰弱 植物神经紊乱 神经官能症 惊恐障碍 惊恐发作 焦虑症
  6. 2023北华大学计算机考研信息汇总
  7. matlab中za是什么意思,大学统计学 计算Za/2的时候 什么情况下直接取样本n 什么情况是要计算df=n-1的...
  8. 基于php校园失物招领,基于全景图的校园失物招领系统
  9. python爬虫能赚钱吗-个人利用Python爬虫技术怎么挣钱-10万被动收入
  10. FMODxUnity联动的声音设计