使用ls -l命令可查看文件/目录的详细权限信息,输出示例:
-rw-r--r-- 1 user group 1234 Jan 1 12:34 filename
-为普通文件,d为目录,l为符号链接);user)权限(rw-=读写,无执行);group)权限(r--=只读);r--=只读)。数字模式(推荐):用三位八进制数表示权限,每位对应一组权限(读=4、写=2、执行=1)。
chmod 755 filenamechmod 600 filename符号模式:通过u(所有者)、g(组)、o(其他)、a(所有)指定用户类别,用+(添加)、-(移除)、=(设置)调整权限。
chmod u+x filenamechmod go-w filenamechmod a=r filename注意:修改系统关键文件(如/etc/passwd)时需谨慎,避免使用chmod 777(赋予所有用户完全权限),以免引发安全风险。
修改所有者:使用chown命令,格式为chown 新所有者 文件名。
file.txt的所有者改为newuser:sudo chown newuser file.txtsudo chown -R newuser /path/to/directory修改所属组:使用chgrp命令,格式为chgrp 新组名 文件名。
file.txt的所属组改为developers:sudo chgrp developers file.txtsudo chgrp -R developers /path/to/directory同时修改所有者和组:
sudo chown newuser:developers file.txt
umask用于定义新创建文件/目录的默认权限(通过屏蔽部分权限实现)。
umask(常见输出为0022,表示新文件屏蔽022=组和其他用户的写权限)umask 0077(新文件权限为600(rw-------),新目录权限为700(rwx------))~/.bashrc或/etc/profile),在文件末尾添加umask 0077,然后运行source ~/.bashrc使更改生效。SUID(Set User ID):让普通用户执行文件时拥有文件所有者的权限(仅适用于可执行文件)。
script.sh设置SUID:sudo chmod u+s script.sh(查看权限时,所有者权限位会显示为s,如-rwsr-xr-x)SGID(Set Group ID):让普通用户执行文件时拥有文件所属组的权限,或目录下新建文件继承目录的所属组。
program设置SGID:sudo chmod g+s program(所有者权限位显示为s,如-rwxr-sr-x)project目录设置SGID(新文件继承目录组):sudo chmod g+s project(目录权限位显示为s,如drwxr-sr-x)Sticky Bit(粘滞位):仅允许文件所有者或root删除/重命名目录中的文件(适用于共享目录,如/tmp)。
shared_dir设置粘滞位:sudo chmod +t shared_dir(目录权限位显示为t,如drwxrwxrwt)注意:特殊权限需谨慎使用,尤其是SUID/SGID,不当设置可能导致安全漏洞。
/etc、/bin、/sbin)的权限应保持默认,不要随意放宽;sudo执行权限修改命令时,需输入当前用户密码以确保操作合法性。