应授权运行安全封装的编辑命令,如通过wrapper脚本或sudoedit白名单限制仅修改/etc/netplan/.yaml和/etc/sysconfig/network-scripts/ifcfg-文件,禁止直接sudo vi或shell逃逸,确保最小权限与日志审计。

要让普通用户能修改指定路径下的网络配置文件(比如 /etc/netplan/*.yaml 或 /etc/sysconfig/network-scripts/ifcfg-*),又不能碰其他 /etc 下的文件,核心思路是:**不给 sudo 权限去编辑任意文件,而是授权运行特定、安全封装的编辑命令**——直接允许 sudo vi /etc/xxx 或 sudo cp 是高危操作,极易越权。
只授权安全的编辑方式(推荐)
避免让用户直接获得对 /etc 任意文件的读写权,转而提供受控入口:
- 写一个只允许修改目标路径的 wrapper 脚本,例如
/usr/local/bin/edit-net-config,内容为:#!/bin/bash<br>case "$1" in<br> /etc/netplan/*.yaml|/etc/sysconfig/network-scripts/ifcfg-*)<br> exec /usr/bin/vi "$1"<br> *)<br> echo "Only network config files allowed" >&2; exit 1<br>esac
- 确保脚本属主 root、权限
0755、不可被普通用户修改:sudo chown root:root /usr/local/bin/edit-net-config<br>sudo chmod 0755 /usr/local/bin/edit-net-config
- 在
/etc/sudoers中授权该脚本:devuser ALL=(root) NOPASSWD: /usr/local/bin/edit-net-config
用 sudoedit 限制编辑范围
sudoedit(即 sudo -e)默认使用安全临时副本机制,比直接 sudo vi 更可靠。可结合 Cmnd_Alias 白名单:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 在
/etc/sudoers中定义:Cmnd_Alias NETCONF = /usr/bin/sudoedit /etc/netplan/*.yaml, /usr/bin/sudoedit /etc/sysconfig/network-scripts/ifcfg-* - 然后授权:
devuser ALL=(root) NOPASSWD: NETCONF - 注意:
sudoedit会拒绝通配符匹配到不存在的路径,且不会允许sudoedit /etc/passwd这类非法调用
禁止危险路径和 shell 逃逸
即使做了白名单,也要堵住常见绕过方式:
- 确认
/etc/sudoers中没有放行/bin/sh、/bin/bash、/usr/bin/env、/usr/bin/python等解释器 - 检查是否启用
Defaults env_reset(默认开启),防止用户通过PWD或LD_PRELOAD注入 - 禁用
sudo su类命令:不在白名单中列出它们,就自然无法执行
验证与加固
配置完务必验证实际行为:
- 切换用户后运行:
sudo -l—— 确认只列出你授权的命令 - 尝试合法操作:
sudo edit-net-config /etc/netplan/01-network.yaml—— 应成功 - 尝试越界操作:
sudo edit-net-config /etc/shadow或sudo /bin/bash—— 应明确拒绝 - 检查日志:
sudo grep 'sudo' /var/log/auth.log | tail -5,确认拒绝记录存在










