0

0

LinuxShell脚本安全如何保证_权限与校验策略【指导】

冷炫風刃

冷炫風刃

发布时间:2025-12-24 23:00:13

|

556人浏览过

|

来源于php中文网

原创

Linux Shell脚本安全需严控执行与修改权限、校验完整性并确保环境可信:用chmod 700/500限制文件权限,避免全局可写目录;非必要不以root运行,可用sudo -u或降权处理;部署前生成SHA256或GPG签名,运行时校验;显式清理环境变量,严格校验输入参数与配置。

linuxshell脚本安全如何保证_权限与校验策略【指导】

Linux Shell 脚本安全不能只靠“写对逻辑”,更关键的是控制谁可以运行、谁可以修改,以及脚本自身是否被篡改。权限设置和内容校验是两道最基础也最有效的防线。

严格限制脚本文件权限

脚本文件本身若被未授权用户读取、写入或执行,就可能泄露敏感逻辑(如密码拼接、路径结构)或被恶意替换。默认不应给组和其他用户任何权限。

  • chmod 700 script.sh 仅允许所有者读、写、执行;若只需执行,用 chmod 500 script.sh
  • 避免使用 chmod 777 或把脚本放在全局可写目录(如 /tmp)中长期运行
  • 检查父目录权限:即使脚本是 500,若所在目录是 777,攻击者仍可删除后重建同名脚本劫持执行

运行时降权:不以 root 执行,除非绝对必要

多数脚本只需完成特定任务(如日志轮转、配置检查),没必要全程 root。高权限运行会放大漏洞影响范围。

viable
viable

基于GPT-4的AI非结构化数据分析平台

下载
  • sudo -u nobody ./script.sh 或创建专用低权限用户(如 svc-backup)运行
  • 如必须用 root 启动,脚本内尽早调用 setuidgid(需提前安装)或 su -c 切换到普通用户处理非特权操作
  • 禁用脚本中无防护的 eval$(...) 或未引号包裹的变量(如 rm -rf $DIR),防止命令注入提升权限

脚本完整性校验:防止被篡改

生产环境脚本一旦部署,应确保内容未被意外或恶意修改。SHA256 校验 + 签名验证是最实用组合。

  • 发布时生成签名:gpg --clearsign script.sh,或计算摘要:sha256sum script.sh > script.sh.sha256
  • 运行前校验:sha256sum -c script.sh.sha256 2>/dev/null || { echo "校验失败,退出"; exit 1; }
  • 关键脚本建议用 GPG 私钥签名,启动时用预置公钥验证:gpg --verify script.sh.asc script.sh

环境与输入可信性控制

脚本行为不仅取决于代码,还受环境变量、参数、外部文件影响。忽略这些等于留后门。

  • 显式清理或锁定关键变量:unset $(env | grep -E '^(PATH|LD_|BASH_FUNC_).*' | cut -d= -f1),再设最小 PATH(如 PATH=/usr/bin:/bin
  • 所有外部输入($1、$2、配置文件内容)必须校验格式与范围,禁止直接拼入命令;用 case 或正则过滤,而非简单 if [ "$1" = "start" ]
  • 敏感操作前加人工确认开关(如 -y 参数),或要求指定 --env=prod 明确上下文,防误触发

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

226

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

429

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

698

2023.08.22

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1343

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

698

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

293

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

771

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

571

2023.07.06

苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

10

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 5.9万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号