Linux 如何降低人为操作风险?

发布时间 - 2026-01-24 00:00:00    点击率:
应优先使用 sudo 而非 su - 切换 root,配合禁用 root 密码、限制 sudo 命令范围、chattr 设置文件不可变属性、高危命令 alias 拦截、etckeeper 自动备份等多重防护机制。

sudo 代替直接切 root

直接 su - 切到 root 后,所有命令都以最高权限运行,一个误删、路径写错或通配符没加引号,就可能清空 /usr 或覆盖 /etc。而 sudo 强制显式声明要提权的命令,天然带“确认感”。

实操建议:

  • 禁用 root 密码:sudo passwd -l root,彻底关闭直接登录 root 的通道
  • 把运维人员加入 sudo 组,但限制可执行命令范围,例如在 /etc/sudoers.d/deploy 中写:%deploy ALL=(ALL) /usr/bin/systemctl start nginx, /usr/bin/systemctl reload nginx
  • 启用 sudo -i(带环境的交互式 shell)仅用于调试,日常一律用 sudo command 单行执行

关键目录设为不可删除(chattr +a+i

/etc/passwd/etc/shadow/boot/grub2/grub.cfg 这类文件,不是靠权限位能防住的——只要你是 root 或有 sudo 权限,rm -f 照样能删。得用文件系统级属性。

实操建议:

  • 对只追加日志的文件(如 /var/log/secure),用 sudo chattr +a /var/log/secure,禁止删除和覆盖,只允许 append
  • 对核心配置文件(如 /etc/fstab),用 sudo chattr +i /etc/fstab,连 root 也无法修改或删除,修改前必须先 chattr -i
  • 注意:+i 属性下,vim 保存会失败(它实际是删旧建新),改配置得先临时移除属性,操作完立刻加回

alias 覆盖高危命令

很多人习惯敲 rm -rf *,但当前目录一旦是 //home 就全完了。与其靠人记,不如让 shell 主动拦截。

实操建议:

  • ~/.bashrc/etc/skel/.b

    ashrc
    中加别名:alias rm='rm -I'(大写 I,删多个文件时强制确认)
  • 更进一步,禁用裸 rmalias rm='echo "Use: rm -I or sudo rm -f. Aborting." >&2; false'
  • 同理处理 cpmvalias cp='cp -i'alias mv='mv -i',避免静默覆盖
  • 别名只对交互式 shell 生效,脚本里不会触发——所以生产脚本仍需严格校验路径变量

操作前自动备份关键文件(用 etckeeper 或简单 preexec 钩子)

不是所有修改都能靠 chattr 挡住,比如你确实需要改 /etc/nginx/nginx.conf。这时候,自动留一份快照比事后从备份恢复快得多。

实操建议:

  • etckeeper(Debian/Ubuntu 自带,RHEL/CentOS 需 yum install etckeeper),它用 git 自动 commit /etc 变更,每次 apt install 或手动改配置都会触发记录
  • 若不想引入新工具,可用 preexec 函数钩住每次命令执行前动作,在 .bashrc 中加一段逻辑:检测命令是否含 vivimnano 且参数是 /etc/ 下文件,就自动生成 .bak 时间戳副本
  • 备份本身不解决误操作,但它把“恢复窗口”从小时级压缩到秒级——前提是备份路径和原文件不在同一逻辑卷,否则一次 rm -rf / 全完

最易被忽略的一点:所有这些机制都依赖用户登录后加载的 shell 配置。如果有人绕过 ssh 直接进单用户模式,或用 Live CD 挂载根分区,那 sudo 规则、aliasetckeeper 全部失效。物理/宿主机层面的访问控制,才是最后一道防线。


# linux  # centos  # git  # nginx  # app  # ubuntu  # 工具  # 配置文件  # echo  # var  # append  # vim  # ssh  # debian  # 中加  # 自动备份  # 你是  # 多个  # 才是  # 都能  # 很多人  # 设为  # 这类  # 或删除 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何快速搭建高效可靠的建站解决方案?  如何用景安虚拟主机手机版绑定域名建站?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  实例解析angularjs的filter过滤器  如何彻底卸载建站之星软件?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel如何使用withoutEvents方法临时禁用模型事件  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Laravel如何构建RESTful API_Laravel标准化API接口开发指南  js实现获取鼠标当前的位置  Android okhttputils现在进度显示实例代码  如何用免费手机建站系统零基础打造专业网站?  北京网站制作的公司有哪些,北京白云观官方网站?  焦点电影公司作品,电影焦点结局是什么?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何快速生成橙子建站落地页链接?  制作企业网站建设方案,怎样建设一个公司网站?  Android GridView 滑动条设置一直显示状态(推荐)  如何在 Pandas 中基于一列条件计算另一列的分组均值  如何彻底删除建站之星生成的Banner?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何用搬瓦工VPS快速搭建个人网站?  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  LinuxShell函数封装方法_脚本复用设计思路【教程】  lovemo网页版地址 lovemo官网手机登录  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  常州企业网站制作公司,全国继续教育网怎么登录?  公司门户网站制作流程,华为官网怎么做?  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  Laravel如何集成Inertia.js与Vue/React?(安装配置)  🚀拖拽式CMS建站能否实现高效与个性化并存?  如何在香港服务器上快速搭建免备案网站?  Laravel如何实现API资源集合?(Resource Collection教程)  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  高配服务器限时抢购:企业级配置与回收服务一站式优惠方案  如何用好域名打造高点击率的自主建站?  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】