Linux权限设置基础操作指南
在Linux系统中,权限设置是保障系统安全与资源有序访问的核心机制。以下从基础命令、特殊权限、ACL扩展、审计机制四个维度,系统讲解权限设置的具体操作:
使用ls -l命令可查看文件/目录的详细权限信息(如-rw-r--r--表示所有者有读写权限,组用户与其他用户仅有读权限);ls -ld用于查看目录本身的权限。
示例:ls -l /etc/passwd 输出类似:-rw-r--r-- 1 root root 1234 Jan 1 10:00 /etc/passwd。
chmod命令用于更改权限,支持数字模式(推荐)和符号模式两种方式:
chmod 755 file.txt表示所有者有读写执行权限(4+2+1=7),组用户与其他用户有读执行权限(4+1=5)。u(所有者)、g(所属组)、o(其他用户)、a(所有用户)指定对象,结合+(添加)、-(删除)、=(设置)调整权限,如chmod u+x,g-w file.txt表示给所有者添加执行权限,删除组用户的写权限。-R参数可递归修改目录及其子目录下所有文件的权限(如chmod -R 755 /var/www)。chown 用户名[:组名] 文件名,如chown alice:developers file.txt。chgrp 组名 文件名,如chgrp dev-team project/。特殊权限用于满足特定场景的安全需求,需谨慎使用:
允许用户执行文件时临时拥有文件所有者的权限(如/usr/bin/passwd命令,普通用户执行时可修改/etc/shadow文件)。设置方法:chmod u+s 文件名(如chmod u+s /usr/local/bin/custom_script)。
/usr/bin/wall命令,普通用户执行时可向所有用户广播消息)。chmod g+s /shared_dir,用户在该目录下创建的文件所属组为shared_dir的组)。仅适用于目录,限制目录内文件仅属主可删除(如/tmp目录,所有用户可在其中创建文件,但只能删除自己的文件)。设置方法:chmod +t 目录名(如chmod +t /public_upload)。
传统权限(rwx)无法满足复杂场景(如给特定用户单独授权),此时可使用ACL(Access Control List)实现更细粒度的控制:
大多数Linux发行版默认安装acl包,若未安装,可通过sudo apt-get install acl(Debian/Ubuntu)或sudo yum install acl(CentOS/RHEL)安装。
setfacl -m u:用户名:权限 文件名(如setfacl -m u:bob:rwx /project/data,给用户bob添加读写执行权限)。setfacl -m g:组名:权限 文件名(如setfacl -m g:dev-team:rx /project/code,给dev-team组添加读执行权限)。getfacl 文件名(如getfacl /project/data,显示文件的所有ACL规则)。setfacl -x u:用户名 文件名(如setfacl -x u:bob /project/data,删除用户bob的ACL规则);setfacl -b 文件名(删除所有ACL规则,恢复传统权限)。为确保权限设置的合规性,需定期审计权限变更,auditd是Linux系统的审计工具,可实现权限操作的日志记录与查询:
sudo apt-get install auditd audispd-plugins(Debian/Ubuntu)或sudo yum install audit(CentOS/RHEL)。sudo systemctl start auditd,并设置开机自启:sudo systemctl enable auditd。添加监控规则(如监控/etc/sudoers文件的修改):sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes(-w指定监控路径,-p指定监控权限(w=写、a=属性变更),-k指定规则关键字)。
使用ausearch命令查询特定规则的日志(如sudo ausearch -k sudoers_changes),可查看权限变更的时间、用户、操作类型等信息。
root权限,避免使用chmod 777过度开放权限)。ls -l /etc),及时回收不必要的权限(如删除离职用户的ACL规则)。/etc/passwd、/etc/shadow、/etc/group等重要文件前,备份至安全位置(如/backup目录)。