用户、组与提权
pw user show alice
pw groupshow wheel
id alice
pw usermod alice -G wheel
-G 设置附加组列表,自动化时应先读取现有组,避免无意移除成员关系。日常账户不直接共享 root 密码;使用 doas/sudo 时只授权确需的命令,并保留控制台恢复路径。
文件权限由属主、组、mode 与可选 ACL 共同决定:
stat -f '%Su %Sg %Sp %N' /path/to/file
getfacl /path/to/file
不要用 chmod -R 777 解决应用权限问题。先确认服务实际 UID、父目录遍历权限、umask 和挂载参数。
rc 服务
第三方服务脚本通常位于 /usr/local/etc/rc.d,基础系统脚本位于 /etc/rc.d。用 sysrc 修改 rc.conf,用 service 控制当前实例:
sysrc sshd_enable=YES
service sshd configtest
service sshd reload
service -e
不是所有服务都实现 configtest 或 reload,先运行 service <name> rcvar、查看脚本支持的动作与对应 man page。onestart 可启动未在 rc.conf 启用的服务,适合临时验证,但不应掩盖持久配置缺失。
cron
系统级任务在 /etc/crontab 中包含“用户”字段;用户 crontab -e 没有该字段。cron 环境变量和 PATH 很小,应使用绝对路径、记录标准错误,并防止同一任务重入。
crontab -l
grep -v '^[[:space:]]*#' /etc/crontab
service cron status
高风险维护任务先作为交互脚本演练,再放入 cron;不要把带随机睡眠的 freebsd-update cron 改造成无人值守自动安装补丁。
sysctl:先临时、后持久
sysctl kern.securelevel
sysctl -d net.inet.ip.forwarding
sysctl net.inet.ip.forwarding=1
运行时设置重启后消失。确认行为、监控和回滚后,才写入 /etc/sysctl.conf 或服务专用配置。loader tunable 与运行时 sysctl 不同:只能在引导早期设置的参数应写 /boot/loader.conf,错误时需从 loader 菜单恢复。
变更记录
配置管理至少记录:变更前值、变更命令、验证命令、影响服务和回退命令。sysrc -x name 是删除 rc.conf 变量,不等于禁用所有相关默认行为,回退前要理解该变量的默认值。