Sudoers文件行注释与带后缀复制行的代码实现需求
处理sudoers文件的注释与新增条目脚本
嘿,针对你要修改sudoers文件的需求,我准备了个实用的Python脚本——它能精准定位目标行,把原行注释掉,紧接着在后面生成一条带自定义后缀的重复条目,完全保留文件其他内容不变。
脚本核心功能
- 精准匹配你指定的目标行
- 在原行开头添加
#完成注释 - 复制原行内容,在末尾追加指定后缀作为新条目插入
- 自动备份原sudoers文件,降低操作风险
示例代码
def modify_sudoers(target_line, suffix, sudoers_path="/etc/sudoers"): # 自动备份原文件,这是修改系统配置的必备操作 import shutil backup_path = f"{sudoers_path}.bak_{datetime.now().strftime('%Y%m%d_%H%M%S')}" shutil.copy(sudoers_path, backup_path) print(f"已备份原文件至: {backup_path}") with open(sudoers_path, 'r') as f: lines = f.readlines() modified_lines = [] for line in lines: # 精确匹配目标行(忽略首尾空格,避免因换行/空格差异漏匹配) if line.strip() == target_line.strip(): # 注释原行 modified_lines.append(f"# {line}") # 生成带后缀的新行,保留原行的换行格式 new_line_content = line.rstrip('\n') + suffix + '\n' modified_lines.append(new_line_content) else: modified_lines.append(line) # 写入修改内容,需要root权限 with open(sudoers_path, 'w') as f: f.writelines(modified_lines) print("sudoers文件修改完成!") # -------------------------- # 配置你的专属参数 # -------------------------- # 要修改的目标行(比如原条目是 "john ALL=(ALL) NOPASSWD: ALL") TARGET_LINE = "john ALL=(ALL) NOPASSWD: ALL" # 要添加的后缀(比如"_custom") SUFFIX = "_custom" # 执行修改(必须用sudo运行!) modify_sudoers(TARGET_LINE, SUFFIX)
重要操作提醒
- 必须用sudo运行脚本:/etc/sudoers只有root用户有读写权限,执行命令格式为
sudo python3 your_script_name.py - 验证匹配准确性:如果原行包含特殊空格或格式,务必让
TARGET_LINE和原行内容完全一致,避免误改其他条目 - 先测试再实操:可以先复制一份sudoers到临时目录,用测试文件验证脚本功能,确认无误后再操作真实的系统文件
举个实际效果例子:
原行内容:john ALL=(ALL) NOPASSWD: ALL
添加后缀_custom后,对应内容会变成:
# john ALL=(ALL) NOPASSWD: ALL john ALL=(ALL) NOPASSWD: ALL_custom
内容的提问来源于stack exchange,提问作者Varun Dogra
相关产品推荐
相关产品推荐

