首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >linux常用命令(5)——权限管理命令

linux常用命令(5)——权限管理命令

作者头像
christine-rr
发布2026-01-13 19:26:26
发布2026-01-13 19:26:26
4280
举报
文章被收录于专栏:linux命令linux命令

博客主页:christine-rr-CSDN博客 ​​​​​ ​​ hi,大家好,我是christine-rr ! 今天来分享一下linux常用命令——权限管理

五、权限管理命令

1. chmod : 修改文件 / 目录的权限

Linux 权限分为所有者(user)、所属组(group)、其他用户(others) 三类,每类用户可拥有读(r)、写(w)、执行(x) 三种权限。

(1)权限的数字表示法

格式:chmod [3 位数字] [文件名]

每类权限对应一个数字值,通过组合数字可快速设置权限:

  • r(读):4
  • w(写):2
  • x(执行):1
  • 无权限:0

组合方式:将三类用户的权限值相加,形成 3 位数字组合(如755):

  • 第一位数字:所有者权限
  • 第二位数字:所属组权限
  • 第三位数字:其他用户权限

常见权限组合

  • 777: rwxrwxrwx所有人拥有读、写、执行权限(危险,不建议)
  • 755:rwxr-xr-x所有者全权限,所属组和其他用户可读、执行(常用于脚本、程序)
  • 644:rw-r–r--所有者可读、写,所属组和其他用户只读(常用于普通文件)
  • 700:rwx------仅所有者有全权限(常用于私密文件 / 目录)

示例(数字形式)

代码语言:javascript
复制
chmod 755 script.sh    # 所有者:rwx,组和其他:r-x
chmod 644 document.txt # 所有者:rw-,组和其他:r--
chmod 700 ~/private/   # 仅所有者可访问private目录

数字

权限

rwx

二进制

7

读 + 写 + 执行

rwx

111

6

读 + 写

rw-

110

5

读 + 执行

r-x

101

4

只读

r–

100

3

写 + 执行

-wx

011

2

只写

-w-

010

1

只执行

–x

001

0

000

(2)权限的字母表示法

通过字母指定用户和权限

格式:chmod [用户][操作][权限] 文件名

  • 用户u(所有者)、g(所属组)、o(其他用户)、a(所有用户)
  • 操作+(添加权限)、-(移除权限)、=(设置权限,覆盖原有)
  • 权限r(读)、w(写)、x(执行)

示例(字母形式)

代码语言:javascript
复制
chmod u+x file.sh      # 给所有者添加执行权限
chmod g-rw document.txt # 移除所属组的读、写权限
chmod o=rx temp/       # 给其他用户设置读和执行权限(覆盖原有)
chmod a-w data.csv     # 移除所有用户的写权限(保护文件不被修改)
chmod ug+x,o-r script.py # 同时给所有者和组添加执行权限,移除其他用户的读权限

特殊权限

  • +s:设置 SUID/SGID(执行文件时继承所有者 / 组权限,如passwd命令)
代码语言:javascript
复制
chmod u+s /usr/bin/passwd # 普通用户执行passwd时临时获得root权限
  • +t:粘滞位(仅目录所有者可删除其中文件,如/tmp
代码语言:javascript
复制
chmod +t /shared/ # 防止共享目录中文件被非所有者删除
2. chown :修改文件 / 目录的所有者和所属组

chown(英文全拼:change owner)命令用于设置文件所有者和文件关联组的命令。

格式:chown [所有者][:所属组] 文件名

  • 仅修改所有者:chown 新用户 文件名
  • 仅修改所属组:chown :新组 文件名(或用chgrp 新组 文件名
  • 同时修改所有者和组:chown 新用户:新组 文件名

常用参数

  • -R,–recursive:递归修改目录及其中所有内容的所有者 / 组
  • -v, --verbose: 显示详细操作信息
  • -c, --changes: 只显示实际发生更改的文件
  • -f, --silent, --quiet: 抑制错误信息
  • –reference=文件: 使用参考文件的所有者和组设置
  • -h, --no-dereference: 影响符号链接本身,而不是链接指向的文件
  • –from=当前所有者: 只有当前所有者匹配时才更改

示例

代码语言:javascript
复制
chown alice file.txt      # 将file.txt的所有者改为alice
chown :dev team/          # 将team目录的所属组改为dev组
chown bob:dev project/    # 将project目录的所有者改为bob,所属组改为dev
chown -R root:/var/log    # 递归将/var/log目录及内容的所有者改为root,组改为log组
3. sudo : 以管理员root权限执行命令

普通用户默认无系统级操作权限(如修改系统配置、安装软件),sudo允许授权用户临时使用 root 权限(需输入当前用户密码,默认 5 分钟内无需重复验证)。

常用场景

代码语言:javascript
复制
sudo apt install nginx    # 以root权限安装nginx(Debian/Ubuntu)
sudo systemctl restart sshd  # 重启ssh服务(需root权限)
sudo vim /etc/passwd      # 编辑系统用户配置文件(普通用户无权限)
sudo su                   # 切换到root用户(需sudo权限,谨慎使用)

sudo 配置(/etc/sudoers)

只有在/etc/sudoers文件中被授权的用户才能使用sudo,由 root 用户通过visudo命令编辑(安全的编辑方式,避免语法错误):

代码语言:javascript
复制
sudo visudo  # 打开sudo配置文件

添加授权(例如允许alice用户执行所有 root 命令):

代码语言:javascript
复制
alice  ALL=(ALL:ALL) ALL  # 格式:用户名  主机=(可切换的用户:可切换的组)  允许执行的命令
4. chgrp : 专门修改文件或目录的所属群组

chgrp是修改文件所属组的专用命令,功能类似chown :组名,格式:

代码语言:javascript
复制
chgrp dev file.txt       # 将file.txt的所属组改为dev
chgrp users file1.txt file2.txt file3.txt # 将file1.txt file2.txt file3.txt的所属组改为users
chgrp -R admin docs/     # 递归将docs目录及内容的所属组改为admin
chgrp -v dev file.txt		 #显示详细操作信息
5. 权限管理常见场景
  • 保护敏感文件
代码语言:javascript
复制
chmod 600 ~/.ssh/id_rsa  # 仅自己可读写私钥文件
  • 共享目录设置
代码语言:javascript
复制
chmod 775 /shared/       # 所有者和组有全权限,其他用户只读/执行
chown -R :team /shared/  # 将共享目录所属组设为team,方便团队协作
  • 脚本可执行权限
代码语言:javascript
复制
chmod +x backup.sh       # 给脚本添加执行权限,之后可直接用./backup.sh运行

suid和sgid

SUID 让普通用户临时拥有程序所有者权限,SGID 则让用户在特定目录下创建的文件继承目录的组权限。

6. suid(Set User ID):临时获取程序所有者权限

SUID 是一种文件特殊权限,仅对可执行文件有效。当普通用户执行带有 SUID 权限的程序时,会临时获得该程序所有者(通常是 root)的权限,执行完成后权限自动收回。

核心作用
  • 解决普通用户执行特定高权限操作的需求,比如passwd命令(普通用户需修改自己的密码,而密码文件/etc/shadow仅 root 可写)。
关键命令与案例

操作目标

命令

案例说明

查看文件是否有 SUID 权限

ls -l 文件名

执行ls -l /usr/bin/passwd,输出中-rwsr-xr-x的s在所有者权限位,代表有 SUID。

给文件添加 SUID 权限

chmod u+s 文件名 或 chmod 4755 文件名

给test.sh添加 SUID:chmod u+s test.sh,此时文件权限会显示为-rwsr-xr-x。

移除文件 SUID 权限

chmod u-s 文件名

移除test.sh的 SUID:chmod u-s test.sh,权限会恢复为-rwxr-xr-x。

注意事项

  1. SUID 仅对可执行文件生效,给普通文件(如.txt)加 SUID 无意义。
  2. 谨慎给高权限程序(如bash)加 SUID,可能导致权限泄露,被恶意利用获取 root权限。
7. sgid(Set Group ID):继承目录的组权限

SGID 既可以作用于可执行文件,也可以作用于目录,日常使用中作用于目录的场景更常见。当用户在带有 SGID 权限的目录下创建文件 / 子目录时,新文件 / 子目录的组会自动继承该目录的组,而非创建者的默认组。

核心作用
  • 方便团队协作:比如开发团队共享一个目录,所有人在该目录下创建的文件都属于 “dev” 组,确保团队成员都能访问。
关键命令与案例

操作目标

命令

案例说明

查看目录是否有 SGID 权限

ls -ld 目录名

执行ls -ld /opt/dev,输出中drwxr-sr-x的s在组权限位,代表有 SGID。

给目录添加 SGID 权限

chmod g+s 目录名 或 chmod 2755 目录名

给/opt/dev添加 SGID:chmod g+s /opt/dev,目录权限变为drwxr-sr-x。

移除目录 SGID 权限

chmod g-s 目录名

移除/opt/dev的 SGID:chmod g-s /opt/dev,权限恢复为drwxr-xr-x。

注意事项:

  1. 作用于可执行文件时,用户执行程序会临时获得程序所属组的权限,类似 SUID 但针对 “组”。
  2. 若目录同时设置 SGID 和 “组可写”(g+w),需配合umask确保新文件默认有组写权限(如umask 002),否则协作仍会受影响。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 五、权限管理命令
    • 1. chmod : 修改文件 / 目录的权限
      • (1)权限的数字表示法
      • (2)权限的字母表示法
    • 2. chown :修改文件 / 目录的所有者和所属组
    • 3. sudo : 以管理员root权限执行命令
    • 4. chgrp : 专门修改文件或目录的所属群组
    • 5. 权限管理常见场景
  • suid和sgid
    • 6. suid(Set User ID):临时获取程序所有者权限
      • 核心作用
      • 关键命令与案例
    • 7. sgid(Set Group ID):继承目录的组权限
      • 核心作用
      • 关键命令与案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档