使用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 filename
chmod 600 filename
符号模式:通过u
(所有者)、g
(组)、o
(其他)、a
(所有)指定用户类别,用+
(添加)、-
(移除)、=
(设置)调整权限。
chmod u+x filename
chmod go-w filename
chmod a=r filename
注意:修改系统关键文件(如/etc/passwd
)时需谨慎,避免使用chmod 777
(赋予所有用户完全权限),以免引发安全风险。
修改所有者:使用chown
命令,格式为chown 新所有者 文件名
。
file.txt
的所有者改为newuser
:sudo chown newuser file.txt
sudo chown -R newuser /path/to/directory
修改所属组:使用chgrp
命令,格式为chgrp 新组名 文件名
。
file.txt
的所属组改为developers
:sudo chgrp developers file.txt
sudo 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
执行权限修改命令时,需输入当前用户密码以确保操作合法性。