Linux 权限

本文深入解析Linux系统的文件权限设置,包括基本权限UGO、ACL高级权限、suid、sgid及sticky位的详细操作与应用场景,帮助读者掌握Linux权限管理的核心技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本权限UGO
文件的基本权限设置,可以赋予某个用户或者租 能够以何种方式 访问某个文件
1.文件类型:Linux系统中一切都是文件,但是每个文件的类型不尽相同,因此Linux系统使用了不同的字符来加以区分

符号描述
-:普通文件
d:目录
l:符号连接文件
b:块文件
c:字符设备文件
p:管道文件

2.linux中权限的设置也就是说UGO设置基本权限
权限对象
属主: u
属组: g
其他人: o
权限类型
读:r 4
写:w 2
执行: x 1
3.linux如何修改权限

命令作用
chmod用于设置文件或目录的权限
chown用于更改文件的属主 属组权限
chgrp用于修改属组权限

eg:使用chown更改一个目录的属主的权限,改为csm(只更改属主权限)

[root@localhost ~]# ll -d /root/huahua
drwxr-xr-x 2 root root 6 9月  26 23:03 /root/huahua
[root@localhost ~]# useradd csm
[root@localhost ~]# chown csm /root/huahua/
[root@localhost ~]# ll -d /root/huahua/
drwxr-xr-x 2 csm root 6 9月  26 23:03 /root/huahua/

使用chown更改一个目录的属组权限,改为qaz组(只更改属组权限)

[root@localhost ~]# groupadd qaz
[root@localhost ~]# chown :qaz  /root/huahua/
[root@localhost ~]# ll -d /root/huahua/
drwxr-xr-x 2 root qaz 6 9月  26 23:03 /root/huahua/

使用chown更改一个目录的属主,属组权限

[root@localhost ~]# chown csm:qaz /root/huahua/
[root@localhost ~]# ll -d /root/huahua/
drwxr-xr-x 2 csm qaz 6 9月  26 23:03 /root/huahua/

使用chgrp更改属组权限

[root@localhost ~]# ll -d /root/huahua/
drwxr-xr-x 2 root root 6 9月  26 23:03 /root/huahua/
[root@localhost ~]# chgrp qaz /root/huahua/
[root@localhost ~]# ll -d /root/huahua/
drwxr-xr-x 2 root qaz 6 9月  26 23:03 /root/huahua/

使用chmod更改文件的权限

[root@localhost ~]# ll -d /root/we
-rw-r--r-- 1 root root 0 9月  26 23:19 /root/we
[root@localhost ~]# chmod 777 /root/we
[root@localhost ~]# ll -d /root/we
-rwxrwxrwx 1 root root 0 9月  26 23:19 /root/we   #更改为777权限rwxrwxrwx

使用chmod更改权限 使用字母也可以更改

[root@localhost ~]# ll -d /root/we
-rwxrwxrwx 1 root root 0 9月  26 23:19 /root/we 文件的权限u:rwx  g:rwx o:rwx 可以使用u-r 去掉它的可读权限
[root@localhost ~]# chmod u-r /root/we
[root@localhost ~]# ll -d /root/we
--wxrwxrwx 1 root root 0 9月  26 23:19 /root/we

4.目录对文件的影响
例如创建一个目录,在目录下创建一个文件,更改文件的权限为777
切换到其他的普通用户可以查看该文件吗?可以删除该用户吗?

[root@localhost /]# mkdir 01
[root@localhost /]# cd /01
[root@localhost 01]# touch 02
[root@localhost 01]# ll
总用量 0
-rw-r--r-- 1 root root 0 9月  27 00:44 02
[root@localhost 01]# chmod 777 01
[root@localhost 01]# ll
总用量 0
-rwxrwxrwx 1 root root 0 9月  27 00:44 02
[alice@localhost 01]$ cat 02
[alice@localhost 01]$ rm -rf /01/02
rm: 无法删除"/01/02": 权限不够

最后的结果就是可以查看,但是不能删除文件,显示权限不够
如何可以更改权限呢,下来说说
可以将目录的权限改为753 ,o就是3,具有wx权限,就是说有写和执行的权限,这就是最目录最基本删除目录下的权限就是具有wx权限,如果还要具有读,还要删除的权限 那就得rwx。

[root@localhost 01]# chmod 753 /01
[root@localhost 01]# ll -d /01
drwxr-x-wx 2 root root 16 9月  27 00:44 /01
[root@localhost 01]# ll -d /01/02
-rwxrwxrwx 1 root root 0 9月  27 00:44 /01/02
[root@localhost 01]# su alice
[alice@localhost 01]$ rm -rf /01/02
[alice@localhost 01]$ cd ..

没有报错,就说明删除了,但是不能查看是否删除,因为目录没有可读的权限。(想要切换到普通用户删除一个目录下的文件目录的权限O最低要有wx权限 而文件权限O最低要有w权限)

5.基本权限ACL
setfacl 命令用于管理文件的 ACL 规则,格式为“setfacl [参数] 文件名称”。文件的 ACL 提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用 setfacl 命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
UGO 设置基本权限: 只能一个用户,一个组和其他人
ACL 设置基本权限: r,w,x
1.ACL的基本设置方法:

[root@localhost qw]# touch test
[root@localhost qw]# ls
test
[root@localhost qw]# ll -d /qw/test
-rw-r--r-- 1 root root 0 9月  30 21:08 /qw/test
[root@localhost qw]# getfacl  /qw/test
getfacl: Removing leading '/' from absolute path names
# file: qw/test
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@localhost qw]# setfacl -m u:alice:rw /qw/test
[root@localhost qw]# getfacl  /qw/test
getfacl: Removing leading '/' from absolute path names
# file: qw/test
# owner: root
# group: root
user::rw-
user:alice:rw-
group::r--
mask::rw-
other::r--

给用户alice增加对文件test的可读 可写权限
2.删除用户的权限
删除用户组中hr的ACL权限

[root@localhost qw]# getfacl /qw/test
getfacl: Removing leading '/' from absolute path names
# file: qw/test
# owner: root
# group: root
user::rw-
user:alice:rw-
group::r--
group:hr:rw-
mask::rw-
other::rw-
[root@localhost qw]# setfacl -x g:hr /qw/test
[root@localhost qw]# getfacl /qw/test
getfacl: Removing leading '/' from absolute path names
# file: qw/test
# owner: root
# group: root
user::rw-
user:alice:rw-
group::r--
mask::rw-
other::rw-

3.删除所有ACL权限

[root@localhost qw]# setfacl -b  /qw/test
[root@localhost qw]# getfacl /qw/test
getfacl: Removing leading '/' from absolute path names
# file: qw/test
# owner: root
# group: root
user::rw-
group::r--
other::rw-

6.高级权限 suid,sgid,sticky
高级权限的类型
suid 4
sgid 2
sticky 1 粘滞位
SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属主的权限
SGID 主要实现如下两种功能:1.让执行者临时拥有属组的权限 2.在某个目录中创建的文件自动继承该目录的用户组
Sticky 特殊权限位可确保用户只能删除自己的文件,而不能删除其他用户的文件
SUID临时给用户权限 例如修改用户自己的密码

[root@localhost qw]# ls -l /bin/cat
-rwxr-sr-x. 1 root root 54080 11月  6 2016 /bin/cat
[root@localhost qw]# ls -l /etc/shadow
-rw-rw---- 1 root root 3237 9月  27 01:30 /etc/shadow
[root@localhost qw]# su alice
[alice@localhost qw]$ cat etc/shadow
cat: etc/shadow: 没有那个文件或目录
[root@localhost qw]# chmod u+s /bin/cat
[root@localhost qw]# ls -l /bin/cat
-rwsr-sr-x. 1 root root 54080 11月  6 2016 /bin/cat
[root@localhost qw]# su alice
[alice@localhost qw]$ cat /etc/shadow
alice:$6$WjmvGnhA$zpdpnw8MPqihkCHqN6iFKbJZp787uH5zF4ipq015Cg/t/yyiPSdUvx.oKvcljs100a  
[alice@localhost qw]$ passwd
更改用户 alice 的密码 。
为 alice 更改 STRESS 密码。
(当前)UNIX 密码:

sgid 新建文件继承目录属组 (针对目录)

[root@localhost qw]# mkdir /home/exe
[root@localhost qw]# chgrp zsm /home/exe
[root@localhost qw]# chmod g+s /home/exe
[root@localhost qw]# ll -d /home/exe
drwxr-sr-x 2 root zsm 6 9月  30 22:02 /home/exe
[root@localhost qw]# touch /home/exe/file
[root@localhost qw]# ll /home/exe/file
-rw-r--r-- 1 root zsm 0 9月  30 22:03 /home/exe/file

如上所示,在home下创建exe目录,给目录更改属组权限,继续给属组附有特殊权限g+s,在目录exe下创建文件file,则文件file继承目录的属组权限zsm 所以sgid权限是目录下创建文件,文件继承目录的属组权限

sticky 用户只能删除自己的文件

[root@localhost qw]# mkdir /home/dir3
[root@localhost qw]# chmod 777 /home/dir3
[root@localhost qw]# su alice
[alice@localhost qw]$ cd /home/dir3
[alice@localhost dir3]$ mkdir 789
[root@localhost /]# useradd zsmz
[root@localhost /]# su zsmz
[zsmz@localhost /]$ cd
[zsmz@localhost ~]$ cd /home/dir3
[zsmz@localhost dir3]$ ls
789
[zsmz@localhost dir3]$ rm -rf 789
[zsmz@localhost dir3]$ ls

用户zsmz可以删除用户alice创建的目录

[root@localhost dir3]# chmod o+t /home/dir3  给目录设置特殊权限sticky
[root@localhost dir3]# ll -d /home/dir3
drwxrwxrwt 2 root root 6 9月  30 22:13 /home/dir3
[root@localhost dir3]# su alice
[alice@localhost dir3]$ cd /home/dir3
[alice@localhost dir3]$ mkdir 456
[zsmz@localhost dir3]$ cd /home/dir3
[zsmz@localhost dir3]$ ls
456
[zsmz@localhost dir3]$ rm -rf 456
rm: 无法删除"456": 不允许的操作

如上所示,给目录设置了特殊权限sticky,用户alice在/home/dir3下创建目录456,切换用户zsmz,无法删除用户alice创建的目录456,这就是特殊权限sticky的作用,只能删除自己的文件,。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值