在Linux系统中,用户授权主要通过权限管理和用户组机制实现,以下是详细方法和扩展知识:
1. 文件和目录权限
Linux权限分为读(r,4)、写(w,2)、执行(x,1),可通过`chmod`命令修改:
- 数字模式:`chmod 755 file`(所有者:rwx,组和其他:rx)
- 符号模式:`chmod u=rwx,g=rx,o=r file`
2. 所有权变更
使用`chown`和`chgrp`修改文件所有者和所属组:
bash
chown user:group file # 同时修改所有者和组
chgrp developers dir/ # 仅修改所属组
3. 用户组管理
- 创建组:`groupadd devteam`
- 添加用户到组:`usermod -aG devteam username`(`-a`避免移除原有组)
- 检查用户组:`groups username`
4. 特殊权限位
- SUID(4):文件运行时以所有者身份执行,如`chmod u+s /usr/bin/passwd`
- SGID(2):目录下新建文件继承组权限,如`chmod g+s /shared_dir`
- Sticky Bit(1):仅文件所有者可删除目录内文件,如`chmod +t /tmp`
5. ACL(访问控制列表)
提供更细粒度的权限控制:
bash
setfacl -m u:alice:rwx file # 授予alice读写执行权限
setfacl -m g:webadmins:rx dir/
getfacl file # 查看ACL规则
6. Sudo权限分配
通过`visudo`编辑`/etc/sudoers`,配置用户特权:
username ALL=(ALL) NOPASSWD: /usr/bin/apt # 允许无密码执行apt
%admin ALL=(ALL) ALL # 组内用户获得全部sudo权限
7. UMASK值设定
控制默认文件权限,如`umask 027`(文件默认权限750)。可通过`/etc/profile`全局配置。
8. PAM模块
集成身份验证的高级控制,如限制登录IP或时间段,需编辑`/etc/pam.d/`下配置文件。
扩展知识:
权限继承:结合SGID和ACL可实现复杂的目录权限继承结构。
SELinux/AppArmor:提供强制访问控制(MAC),定义进程对资源的访问策略。
日志审计:通过`auditd`文件权限变更和用户操作。
注意:生产环境中应遵循最小权限原则,定期用`find / -perm -4000`检查SUID文件以减少安全风险。