技术支持

为您提供7*24小时在线技术支持、安全技术专家、行业资深安全顾问服务。400-888-1688

系统安全相关

您当前位置首页 > 技术支持 > 系统安全相关

FreeBSD 12.1用户权限管理及sudo安全配置教程

合理的用户权限管理是系统安全的基础。遵循最小权限原则,每个用户只拥有完成工作所需的最低权限,可以有效减少安全风险。本文以FreeBSD 12.1为例,详解用户和权限管理。

一、用户和组管理基础

code
code
# 创建用户
pw useradd username

# 设置密码
passwd username

# 创建用户组
groupadd developers

# 将用户加入组
usermod -aG developers username

# 查看用户所属组
groups username

# 列出所有用户
cat /etc/passwd | cut -d: -f1

二、sudo权限配置

sudo命令允许普通用户以root权限执行特定命令,无需知道root密码。FreeBSD 12.1中sudo组为wheel:

code
code
# 将用户加入sudo组
usermod -aG wheel username

# 验证sudo权限
sudo whoami  # 应输出 root

精细化的sudo配置(/etc/sudoers):

code
code
# 使用visudo编辑sudoers文件(语法校验)
visudo

# 允许用户仅执行特定命令
username ALL=(ALL) /usr/bin/systemctl, /usr/bin/journalctl

# 允许组执行特定命令,无需密码
%developers ALL=(ALL) NOPASSWD: /usr/bin/git, /usr/bin/docker

# 限制危险命令
username ALL=(ALL) !/usr/bin/su, !/usr/bin/passwd root

三、文件和目录权限

code
code
# 修改文件所有者
chown user:group filename

# 设置权限(rwx)
chmod 750 filename     # 所有者读写执行,组读执行,其他无权限
chmod 600 filename     # 所有者读写,其他无权限(适用于密钥文件)
chmod 755 /dir         # 目录标准权限

四、最小权限原则实践

在服务器运维中,遵循以下权限管理原则:

  • 禁止直接使用root账户进行日常操作,通过sudo提权
  • 为不同职责创建专用账户(admin、deploy、backup、audit)
  • Web目录设置755/644权限,避免可写可执行
  • SSH私钥文件必须设置为600权限
  • 敏感日志文件设置为640,仅root和audit组可读
  • 定期检查并清理不活跃的用户账户

五、安全审计命令

code
code
# 查看最近登录用户
last
lastlog

# 查看当前登录用户
who
w

# 查看用户的sudo使用记录
cat /var/log/secure | grep sudo
journalctl -u sudo.service

# 检查空密码用户
awk -F: '($2 == "") {print $1}' /etc/shadow

# 检查UID为0的非root用户
awk -F: '($3 == 0) {print $1}' /etc/passwd

六、ACL访问控制列表

除基本权限外,ACL可以提供更精细的权限控制:

code
code
# 查看文件ACL
getfacl filename

# 设置ACL
setfacl -m u:username:rwx filename    # 给用户设置权限
setfacl -m g:groupname:rx filename     # 给组设置权限
setfacl -m o::- filename               # 移除其他用户权限

# 递归设置目录ACL
setfacl -R -m u:www-data:rx /var/www/html
setfacl -R -d -m u:www-data:rx /var/www/html  # 默认ACL

# 备份和恢复ACL
getfacl -R /important/dir > acl_backup.txt
setfacl --restore=acl_backup.txt

七、PAM认证配置

code
code
# /etc/pam.d/ 目录下的PAM配置文件
# 密码强度策略
# /etc/pam.d/common-password(Ubuntu)或
# /etc/pam.d/passwd(CentOS)

# 密码复杂度要求
password requisite pam_pwquality.so retry=3     minlen=12 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1

# 登录失败锁定
# /etc/pam.d/sshd 添加
auth required pam_tally2.so deny=5 unlock_time=900 onerr=fail

八、权限审计脚本

code
code
#!/bin/bash
# 每周权限审计脚本
echo "=== SUID文件检查 ==="
find / -perm -4000 -type f 2>/dev/null

echo "=== SGID文件检查 ==="
find / -perm -2000 -type f 2>/dev/null

echo "=== 全局可写文件 ==="
find / -perm -0002 -type f 2>/dev/null | grep -v /proc | grep -v /sys

echo "=== 无主文件 ==="
find / -nouser -o -nogroup 2>/dev/null | grep -v /proc
这条帮助是否解决了您的问题? 已解决 未解决

安全合格的云服务,让您的业务轻松上云!

立即选购
https://affim.baidu.com/unique_50626027/chat?siteId=21806899&userId=50626027&siteToken=f4b13c0dda3b403b51fd8811d5a360c7