Centos7-文件权限管理,权限对文件和目录的影响

文件的基本权限

权限的作用
通过对文件设定权限可以达到以下三种访问限制权限:
只允许用户自己访问;
允许一个预先指定的用户组中的用户访问;
允许系统中的任何用户访问。

查看权限

[root@localhost ~]# ll /etc/passwd
-rw-r–r--. 1 root root 885 9月 20 17:33 /etc/passwd
文件权限基本解释:
-rw-r–r--. 1 root root 885 9月 20 17:33 /etc/passwd
在这里插入图片描述

其中:文件类型,可以为p、d、l、s、c、b和 –
p表示命名管道文件
d表示目录文件
l表示符号连接文件
-表示普通文件
s表示socket套接口文件,比如我们启用mysql时,会产生一个mysql.sock文件
c表示字符设备文件,例: 虚拟控制台 或tty0
b表示块设备文件 例: sda, cdrom

例如
[root@localhost ~]# ll /dev/sda /dev/cdrom /etc/passwd /dev/tty0
lrwxrwxrwx. 1 root root 3 10月 4 14:26 /dev/cdrom -> sr0
brw-rw----. 1 root disk 8, 0 10月 4 14:26 /dev/sda
crw–w----. 1 root tty 4, 0 10月 4 14:26 /dev/tty0
-rw-r–r--. 1 root root 885 9月 20 17:33 /etc/passwd
在这里插入图片描述

权限说明

对于文件来说:
r:读
w:写
x:执行
对于目录来说:
r:读(看到目录里面有什么) ls
w:在目录里面建文件,删除,移动 touch mkdir rm mv cp
x:进入 cd cat

文件拥有者

UGO:所有者–用户组–其它用户
所有者: 就是创建文件的用户,这个用户拥有对它所创建的文件的一切权限,所有者可以允许其所在的用户组可以访问所有者的文件。
用户组: 用户组是具有相同特征用户的逻辑集合,有时我们需要让多个用户具有相同的权限,比如查看、修改某一个文件的权限,一种方法是分别对多个用户进行文件访问授权,如果有10个用户的话,就需要授权10次,显然这种方法不太合理;另一种方法是建立一个组,让这个组具有查看、修改此文件的权限,然后将所有需要访问此文件的用户放入这个组中,那么所有用户就具有了和组一样的权限。这就是用户组。
其它用户:系统内的其他所有者用户就是other用户类

举例说明

常见几种文件权限组成

  • rwx — ---:文件所有者对文件具有读取、写入和执行的权限。
  • rwx r-- r–: 文件所有者具有读、写与执行的权限,用户组里用户及其他用户则具有读取的权限
  • rw- rw- r-x:文件所有者与同组用户对文件具有读写的权限,而其他用户仅具有读取和执行的权限。
    drwx–x—x: 目录所有者具有读写与进入目录的权限,其他用户近能进入该目录,却无法读取任何数据。
    drwx------: 除了目录所有者具有完整的权限之外,其他用户对该目录完全没有任何权限。
    举例如下:
    每个用户都拥有自己的专属目录,通常放置/home下
    [root@localhost ~]# ll /home/
    总用量 0
    drwx------. 2 alon alon 83 9月 21 05:11 alon
    注: [rwx------]表示目录所有者本身拥有的权限,其它用户是无法进入的。 root可以。
你以什么用户身份登录,那么你创建的文件或目录,自动成为该文件的所属主和组

[root@localhost ~]# su - alon
上一次登录:六 10月 5 00:57:34 CST 2019pts/0 上
[alon@localhost ~]$ touch a.txt
[alon@localhost ~]$ ll a.txt
-rw-rw-r–. 1 alon alon 0 10月 5 00:58 a.txt

更改文件的属主和属组

改变文件的所属关系用到命令:
chown:可以用来改变文件(或目录)的属主
chgrp:可以用来改变文件(或目录)的默认属组
如果你要对目录进行操作,加参数 -R
chown
语法:
chown user:group filename 比如:chown hr:san a.txt 把文件的属主和属组改为hr,san
chown user filename 比如:chown san a.txt 把文件的属主改为san用户
chown :group filename 比如: chown :miao a.txt 把文件的属组改为miao这个组
chown user: filename 比如:chown san: a.txt 自动继承这个用户所有的组
chgrp hr filename 比如: chgrp hr f.txt
-R :递归(目录下的所有内容都更改,否则只修改目录)
例:
[root@localhost ~]# touch {a,b,c}.txt
[root@localhost ~]# ll
总用量 0
-rw-r–r--. 1 root root 0 10月 5 01:00 a.txt
-rw-r–r--. 1 root root 0 10月 5 01:00 b.txt
-rw-r–r--. 1 root root 0 10月 5 01:00 c.txt
[root@localhost ~]# chown alon a.txt
[root@localhost ~]# ll a.txt
-rw-r–r--. 1 alon root 0 10月 5 01:00 a.txt
[root@localhost ~]# chown alon:alon a.txt
[root@localhost ~]# ll
总用量 0
-rw-r–r--. 1 alon alon 0 10月 5 01:00 a.txt
-rw-r–r--. 1 root root 0 10月 5 01:00 b.txt
-rw-r–r--. 1 root root 0 10月 5 01:00 c.txt
[root@localhost ~]# chown :root a.txt
[root@localhost ~]# ll a.txt
-rw-r–r--. 1 alon root 0 10月 5 01:00 a.txt

一个文件只有读的权限,拥有者是否可以写这个文件?

[root@localhost ~]# cd /home/alon/
[root@localhost alon]# ll
总用量 4
-rw-rw-r–. 1 alon alon 8 10月 5 01:05 a.txt
[root@localhost alon]# chmod 000 a.txt
[root@localhost alon]# ll
总用量 4
----------. 1 alon alon 8 10月 5 01:05 a.txt

在另一个终端上,以root身份登录:vim a.txt # 写入aaa , :wq! 保存
[root@localhost ~]# cat /home/alon/a.txt
jfjjdfjlk
文件所有者一定可以写文件。 就像root可以对shadow强制写。 因shadow的拥有者是root

修改权限

使用字符设定
修改权限用的命令:chmod
作用:修改文件,目录的权限
语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名
对谁操作:
u----> 用户user,表示文件或目录的所有者
g---->用户组group,表示文件或目录所属的用户组
o---->其它用户others
a---->所有用户all
操作符:

  • #添加权限 ; - # 减少权限 ; = #直接给定一个权限
    权限:r w x
    例如下在的组合:
    在这里插入图片描述
    例:chmod修改权限
    [root@localhost ~]# touch 1.txt
    [root@localhost ~]# ll 1.txt
    -rw-r–r--. 1 root root 0 10月 5 03:00 1.txt
    [root@localhost ~]# chmod u-w 1.txt
    [root@localhost ~]# ll 1.txt
    -r–r--r–. 1 root root 0 10月 5 03:00 1.txt
    [root@localhost ~]# chmod g+x 1.txt
    [root@localhost ~]# ll
    总用量 0
    -r–r-xr–. 1 root root 0 10月 5 03:00 1.txt
使用八进制(0-7)数字表示权限法

在这里插入图片描述
例1:
互动:rw- 的值是多少? 答: 4+2=6
rwx r-x r-x 的值是多少? 答: rwx=4+2+1=7 ; r-x=4+1=5 rwx r-x r-x=7 5 5
语法:
chmod 755 文件或文件夹名字
chmod a=rwx b.txt 等于 chmod 777 b.txt
在这里插入图片描述

权限对文件和目录的影响

有三种权限可以应用:读取,写入与执行,这些权限对访问文件和目录的影响如下:
在这里插入图片描述

补码

为什么我们创建的文件的权限是644呢?
我们创建文件的默认权限是怎么来的?
umask命令允许你设定文件创建时的缺省模式,对应每一类用户(文件属主、同组用户、其他用户)存在一个相应的umask值中的数字
文件默认权限=666 ,目录默认权限=777
我们一般在/etc/profile、$ [HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
永久生效,编辑用户的配置文件vim .bash_profile

[root@localhost ~]# vim /etc/profile
在这里插入图片描述
注: UID大于199 且用户的组名和用户名一样,那么 umask值为002,否则为022.
注: -gt 在shell中表示大于; id -g 显示用户组ID ,id -gn显示组名。

临时生效: umask 权限补码
[root@localhost ~]# umask 044
[root@localhost ~]# touch ss.txt
[root@localhost ~]# ll ss.txt
-rw–w--w-. 1 root root 0 10月 5 04:26 ss.txt

权限的算法:一般情况是:目录默认权限-umask 值
666-022=644
777-022=755
#这是一个好的记忆方法,但不严谨。

权限科学的计算方法:
1、将默认权限(目录777,文件666)和umask值都转换为2进制
2、对umask取反
3、将默认权限和umask取反后的值做与运算
4、将得到的二进制值再转换8进制,即为权限,

umask 为022
6 6 6 umask 0 2 2
110 110 110 000 010 010 # 转成二进制
111 101 101 # umask取反的值
110 110 110 与 #第二步,默认权限和umask取反后的值做与运算
111 101 101 # umask取反的值
110 100 100
6 4 4 #转成8进制

umask 为033 结果为: 644

6 6 6 umask 0 3 3
110 110 110 000 011 011 # 转成二进制
111 100 100 # umask取反的值
110 110 110 与 #默认权限和umask取反后的值做与运算
111 100 100 # umask取反的值
110 100 100
6 4 4 #转成8进制

文件的特殊权限:suid sgid sticky和文件扩展权限ACL

其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些“特权”.
特殊权限:
7.2.1 文件的特殊权限:suid sgid sticky
1、SUID(set uid设置用户ID):限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变更成程序所有者的权限
2、SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会,继承上级目录的所属组
3、Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位
这3个特殊权限对应的数值为
在这里插入图片描述
SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID属性。比如/usr/bin/passwd文件
在这里插入图片描述

普通用户,没有对shadow文件写入的权限, 但是mk用户使用passwd修改自己密码时,可以修改shadow文件中的内容,这是什么原因?
因为用户执行passwd命令时,权限会提升成root用户,所以可以修改成功。

SGID:

限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了SGID权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限。

Stickybit
限定:只作用于目录
功能:目录下创建的文件只有root、文件创建者、目录所有者才能删除。
例: 系统中的tmp目录就是这样

文件扩展权限ACL

扩展ACL :access control list
设置用户对文件dd.txt拥有的rwx权限 ,用户不属于dd.txt的所属主和组,用户是other。

[root@localhost ~]# setfacl -m u:alon:rwx dd.txt
[root@localhost ~]# getfacl dd.txt 
# file: dd.txt
# owner: root
# group: root
user::rwx
user:alon:rwx
group::---
mask::rwx
other::---

[root@localhost ~]# ll dd.txt 
-rwxrwx---+ 1 root root 0 10月  5 04:18 dd.txt

给目录加扩展权限

[root@localhost ~]# setfacl -m d:u:alon:rwx a
[root@localhost ~]# getfa
getfacl   getfattr  
[root@localhost ~]# getfacl a/
# file: a/
# owner: root
# group: root
user::rwx
group::-wx
other::-wx
default:user::rwx
default:user:alon:rwx
default:group::-wx
default:mask::rwx
default:other::-wx
[root@localhost ~]# touch a/aa.txt
[root@localhost ~]# ll a/aa.txt 
-rw-rw--w-+ 1 root root 0 10月  5 04:40 a/aa.txt

给目录下所有文件都加扩展权限
[root@localhost ~]# setfacl -R -m u:alon:rw -a #-R一定要在-m前面,表示目录下所有文件
[root@localhost ~]# setfacl -x u:alon a/aa.txt # 去掉单个权限
[root@localhost ~]# setfacl -b a/aa.txt # 去掉所有acl权限

创建一个让root都无法删除的文件

发现windows中 有文件删除不了,怎么办? 使用360 强制删除,粉碎文件
那么在Linux下怎么办?

[root@localhost ~]# touch aad.sh
[root@localhost ~]# chattr +i aad.sh 
[root@localhost ~]# rm -rf aad.sh 
rm: 无法删除"aad.sh": 不允许的操作
[root@localhost ~]# lsattr aad.sh 
----i----------- aad.sh
[root@localhost ~]# chattr -i aad.sh 
[root@localhost ~]# lsattr aad.sh 
---------------- aad.sh
这个时候就可以删除了

命令:chattr
参数: a 只能追加内容 ; i 不能被修改
+a: 只能追加内容 如: echo aaa >> hack.sh
+i:即Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
注:immutable [ɪˈmju:təbl] 不可改变的 ; Append [əˈpend] 追加
-i :移除i参数。 -a :移除a参数

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rio520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值