Linux文件权限学习感悟与笔记

发布时间 2023-10-31 12:57:07作者: 鬖千

1.权限概述

权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中的每个文件都拥有特定的权限、所属用户及所属组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样操作。

基本权限UGO

Linux中权限基于UGO模型进行控制
u:代表user(用户)
g:代表group(组)
o:代表other(其他)

查看权限
[root@ctos3 ~]# ls -ld test
drwxr-xr-- 2 root root 6 Mar 9 01:37 test
#讲解:第一个d是文件类型,后面9位3个为一组

#文件权限说明
文件或目录的权限位是由9个权限位来控制的,每三位一组,分别是文件属主(Owner)、用户组(Group)、其他(Other)用户的读、写、执行

其中
r(read)读权限, 可以读取文件内容,可以列出目录内容 用数字表示为4
w(write)写权限, 可以修改文件内容,可以在目录中创建删除文件 用数字表示为2
x(excute)执行权限,可以作为命令执行,可以访问目录内容 用数字表示为1
- 没有权限, 用数字表示为0

2.修改文件所属用户、所属组

使用chown命令改变文件/目录的所属用户
修改格式:
chown 用户 文件名/目录名

#例子
将test.txt的所属用户从root更改为demo用户
[root@ctos3 ~]# ls -l test.txt
-rw-r--r-- 1 root root 0 Mar 9 01:36 test.txt
[root@ctos3 ~]# chown demo test.txt #更改
[root@ctos3 ~]# ls -l test.txt
-rw-r--r-- 1 demo root 0 Mar 9 01:36 test.txt

#参数介绍
-R 参数递归的修改目录下的所有文件的所属用户

#2.2.使用chgrp改变文件/目录的所属组
命令格式
chgrp 用户 文件/目录名

#例子:
[root@ctos3 ~]# chgrp demo /test/
[root@ctos3 ~]# ls -ld /test/
drwxr-xr-x 3 demo demo 16 Mar 9 01:55 /test/
#注意点:一般都是用chown修改用户和组的了 格式chown -R 用户.组 + 文件

#2.3.使用chmod命令修改文件/目录的权限
命令格式
chmod +模式 +文件

模式为如下格式:
1.u、g、o、分别代表用户、组和其他
2.a可以代指ugo
3.+、-代表加入或删除对应权限
4.r、w、x代表三种权限

#示例
chmod u+rw test.txt #给所属用户权限位添加读写权限
chmod g+rw test.txt #给所属组权限位添加读写权限
chmod o+rw test.txt #给其他用户权限位添加读写权限
chmod u=rw test.txt #设置所属用户权限位的权限位读写
chmod a-x test.txt #所有权限为去掉执行权限

#修改权限2
命令chmod也支持以数字方式修改权限,三个权限分别由三个数字表示:
r=4
w=2
x=1

使用数字表示权限时,每组权限分别对应数字之和:
rw=4+2=6
rwx=4+2+1=7
r-x=4+1=5

3基本权限ACL

命令:setfacl -m u:alice:rw /home/test.txt (设置alice用户对文件具有读写的权限)

解释: 命令 设置 用户或组 :用户名:权限 文件对象

UGO与ACL区别

ACL文件权限管理: 设置不同用户,不同的基本权限(r、w、x)。对象数量不同。
UGO设置基本权限: 只能一个用户,一个组和其他人

4.高级权限

 

高级权限:suid sgid sticky
suid:普通用户登陆对于有些文件没有查看权限或者某些命令没有执行命令,例如普通用户不能查看root用户家目录下内容,也不能用passwd对其他文件进行修改,使用suid可以针对单个命令对于普通用户提权限。
suid命令格式:chmod u+s 命令 作用:单独提高一个命令权限,针对所有普通用户

sgid:该命令针对目录,使目录下文件都能集成目录的属组,就是该目录下创建所有文件或者目录都和该目录属组是一个
sgid命令格式:chmod g+s 目录 作用:使目录下所有内容继承该目录的属组

ticky:该权限是用户只能删除自己文件,不能删除其他人文件
使用格式:chmod o+t 目录名称

5.查看和修改文件属性命令lsattr,chattr

lsattr:显示文件属性
chattr:修改文件属性

参数:
-a:只能追加内容,
-i:不能被修改
+a :(append)只能追加内容,如echo “111” >> test.txt
+i :(Immutable:不可改变) 系统不允许对这个文件进行任何的修改
-a:移除a参数
-i:移除i参数