权限
在 Linux 中,文件权限分为 三类用户 和 三种权限:
-
三类用户:
-
Owner(文件所有者)
-
Group(所属用户组)
-
Others(其他用户)
-
-
三种权限:
-
r(read):读权限
-
对文件:读取内容
-
对目录:列出目录内容
-
-
w(write):写权限
-
对文件:修改文件内容
-
对目录:新建、删除、重命名文件
-
-
x(execute):执行权限
-
对文件:运行该文件(通常是脚本或二进制程序)
-
对目录:进入该目录(
cd)
-
-
权限表示
-
用 字符形式:
-rwxr-xr---
第 1 位:文件类型(
-普通文件,d目录,l链接等) -
后 9 位:每三位一组,对应 Owner、Group、Others
-
-
用 数字形式:
chmod 755 file-
r=4, w=2, x=1 -
例如
755→ Owner=7(rwx),Group=5(r-x),Others=5(r-x)
-
特殊权限位
-
suid (setuid):文件执行时临时获得文件所有者的权限(常见于
/usr/bin/passwd)。 -
sgid (setgid):目录中新建的文件自动继承目录的组。
-
Sticky Bit (t):目录下文件只能被文件所有者、目录所有者或 root 删除(典型
/tmp)。
设置权限
-
修改权限:
chmod -
修改所有者:
chown -
修改所属组:
chgrp
1. chmod(修改权限)
-
注意数字和符号两种方式:
-
数字:
chmod 755 file -
符号:
chmod u+x file(给属主加执行权限)
-
-
对目录的含义不同:
-
r= 能列出目录内容 -
w= 能新建/删除/重命名目录里的文件 -
x= 能进入目录
-
-
危险操作:
chmod 777给所有人全部权限,常见但不安全。
2. chown(修改所有者)
-
只有 root 能修改 文件的属主。普通用户不能把文件的所有权转移给别人。
-
可以同时修改所有者和所属组:
sudo chown user:group file -
批量修改时常用
-R递归选项:sudo chown -R user:group dir/递归操作要小心,避免误改系统文件。
3. chgrp(修改所属组)
-
普通用户只能把文件的 group 改为 自己所在的组;否则会报 Operation not permitted。
-
如果要改成别的组,必须是 root 或者先把用户加入该组。
-
同样支持递归:
sudo chgrp -R group dir/
“chmod 调整权限时要区分目录和文件,chown 改属主只有 root 能做,chgrp 改属组时普通用户只能改成自己所在的组,否则要 root。三者结合控制 Linux 的访问控制模型。”
Linux 文件权限是通过 owner、group、others 三类用户以及 r/w/x 三种权限组合来控制的,同时还有 suid、sgid、粘滞位等特殊权限,常用命令有 chmod、chown、chgrp。
umask
-
全称:user file-creation mode mask
-
作用:决定新建文件/目录时的默认权限。
-
原理:
默认权限 & ~umask = 新建文件/目录权限 -
root下一般是022,普通用户是002。
2. 默认权限
-
新建文件:最大权限 666(rw-rw-rw-),因为一般不自动给执行权限。
-
新建目录:最大权限 777(rwxrwxrwx),因为目录必须要有执行权限才能进入。
3. 例子
假设 umask = 022:
-
新建文件:
666 - 022 = 644→rw-r--r-- -
新建目录:
777 - 022 = 755→rwxr-xr-x
4. 怎么用
-
查看当前 umask:
umask -
临时修改 umask(只对当前 shell 有效):
umask 027(新文件默认权限:640,新目录默认权限:750)
5. 能不能修改?如何永久修改
✅ 可以修改,有三种常见方法:
-
只改当前 shell:
umask 027(退出 shell 就失效)
-
改用户级别(永久):
在~/.bashrc或~/.bash_profile里加:umask 027 -
改系统级别(全局):
-
Debian/Ubuntu 系:
/etc/profile、/etc/bash.bashrc -
RedHat/CentOS 系:
/etc/profile、/etc/login.defs
-
6. 注意事项
-
umask是掩码(要屏蔽的权限),不是直接设置权限。 -
高安全性场景常用
umask 077,这样新建文件只有自己可读写。 -
系统服务、守护进程可能单独在配置文件里指定 umask。
“umask 是新建文件和目录时的默认权限屏蔽值,可以在 shell 里用 umask 临时修改,也可以在 ~/.bashrc 或 /etc/profile 里永久修改。常见默认值是 022(新文件 644,新目录 755),安全场景会用 077。”
粘滞位
粘滞位(Sticky Bit)主要用于目录。当一个目录对所有用户开放写权限时(比如 /tmp),如果没有粘滞位,任何用户都能删除或重命名别人的文件。加上粘滞位后,目录里的文件只能由文件的所有者、目录所有者或者 root 删除。这样就避免了多用户环境中互相删除文件的风险。
-
权限表现形式:
drwxrwxrwt(最后一个t) -
设置方法:
chmod +t dirname
1082

被折叠的 条评论
为什么被折叠?



