讲师中心 微信公众号

工具推荐

视频效率加速
剧云
剧云

中文短剧剧本制作平台

Laper
Laper

剧本策划到成片协作

立刻MV
立刻MV

低成本歌曲 MV、视频生成

updream

一键生成高质量推广成片

LinuxShell脚本安全实践_权限与环境控制解析【教程】

浅静同学_1444

浅静同学_1444

发布时间:2026-01-06 18:48:08

|

608人浏览过

|

来源于php中文网

原创

脚本执行权限必须设为750且组严格限定,禁止755;需用set -euo pipefail、IFS=、引号化变量、重置PATH、校验二进制完整性、mktemp创建临时文件并设600权限。

linuxshell脚本安全实践_权限与环境控制解析【教程】

脚本执行权限设置必须用 chmod 750 而非 755

如果脚本含敏感操作(如修改系统配置、读取 /etc/shadow),执行权限开放给“其他用户”(o+r-x)等于默认放行任意本地账户调用。实际中 chmod 750 确保仅属主+同组可执行,且组应严格限定(如新建专用组 adminscripts,仅加入必要账号)。755 常见于 Web 可读目录,但 Shell 脚本一旦被普通用户执行,可能绕过 sudo 策略或触发环境变量污染。

  • 检查当前权限:ls -l /path/to/script.sh,确认输出第三段不含 x(如 -rwxr-x--- 合规,-rwxr-xr-x 不合规)
  • 设权后立即验证:sudo -u nobody /path/to/script.sh 应报 Permission denied,而非静默失败或意外执行
  • 避免在 /tmp 或 /var/tmp 中存放带执行权限的脚本——这些目录通常设了 sticky bit,但不阻止同组用户覆盖或重命名

set -euo pipefail 是基础安全开关,但需配合 IFS= 和引号化

仅加 set -euo pipefail 不足以防御路径遍历或空格分词攻击。例如 for file in $(ls *.log) 在文件名含空格时会崩,而 find ... -print0 | while IFS= read -r -d '' f 才可靠。关键点在于:IFS= 阻止 read 自动裁剪首尾空白,read -r 禁用反斜杠转义,所有变量引用必须用 "$var"。

Linuxdo Application
Linuxdo Application

为 Linux.do 注册撰写高通过率、去 AI 化的中文小作文。进行自适应调查以了解申请人的真实背景,...

下载
  • set -u 会让未定义变量(如 $USER_HOME 拼写错成 $USER_HOMR)直接退出,避免静默使用空值
  • set -o pipefail 使管道中任一命令失败即整体失败,否则 grep xxx /etc/passwd | head -1 可能因 grep 无匹配而返回 1,但 head 仍成功,脚本误判为“找到结果”
  • 禁止裸写 cp $src $dst,必须写成 cp "$src" "$dst";若 $src 是 /tmp/my file.txt,不加引号会拆成两个参数

PATH 和 LD_LIBRARY_PATH 必须显式重置,不能依赖用户环境

脚本启动时若继承用户 PATH(如含 ~/bin 或 /usr/local/bin),攻击者可通过篡改其中的 ls、awk 等命令劫持执行流。正确做法是开头就覆盖:PATH="/usr/bin:/bin:/usr/sbin:/sbin",并用 command -v 校验关键工具存在。

  • 清除危险变量:unset LD_PRELOAD LD_LIBRARY_PATH PYTHONPATH PERL5LIB,这些可被用于动态库/解释器注入
  • 用绝对路径调用核心命令更稳妥(如 /bin/cp 而非 cp),但前提是已确认该路径在目标系统存在(CentOS 和 Alpine 的 /bin 内容差异大)
  • 若脚本需调用自定义二进制,应先 sha256sum -c checksums.sha256 校验完整性,再加入 PATH

临时文件必须用 mktemp 创建,且禁止 /tmp 下硬编码路径

写死 /tmp/myscript.pid 或 /tmp/output.log 是典型竞争条件漏洞:攻击者可在 if [ ! -f /tmp/myscript.pid ]; then touch /tmp/myscript.pid 的间隙创建符号链接,指向 /etc/passwd。必须用 mktemp 生成唯一路径,并立即 chmod 600。

  • 正确模式:
    tmpdir=$(mktemp -d) || exit 1
    chmod 700 "$tmpdir"
    trap 'rm -rf "$tmpdir"' EXIT
  • 单文件也需 mktemp:tmpfile=$(mktemp) && chmod 600 "$tmpfile",不可用 $$(进程号)拼接,因 PID 可预测
  • 避免 mktemp /tmp/myapp.XXXXXX —— 这种用法在旧版 mktemp 中不安全,现代应只用无参数形式或 -t 指定模板前缀
脚本里最易被忽略的不是语法错误,而是对环境变量和临时资源的假设——它们在开发机上总“恰好工作”,一到生产环境就因权限收紧、路径变更或并发访问暴露问题。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

函子Zion

一款支持AI搭建、可视化编辑和多端发布的全栈无代码开发平台。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

码上飞
码上飞 Hot

一款基于自然语言的AI应用开发平台,可根据用户描述自动生成应用程序,帮助个人和团队快速完成应用原型与开发。

相关专题

更多
while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

354

2023.09.25

centos
centos

PHP中文网为大家提供centos相关信息,CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,是免费的、开源的、可以重新分发的开源操作系统,PHP中文网提供centos相关文章,以及安装教程。

3389

2023.06.16

常见的linux系统有哪些
常见的linux系统有哪些

linux系统有Ubuntu、Fedora、CentOS、Debian、openSUSE、Arch Linux、Gentoo、Slackware、Linux Mint、Kali Linux。更多关于linux系统的文章详情请阅读本专题下面的文章。php中文网欢迎大家前来学习。

7241

2023.10.27

CentOS安装部署教程精选
CentOS安装部署教程精选

CentOS安装部署专题提供 CentOS Stream 9/10 服务器安装与初始化配置教程,涵盖 ISO 镜像下载、系统分区、最小化安装、网络配置、SSH远程连接、防火墙、软件源、时区同步、用户权限和常见安装故障排查,适合新手搭建 Linux 服务器环境及运维人员快速部署 CentOS 系统。

214

2026.05.29

CentOS运维命令大全
CentOS运维命令大全

CentOS运维命令专题整理 CentOS 服务器日常管理常用命令,覆盖系统信息查看、用户与权限管理、服务启动停止、进程监控、端口查看、日志分析、磁盘空间清理、软件包安装、定时任务配置和故障排查方法,帮助运维人员高效完成 CentOS 系统维护工作。

208

2026.05.29

CentOS建站环境搭建实战教程
CentOS建站环境搭建实战教程

CentOS建站环境专题围绕服务器网站部署场景,系统讲解在 CentOS 上安装和配置 Nginx、Apache、PHP、MySQL、MariaDB、PHP-FPM、SSL证书、网站目录权限、虚拟主机、反向代理和 WordPress 等常见建站环境,适合个人站长和运维人员搭建稳定 Web 服务。

223

2026.05.29

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

20

2026.11.06

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

40

2026.11.06

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn