linux-权限管理

发布于:2025-07-14 ⋅ 阅读:(20) ⋅ 点赞:(0)


一、权限的基本类型

读(r) 写(w) 执行(x)
文件 查看内容cat 修改内容vim 作为命令使用
文件夹 列出目录内容ls 添加、删除touch、rm 进入文件夹或搜索cd

二、权限的表示方式

1. 字符形式(rwx)

-rw- r-- r-- root root /etc/passwd

用户 组 其他人 用户 组

第一个位置
- 表示文件的类型是普通的文件
d 表示文件的类型是文件夹 directory

r read 读文件
w write 写文件、修改、删除
x execute 执行权限
- 没有权限

3类人
user —》owner 拥有者
group 组
others 其他人

all 所有人


2. 数字形式

r : 4
w :2
x : 1
- : 0


三、权限管理常用命令

1. chmod

修改权限(读、写、执行)

chmod 任何用户都可以使用

[huang@feng ~]$ vim test.sh 编辑一个test.sh的脚本
echo “hello,world”
[huang@feng ~]$ ll
-rw-r–r–. 1 huang huang 43 5月 8 20:19 test.sh
[huang@feng ~]$ ./test.sh 执行当前文件夹下的test.sh脚本
-bash: ./test.sh: 权限不够

授予test.sh文件可执行权限

[huang@feng ~]$ chmod +x test.sh
[huang@feng ~]$ ll
-rwxr-xr-x. 1 huang huang 43 5月 8 20:19 test.sh
[huang@feng ~]$ ./test.sh 执行脚本
hello,world

使用 + 、- 增加或减少权限,可指定哪一类人(u、g、o)加,不指定则都加

[root@feng lianxi]# chmod o+w zhang.txt
[root@feng lianxi]# ll zhang.txt
-rw-r–rw-. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod a+x zhang.txt
-rwxr-xrwx. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod a-x zhang.txt
-rw-r–rw-. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod +x zhang.txt
-rwxr-xrwx. 1 root root 0 5月 8 20:29 zhang.txt
[root@feng lianxi]# chmod -x zhang.txt

=或数字 赋予对应权限

[root@feng lianxi]# chmod a=rwx zhang.txt
[root@feng lianxi]# chmod 777 zhang.txt
[root@feng lianxi]# ll zhang.txt
-rwxrwxrwx. 1 root root 0 5月 8 20:29 zhang.txt

-R 递归修改

[root@feng lianxi]# chmod -R a=rwx liu
# 将liu目录下的所有的文件或者子文件夹里的文件的权限,全部修改
[root@feng liu]# chmod -R 644 fan.txt


2. chown

修改文件的归属(用户、组)

chown 只能root用户使用

chown user:group file

[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 root root 0 5月 8 20:37 zhang.txt
[root@feng liu]# chown huang:huang zhang.txt
                                       用户   组
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 huang huang 0 5月 8 20:37 zhang.txt
[root@feng liu]# useradd zhang
[root@feng liu]# id zhang # 查看zhang用户的信息 uid和gid
用户id=1001(zhang) 组id=1001(zhang) 组=1001(zhang)
[root@feng liu]# chown zhang zhang.txt
                                       用户
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 zhang huang 0 5月 8 20:37 zhang.txt
[root@feng liu]# chown :root zhang.txt
                                       组
[root@feng liu]# ll
-rwxrwxrwx. 1 root root 0 5月 8 20:37 liu.txt
-rwxrwxrwx. 1 zhang root 0 5月 8 20:37 zhang.txt

-R 递归修改

[root@feng lianxi]# chown -R zhang:zhang liu


3. chgrp

专门用于修改文件或目录的用户组
chgrp group file


四、隐藏权限

1. lsattr

查看文件的隐藏权限
lsattr - list file attributes on a Linux second extended file system

-d List directories like other files, rather than listing their contents.


2. chattr

chattr - change file attributes on a Linux file system

设置文件的隐藏权限
chattr +/-i
chattr +/-a

immutable (i) 不能修改 --》不能删除和增加、修改
append only (a) 只能在文件或者文件夹里追加内容,不能删除

授予不能修改的权限

root@sanchuang:~# mkdir /feng
root@sanchuang:~# ll -d /feng
drwxr-xr-x 2 root root 4096 May 15 19:18 /feng/
root@sanchuang:~# chattr +i /feng
root@sanchuang:~# lsattr /feng
root@sanchuang:~# lsattr -d /feng
----i---------e------- /feng
root@sanchuang:~# cd /feng
root@sanchuang:/feng# mkdir sc
mkdir: cannot create directory ‘sc’: Operation not permitted
root@sanchuang:/feng# rm -rf /feng
rm: cannot remove ‘feng’: Operation not permitted

取消不能修改的权限

root@sanchuang:/feng# chattr -i /feng
root@sanchuang:/feng# lsattr -d /feng
--------------e------- /feng
root@sanchuang:/feng# mkdir sc
root@sanchuang:/feng# ls
sc

授予文件夹可追加的权限

root@sanchuang:/feng# chattr +a changsha
root@sanchuang:/feng# lsattr
-----a--------e------- ./changsha
root@sanchuang:/feng# cd changsha/
root@sanchuang:/feng/changsha# mkdir furong
root@sanchuang:/feng/changsha# ls
furong
root@sanchuang:/feng/changsha# rm -rf furong
rm: cannot remove ‘furong’: Operation not permitted

取消可追加权限

root@sanchuang:/feng# chattr -a changsha
root@sanchuang:/feng# lsattr
--------------e------- ./changsha


五、权限掩码

umask 0022

控制新文件和目录的默认权限
计算方式:默认权限(文件 666,目录 777)减去 umask 值

正常情况下,新建一个文件的默认权限 644
新建一个文件夹的默认权限 755

在内核级别,文件的初始权限为666
文件夹的初始权限为777

[root@hz lianxi]# umask
0022
[root@hz lianxi]# touch test.txt
[root@hz lianxi]# ll
-rw-r–r-- 1 root root 0 7月 7 21:20 test.txt
[root@hz lianxi]# umask 077 # 修改用户的umask值,从而达到设置默认文件或文件夹的权限
[root@hz lianxi]# umask
0077
[root@hz lianxi]# touch test2.txt
[root@hz lianxi]# ll
-rw------- 1 root root 0 7月 7 21:21 test2.txt
-rw-r–r-- 1 root root 0 7月 7 21:20 test.txt


六、特别权限位

1. suid

普通用户在执行命令的时候,会享有root用户的权限,因为linux系统里的所有的命令都是归root用户所有

[root@fengdeyong /]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 32656 5月 15 2022 /usr/bin/passwd

授予mkdir命令suid权限位

[root@fengdeyong sc]# which mkdir
/usr/bin/mkdir
[root@fengdeyong sc]# ll /usr/bin/mkdir
-rwxr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir
[root@fengdeyong sc]# chmod u+s /usr/bin/mkdir
[root@fengdeyong sc]# ll /usr/bin/mkdir
-rwsr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir

取消suid权限位

[root@fengdeyong /]# chmod u-s /usr/bin/mkdir
[root@fengdeyong /]# ll /usr/bin/mkdir
-rwxr-xr-x. 1 root root 69872 4月 21 2024 /usr/bin/mkdir

权限数字授权
chmod mnnn 文件
m为4时,对应suid,2对应sgid,1对应粘滞位,可叠加

[root@rocky shell]# ll get_info_cpu_mem.sh
-rw-r–r-- 1 root root 705 7月 9 17:56 get_info_cpu_mem.sh
[root@rocky shell]# chmod 4755 get_info_cpu_mem.sh
[root@rocky shell]# ll get_info_cpu_mem.sh
-rwsr-xr-x 1 root root 705 7月 9 17:56 get_info_cpu_mem.sh

s 小写的s 表示原来的文件具有可执行权限
S 大写的S 表示原来的文件没有可执行权限

[root@fengdeyong test]# touch hello.sh
[root@fengdeyong test]# ll
-rw-r–r–. 1 root root 0 5月 22 20:55 hello.sh
# 没有可执行权限 -> S
[root@fengdeyong test]# chmod +s hello.sh
[root@fengdeyong test]# ll
-rwSr-Sr–. 1 root root 0 5月 22 20:55 hello.sh
 
[root@fengdeyong test]# chmod u+s hello.sh
[root@fengdeyong test]# ll
-rwSr–r–. 1 root root 0 5月 22 20:55 hello.sh
[root@fengdeyong test]# chmod u-s hello.sh
[root@fengdeyong test]# ll
-rw-r–r–. 1 root root 0 5月 22 20:55 hello.sh
 
# 设置可执行权限 -> s
[root@fengdeyong test]# chmod +x hello.sh
[root@fengdeyong test]# ll
-rwxr-xr-x. 1 root root 0 5月 22 20:55 hello.sh
[root@fengdeyong test]# chmod u+s hello.sh
[root@fengdeyong test]# ll
-rwsr-xr-x. 1 root root 0 5月 22 20:55 hello.sh


2. sgid

此目录下创建的文件会继承该目录的用户组

chmod g+s


3. Sticky Bit

粘滞位(t) --》如果一个文件夹具有粘滞位权限,任何人都只能删除自己创建的文件或者文件夹

root@sanchuang:~# ll -d /tmp
drwxrwxrwt 15 root root 4096 May 22 19:12 /tmp/

/tmp 临时文件夹,任何用户都可以在这个目录下创建文件和文件夹
temporary 临时

授予粘滞位

root@sanchuang:~# ll -d /sky
drwxrwxrwx 2 root root 4096 May 22 20:45 /sky/
root@sanchuang:~# chmod +t /sky
root@sanchuang:~# ll -d /sky
drwxrwxrwt 2 root root 4096 May 22 20:49 /sky/


七、权限委托

sudo

## Sudoers allows particular users to run various commands as
## the root user, without needing the root password.

1. 授权用户

root用户授权一个普通用户zhangmx去实现新建用户和删除用户的权限

  1. 新建用户zhangmx并且设置密码为123456

[root@fengdeyong /]# useradd zhangmx
[root@fengdeyong /]# echo “zhangmx:123456” |chpasswd
[root@fengdeyong /]# su - zhangmx
[zhangmx@fengdeyong ~]$ useradd zhangmx1
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
注销

  1. 进行委托授权
    /etc/sudoers 授权书

授予zhangmx可以执行/usr/sbin/useradd, /usr/sbin/userdel 命令

[root@fengdeyong /]# vim /etc/sudoers
zhangmx ALL=/usr/sbin/useradd, /usr/sbin/userdel

  1. 验证sudo授权

[root@fengdeyong /]# su - zhangmx
上一次登录: 四 5月 15 20:10:31 CST 2025 pts/0 上
[zhangmx@fengdeyong ~]$ useradd zhangmx1
useradd: Permission denied.
useradd:无法锁定 /etc/passwd,请稍后再试。
[zhangmx@fengdeyong ~]$ sudo useradd zhangmx1
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] zhangmx 的密码:
# 第一次使用sudo命令的时候,需要输入普通用户的密码
[zhangmx@fengdeyong ~]$ id zhangmx1
用户id=1033(zhangmx1) 组id=1034(zhangmx1) 组=1034(zhangmx1)
[zhangmx@fengdeyong ~]$ sudo useradd zhangmx2
[zhangmx@fengdeyong ~]$ id zhangmx2
用户id=1034(zhangmx2) 组id=1035(zhangmx2) 组=1035(zhangmx2)
[zhangmx@fengdeyong ~]$ sudo userdel -r zhangmx2

只要是使用sudo去执行命令,会记录日志–》记录到/var/log/secure日志里

[root@fengdeyong /]# tail -20 /var/log/secure


2. 授权组里的用户

新建一个wudang组,新建用户wuji 属于wudang组,设置密码为123456
然后授权wudang组可以执行任何的命令

  1. 新建组wudang

[root@fengdeyong /]# groupadd wudang
[root@fengdeyong /]# useradd -g wudang wuji
[root@fengdeyong /]# id wuji
用户id=1035(wuji) 组id=1028(wudang) 组=1028(wudang)
[root@fengdeyong /]# echo “wuji:123456”|chpasswd

  1. 修改授权书,授予权限

[root@fengdeyong /]# vim /etc/sudoers
## Allows people in group wheel to run all commands
%wudang ALL=(ALL) ALL

  1. 验证授权

[root@fengdeyong /]# su - wuji
[wuji@fengdeyong ~]$ sudo useradd wuji1
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] wuji 的密码:
[wuji@fengdeyong ~]$ id wuji1
用户id=1036(wuji1) 组id=1036(wuji1) 组=1036(wuji1)


3. 使用命令别名授权

命令别名 : 一般是大写的

Cmnd_Alias 将很多命令放到一个别名里,然后授予用户或者组可以使用这个命令别名
Cmnd_Alias NETWORKING = /sbin/route, /sbin/ifconfig, /bin/ping, /sbin/dhclient, /usr/bin/net, /sbin/iptables, /usr/bin/rfcomm, /usr/bin/wvdial, /sbin/iwconfig, /sbin/mii-tool
Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum

授予zhangfan用户,可以使用yum、ip、useradd、userdel、mount命令,别名定义为ZHANGCMD

  1. 新建zhangfan用户,并且设置密码123456

[root@fengdeyong /]# useradd zhangfan
[root@fengdeyong /]# echo “zhangfan:123456”|chpasswd

  1. 定义别名并授权

先用which查找命令存放的地方

Cmnd_Alias ZHANGCMD = /usr/bin/yum, /usr/sbin/ip, /usr/sbin/useradd, /usr/sbin/userdel, /usr/bin/mount
# 授予zhangfan可以使用命令别名ZHANGCMD
zhangfan ALL=ZHANGCMD

  1. 验证

[zhangfan@fengdeyong ~]$ sudo yum install vim -y
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] zhangfan 的密码:
上次元数据过期检查:1:43:52 前,执行于 2025年05月15日 星期四 19时03分34秒。
软件包 vim-enhanced-2:8.2.2637-21.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
[zhangfan@fengdeyong ~]$ sudo useradd zhangfan1
[zhangfan@fengdeyong ~]$ id zhangfan1
用户id=1039(zhangfan1) 组id=1039(zhangfan1) 组=1039(zhangfan1)


八、ACL

access control list

文件权限的访问控制列表: 写明哪些用户哪些组有哪些权限
可以单独对某个人或者组进行限制

对原来的权限进行扩展

1.getfacl

获取文件的访问控制列表权限 --》查看文件的访问控制列表

[root@fengdeyong sc]# getfacl sc
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
group::rwx
other::—


2. setfacl

设置文件的访问控制列表权限
setfacl - set file access control lists

[root@fengdeyong sc]# setfacl -m u:songqingshu:--- /sc

-m 作用是修改 modify
u 用户 user

[root@fengdeyong sc]# getfacl /sc
getfacl: Removing leading ‘/’ from absolute path names
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
user:songqingshu:---
group::rwx
mask::rwx
other::---

验证用户是否还有权限

[root@fengdeyong sc]# su - songqingshu
上一次登录: 四 5月 22 21:09:20 CST 2025 pts/0 上
[songqingshu@fengdeyong ~]$ cd /sc
-bash: cd: /sc: 权限不够

让其他组的某个用户有权限

[root@fengdeyong sc]# groupadd shaolin
[root@fengdeyong sc]# useradd -g shaolin huang1
[root@fengdeyong sc]# id huang1
用户id=1048(huang1) 组id=1040(shaolin) 组=1040(shaolin)
[root@fengdeyong sc]# su - huang1
[huang1@fengdeyong ~]$ cd /sc
-bash: cd: /sc: 权限不够
[root@fengdeyong sc]# setfacl -m u:huang1:rwx /sc
[root@fengdeyong sc]# su - huang1
上一次登录: 四 5月 22 21:18:01 CST 2025 pts/0 上
[huang1@fengdeyong ~]$ cd /sc
[huang1@fengdeyong sc]$ mkdir huang
[huang1@fengdeyong sc]$ ls
huang qingshu wuji
[huang1@fengdeyong sc]$ ll
drwxr-xr-x. 2 huang1 shaolin 6 5月 22 21:19 huang
drwxr-xr-x. 2 songqingshu wudang 6 5月 22 21:09 qingshu
drwxr-xr-x. 2 zhangwuji wudang 6 5月 22 21:08 wuji

对组修改

[root@fengdeyong sc]# groupadd emei
[root@fengdeyong sc]# setfacl -m g:emei:rwx /sc
[root@fengdeyong sc]# getfacl sc
# file: sc
# owner: zhangsanfeng
# group: wudang
user::rwx
user:songqingshu:—
user:huang1:rwx
group::rwx
group:emei:rwx
mask::rwx
other::—

删除组的 ACL 权限

[root@fengdeyong sc]# setfacl -x g:emei /sc

删除所有 ACL 权限

[root@fengdeyong sc]# setfacl -b /sc


总结

拒绝权限高于一切

权限管理是 Linux 系统安全的基石,其核心价值在于平衡安全性与可用性:通过精细的权限控制,既保护系统和数据免受未授权访问,又允许用户高效完成工作。合理的权限策略能显著降低安全风险、提升运维效率


网站公告

今日签到

点亮在社区的每一天
去签到