Linux中修改demo.c文件的权限
一、文件/目录权限三剑客
1️⃣ chmod ------ 改权限(读/写/执行)
bash
chmod 644 file.txt # rw-r--r--
chmod 755 script.sh # rwxr-xr-x
chmod +x script.sh # 加执行权限
chmod -R 755 dir/ # 递归改目录
| 数字 | 含义 |
|---|---|
| 7 | rwx |
| 6 | rw- |
| 5 | r-x |
| 4 | r-- |

举例

2️⃣ chown ------ 改所有者(谁的文件)
bash
chown user file.txt
chown user:group file.txt
chown -R user:group dir/
⚠️ 改别人文件需要
sudo
3️⃣ chgrp ------ 只改所属组
bash
chgrp devs file.txt
chgrp -R devs dir/
二、查看权限(诊断用)
| 命令 | 作用 |
|---|---|
ls -l |
查看权限/所有者/组 |
ls -la |
包含隐藏文件 |
ls -ld dir/ |
只看目录本身权限 |
stat file |
查看详细权限(含 inode) |
bash
ls -l file.txt
# -rw-r--r-- 1 alice devs 1024 Jan 1 10:00 file.txt

三、sudo 系列(提权)
| 命令 | 作用 |
|---|---|
sudo cmd |
以 root 执行一次 |
sudo -i |
切换到 root shell |
sudo su |
切到 root(不加载环境) |
sudo -u user cmd |
以指定用户执行 |
sudo !! |
用 sudo 重跑上一条命令 |
四、ACL 权限(比 chmod 更细粒度)
当
chmod不够用(比如要给特定用户单独权限)时用 ACL
setfacl / getfacl
bash
# 给用户单独加权限
setfacl -m u:alice:rwx file.txt
# 给组加权限
setfacl -m g:devs:rx dir/
# 查看 ACL
getfacl file.txt
# 删除 ACL
setfacl -x u:alice file.txt
# 递归
setfacl -R -m u:alice:rwx dir/
五、特殊权限位(高级)
1️⃣ SUID(以文件所有者身份执行)
bash
chmod u+s /usr/bin/passwd
# 或
chmod 4755 file
典型:
passwd命令需要改/etc/shadow,普通用户靠 SUID 提权
2️⃣ SGID(目录继承组)
bash
chmod g+s dir/
# 或
chmod 2775 dir/
新建文件自动继承目录的组
3️⃣ Sticky Bit(目录防删)
bash
chmod +t /tmp
# 或
chmod 1777 /tmp
/tmp里只能删自己的文件
六、umask(默认权限)
bash
umask # 查看当前 umask
umask 022 # 设置(默认 644/755)
| umask | 文件默认 | 目录默认 |
|---|---|---|
| 022 | 644 | 755 |
| 002 | 664 | 775 |
七、属性锁定(防删/防改)
chattr / lsattr
bash
chattr +i file.txt # 不可修改/删除(连 root 都不行)
chattr +a file.txt # 只能追加
chattr -i file.txt # 解锁
lsattr file.txt # 查看属性
⚠️ 需要
sudo,ext 文件系统专用
八、sudo 权限管理(/etc/sudoers)
bash
visudo # 安全编辑 sudoers
示例:
bash
alice ALL=(ALL) NOPASSWD: /usr/bin/apt
九、用户/组管理(权限的源头)
| 命令 | 作用 |
|---|---|
whoami |
当前用户 |
id |
用户+组信息 |
groups |
所属组 |
adduser user |
创建用户 |
deluser user |
删除用户 |
usermod -aG sudo user |
加 sudo 权限 |
groupadd devs |
创建组 |
gpasswd -a user devs |
加用户到组 |
十、排查权限问题的标准流程
bash
# 1. 看文件权限
ls -l file
# 2. 看 ACL
getfacl file
# 3. 看文件属性
lsattr file
# 4. 看当前用户
whoami && id
# 5. 看父目录权限(关键!)
namei -l /path/to/file
⚠️ 访问文件需要每一级目录都有
x权限
十一、速查表(打印贴墙上)
| 场景 | 命令 |
|---|---|
| 改权限 | chmod |
| 改所有者 | chown |
| 改组 | chgrp |
| 给特定用户权限 | setfacl |
| 锁定文件 | chattr +i |
| 提权执行 | sudo |
| 看权限 | ls -l |
| 看 ACL | getfacl |
| 看属性 | lsattr |
| 目录防删 | chmod +t |