在Linux系统中获取权限主要通过以下几种方式:
1. 切换用户(`su` 和 `sudo`)
`su`(切换用户):
输入 `su - <用户名>` 可直接切换到目标用户(如 `su - root`),需输入目标用户的密码。不带用户名默认切换到 `root`。此方式需知晓目标用户的密码。
`sudo`(临时提权):
允许授权用户以其他用户(如 `root`)身份执行命令。配置在 `/etc/sudoers` 文件中,通过 `visudo` 安全编辑。例如:
bash
sudo apt update # 以root权限执行
若需免密执行,可在 `sudoers` 中添加 `NOPASSWD` 选项。
2. 修改文件权限(`chmod` 和 `chown`)
`chmod`(权限变更):
通过数字(如 `755`)或符号(如 `u+x`)修改文件权限:
bash
chmod 755 file.txt # 用户:rwx,组和其他:rx
chmod +x script.sh # 为所有用户添加执行权限
`chown`(所有权变更):
修改文件所有者或所属组:
bash
chown user:group file # 同时修改所有者和组
chown root /opt/data # 将文件所有者设为root
3. 设置SUID、SGID和Sticky Bit
SUID(Set User ID):
文件运行时以所有者权限执行(如 `/bin/passwd`),设置方式:
bash
chmod u+s /path/to/file
SGID(Set Group ID):
文件运行时以所属组权限执行,或目录下新建文件继承组权限:
bash
chmod g+s /shared_dir
Sticky Bit:
目录中仅文件所有者可删除自身文件(如 `/tmp`):
bash
chmod +t /tmp
4. ACL(访问控制列表)
针对复杂权限需求,使用 `setfacl` 设置精细化权限:
bash
setfacl -m u:alice:rwx file # 赋予alice读写执行权限
setfacl -x u:alice file # 移除alice的ACL条目
5. Capabilities(内核能力机制)
无需赋予完整root权限,仅分配特定能力(如网络管理、系统调试):
bash
setcap cap_net_raw+ep /usr/bin/ping # 允许普通用户使用ping
6. PAM(可插拔认证模块)
通过 `/etc/pam.d/` 配置认证规则,控制用户登录及权限分配,如限制SSH登录或密码策略。
7. SELinux/AppArmor(强制访问控制)
SELinux:基于安全策略限制进程和文件访问,通过 `chcon` 修改上下文,或 `setenforce` 切换模式(强制/宽松)。
AppArmor:通过配置文件限制应用程序权限,常见于Debian/Ubuntu。
安全建议
遵循最小权限原则,避免滥用 `root`。
定期审核权限(如 `find / -perm -4000` 查找SUID文件)。
敏感操作需记录日志(通过 `auditd` 或 `syslog`)。
权限管理是Linux系统安全的核心,合理配置能有效隔离风险。