- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
欢迎来到8455线路检测中心技术小课堂。
一、权限的基本概念
Linux 系统中有三种基本权限:
r (read) - 读取权限
w (write) - 写入权限
x (execute) - 执行权限
权限针对三类用户:
u (user/owner) - 文件所有者
g (group) - 文件所属组
o (others) - 其他用户
a (all) - 所有用户(u+g+o)
-rwxr-xr-x
d rwx r-x r-x
↑ ↑ ↑ ↑
│ │ │ └─ 其他用户权限 (o)
│ │ └─ 所属组权限 (g)
│ └─ 所有者权限 (u)
└─ 文件类型 (-:普通文件, d:目录, l:链接)
| 权限 | 二进制 | 八进制 |
|---|---|---|
| --- | 000 | 0 |
| --x | 001 | 1 |
| -w- | 010 | 2 |
| -wx | 011 | 3 |
| r-- | 100 | 4 |
| r-x | 101 | 5 |
| rw- | 110 | 6 |
| rwx | 111 | 7 |
# 常用权限组合
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod 777 file # rwxrwxrwx(不推荐用于安全文件)
chmod 750 file # rwxr-x---
chmod 600 file # rw-------
chmod 700 script.sh # 确保脚本可执行
# 添加权限
chmod u+x file # 给所有者添加执行权限
chmod g+r file # 给组添加读取权限
chmod o+w file # 给其他用户添加写入权限
chmod a+x file # 给所有用户添加执行权限
chmod +x file # 给所有用户添加执行权限(简写)
# 删除权限
chmod u-w file # 删除所有者的写入权限
chmod g-x file # 删除组的执行权限
chmod o-r file # 删除其他用户的读取权限
chmod a-w file # 删除所有用户的写入权限
# 设置权限
chmod u=rwx file # 设置所有者权限为 rwx
chmod g=rx file # 设置组权限为 r-x
chmod o=r file # 设置其他用户权限为 r--
chmod u=rw,g=r,o= file # 分别设置不同用户的权限
# 修改目录及其所有内容
chmod -R 755 directory/ # 递归修改目录权限
chmod -R u+rwx directory/ # 递归添加所有者权限
chmod -R g-w directory/ # 递归删除组写入权限
# SUID 权限
chmod 4755 file # 设置 SUID 权限
chmod u+s file # 同 4755
ls -l /usr/bin/passwd # 查看 SUID 示例
作用:程序运行时以文件所有者的身份运行
位置:用户权限的执行位,显示为 s
示例:-rwsr-xr-x
# SGID 权限
chmod 2755 file # 设置 SGID
chmod g+s file # 同 2755
chmod 2770 /shared/ # 常用于共享目录
作用: 文件:运行时以文件所属组的身份运行 目录:新创建的文件继承目录的组
位置:组权限的执行位,显示为 s
示例:-rwxr-sr-x
# Sticky Bit
chmod 1777 /tmp # 设置粘滞位
chmod o+t directory # 同 1777
chmod 1755 directory
作用:只有文件所有者才能删除/重命名自己的文件
位置:其他用户的执行位,显示为 t
示例:drwxrwxrwt(/tmp 目录)
常用场景:/tmp, /var/tmp共享目录
# 组合设置
chmod 4755 file # SUID:4 + 755 = 4755
chmod 2755 file # SGID:2 + 755 = 2755
chmod 1755 file # Sticky:1 + 755 = 1755
chmod 6755 file # SUID+SGID:4+2=6 + 755 = 6755
# 更改所有者
chown user file # 更改文件所有者
chown user:group file # 同时更改所有者和组
chown :group file # 只更改组(同 chgrp)
chown user: file # 更改所有者,组设为用户主组
# 递归更改
chown -R user:group directory/ # 递归更改目录
chown -R www-data:www-data /var/www/ # 常见用例
# 保留符号链接
chown -h user link # 更改符号链接本身,而不是目标
# 更改文件所属组
chgrp group file # 更改文件所属组
chgrp -R group directory/ # 递归更改目录
chgrp staff file.txt
umask 决定新创建文件的默认权限
umask # 查看当前 umask
umask 022 # 设置 umask
umask 027
umask -S # 以符号形式显示
目录权限 = 777 - umask
文件权限 = 666 - umask(文件默认无执行权限)
常见 umask 值:
# 默认权限
umask 0022 # 目录:755(rwxr-xr-x), 文件:644(rw-r--r--)
umask 0002 # 目录:775(rwxrwxr-x), 文件:664(rw-rw-r--)
umask 0077 # 目录:700(rwx------), 文件:600(rw-------)
# 用户级设置
vim ~/.bashrc # 添加:umask 022
vim ~/.bash_profile
# 系统级设置
vim /etc/profile
vim /etc/bashrc
# 安全配置文件权限
chmod 600 ~/.ssh/id_rsa # 私钥文件
chmod 644 ~/.ssh/id_rsa.pub # 公钥文件
chmod 700 ~/.ssh/ # SSH 目录
chmod 755 /usr/local/bin/ # 可执行程序目录
chmod 644 /etc/passwd # 敏感配置文件
chmod 600 /etc/shadow # 密码文件
# Web 服务器权限
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
find /var/www/html -type f -exec chmod 644 {} \\\\\\\\;
find /var/www/html -type d -exec chmod 755 {} \\\\\\\\;
# 共享目录设置
mkdir /shared
chown :developers /shared
chmod 2775 /shared # SGID 确保继承组权限
# 确保脚本可执行
chmod +x script.sh
chmod 755 script.sh
# 只有所有者可写
chmod 755 /usr/local/bin/myapp
chmod 644 /etc/myapp.conf
# 特权程序
chmod 4755 /usr/bin/sudo # SUID
# 查看权限详细信息
ls -la file
ls -ld directory/ # 只查看目录权限
stat file # 查看详细权限信息
getfacl file # 查看 ACL 权限
# 查找有特殊权限的文件
find /usr/bin -perm -4000 # 查找 SUID 文件
find /usr/bin -perm -2000 # 查找 SGID 文件
find / -perm -1000 -type d 2>/dev/null # 查找粘滞位目录
# 安装 ACL 支持
sudo apt-get install acl # Debian/Ubuntu
sudo yum install acl # RHEL/CentOS
# 设置 ACL
setfacl -m u:username:rwx file # 给用户添加权限
setfacl -m g:groupname:rx file # 给组添加权限
setfacl -m o::r file # 设置其他用户权限
setfacl -m d:u:username:rwx dir/ # 默认 ACL(对新文件生效)
# 查看 ACL
getfacl file
ls -l file # 有 ACL 的文件会显示 +
# 删除 ACL
setfacl -x u:username file # 删除用户权限
setfacl -b file # 删除所有 ACL
# 创建文件模板
vim /etc/skel/.bashrc
# 添加:umask 022
# 检查系统默认设置
vim /etc/login.defs
# 查看 UMASK 设置
# 权限拒绝错误
ls -l file # 检查权限
id # 检查当前用户和组
groups username # 检查用户所属组
# 文件不可执行
chmod +x script.sh
./script.sh
# 无法写入目录
chmod +w directory/
chown username directory/
# 最小权限原则
1. 文件默认权限 644
2. 目录默认权限 755
3. 敏感文件权限 600
4. 脚本文件权限 755
5. 共享目录使用 SGID
6. 临时目录使用粘滞位
7. 避免不必要的 SUID/SGID
8. 定期检查权限:find / -perm -4000 -o -perm -2000
| 数字 | 权限 | 描述 |
|---|---|---|
| 400 | r-------- | 所有者可读 |
| 644 | rw-r--r-- | 默认文件权限 |
| 755 | rwxr-xr-x | 默认目录/脚本权限 |
| 600 | rw------- | 所有者可读写 |
| 700 | rwx------ | 所有者完全控制 |
| 750 | rwxr-x--- | 所有者和组 |
| 777 | rwxrwxrwx | 所有用户完全控制(危险!) |
| 特殊 | 描述 | |
| ------ | ------ | |
| 4755 | rwsr-xr-x | SUID 权限 |
| 2755 | rwxr-sr-x | SGID 权限 |
| 1755 | rwxr-xr-t | 粘滞位权限 |
| 1777 | rwxrwxrwt | 完全开放的粘滞位目录 |
这个详细的权限管理指南涵盖了 Linux 权限的所有重要方面,包括基本权限、特殊权限、umask 设置和 ACL 控制。理解这些概念对于系统管理和安全配置至关重要。8455线路检测中心官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,8455线路检测中心整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。
更多技术知识,8455线路检测中心期待与你一起探索。
售前咨询
售后咨询
备案咨询
二维码

TOP