首页 > 系统相关 >SELinux 影响 bash: Permission denied

SELinux 影响 bash: Permission denied

时间:2023-06-06 09:55:32浏览次数:34  
标签:tmp SELinux sh denied test 权限 bash

目录

适用范围

LINUX

问题概述

在客户环境中,我们会经常使用工具或脚本执行命令。但是在有的环境中,同的工具,同样的脚本有的执行成功,有的执行失败。
在工具中我们执行"ps -ef | grep mysqld " 查看进程的命令! 在测试的时候却告诉没有权限执行。
image.png

从日志上来看,该工具将脚本包装了临时文件,其中包含了两部份,一个是将pid 写入临时文件 ,一个正真实行的脚本。

image.pngimage.png

而同样的脚本在其它OS上肯定是可以执行的,而且也可以肯定的是有执行权限的,下面OS中还原了该问题。

#创建一个文件 ,并将命令写入到文件中
touch  /tmp/test.sh 
echo 'hostname' > /tmp/test.sh 
#给测试文件授权
chmod 755 /tmp/test.sh 
#执行该文件,没问题
[root@asherdb~]# sh /tmp/test.sh
asherdb

#但是直接执行该文件就会提示没有权限
[root@asherdb~]# sh /tmp/test.sh
bash: /tmp/test.sh: Permission denied 

#按照工具的的方式执行脚本 
[root@asherdb/]# /bin/bash -c "su root  -c  \"echo 'test' ; /tmp/test.sh \""
test
bash: /tmp/test.sh: Permission denied 

image.png

问题原因

后来经过查看是因为tmp目录是在开启SELinux权限下创建的。在开启SELinux的情况下创建的目录和文件有具有这个点的标识。

[root@asherdb/]# ll | grep tmp 
drwxrwxrwt.  17 root root      4096 Jun  1 17:02 tmp

Linux权限列的点不是无意义字符。在开启SELinux的情况下创建的目录和文件有具有这个点,权限列有这个点说明该目录或文件以及设置了SELinux相关的权限。在禁用SELinux权限之后,在之前开启SELinux权限时创建的文件或目录保持原来的权限不便,权限列的点依然显示。新创建的目录或文件在权限列无这个点显示。

解决方案

1.关于SELinux,并重建/tmp目录 ,但一般会有scoke文件存放在该目录,该操作可能会影响业务。
2.将脚本移动到其它目录,关闭SELinux后,在其它目录创建文件夹,如/home ,把脚本存放在home目录下
3.更改脚本执行方式,在每个脚本上增加bash命令

# 如:
sh /tmp/test.sh
#增加/bin/bash, 改为
/bin/bash -c "su root  -c  \"echo 'test' ; /bin/bash /tmp/test.sh \""

参考文档

标签:tmp,SELinux,sh,denied,test,权限,bash
From: https://www.cnblogs.com/cqdba/p/17459700.html

相关文章

  • -bash: jps: command not found
    Linux安装openJDK找不到jps 解决办法 执行安装java-1.8.0-openjdk-develyuminstalljava-1.8.0-openjdk-devel ......
  • profile与bashrc分析
    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。并从/etc/profile.d目录的配置文件中搜集shell的设置./etc/bashrc:为每一个运行bashshell的用户执行此文件。当bashshell被打开时,该文件被读取.~/.bash_pro......
  • 误删.bashrc文件后果很严重
    因为vim用的不太顺,所以有一个很坏的习惯:喜欢用重定向符号”>>“在.bashrc文件后面追加一些内容可是有时候不小心把”>>“写成”>“,就会造成严重后果!养成良好的习惯每次更改.bashrc文件时用vim虽然多敲几下键盘,但是千万不要用”>“向.bashrc文件后追加内容每次更改.bashrc文......
  • linux下查看 SELinux状态及关闭SELinux
    SELinux全称为安全增强式Security-EnhancedLinux(SELinux),是一个在内核中实践的强制存取控制(MAC)安全性机制。SELinux首先在CentOS4出现,并在其后的CentOS发行版本获得重大改善。这些改善代表用SELinux解决问题的方法亦随著时间而改变。SELinux的原理与架构SELinux的整体......
  • Bash
    一、什么是bash?bash是一个命令处理器,运行在文本窗口中,并能执行用户直接输入的命令.bash还能从文件中读取Linux命令,称之为脚本.bash支持通配符,管道,命令替换,条件判断等逻辑控制语句bash是shell的一种,bash是Linux系统默认使用的shell。shell就是一个命令行解释器,用......
  • bash控制台显示颜色
     #!/bin/bashfunction_info(){echo-e"\033[32m$1\033[0m"}function_warning(){echo-e"\033[33m$1\033[0m"}function_error(){echo-e"\033[31m$1\033[0m"}function_green(){ echo"\033[32m&q......
  • mac bash 下使用vi 快捷方式——因为没有alt键 所以没有办法 用vi模式也非常方便的
     set-oemacs##切到emacs模式set-ovi##切到vi模式set-o##查看当前选项的设置状态 所以你只需要在.bashrc下加入set-ovi然后,使用ESC进行行首尾,单词之间的快速跳转。......
  • 开源软件架构总结之——Bash(readline做输入交互式,词法语法分析,进程交互)
    第3章TheBourne-AgainShellBash的主要组件:输入处理,解析,单词展开(wordexpansion)和其他命令处理,管道(pipeline)中的命令执行。这些组件构成一个流水线(pipeline),从键盘或脚本中获取字符,然后逐步转化为命令。图3.1Bash组件结构 3.7.经验教训3.7.1.什么是重要的参与到Bash项目......
  • bashrc添加环境变量当用户登录时生效,等号两边不要有空格
    bashrc是Linux系统中的一种shell脚本,当用户登录时,bashrc文件会被自动执行。它是一个用于加载环境变量和自定义脚本的地方,可以用来定制您的系统环境。在本文中,我们将详细介绍如何在bashrc文件中添加环境变量。一、基础知识在开始添加环境变量之前,您需要了解bashrc文件及其作用。......
  • 如何关闭SELinux
    永久关闭SELinux永久关闭SELinuxsed-i's/SELINUX=enforcing/SELINUX=disabled/g'/etc/selinux/config关闭后需要重启系统reboot查看SELinux的状态getenforce编辑配置文件/etc/selinux/config,把SELINUX=更改为SELINUX=disabled,然后重启系统,SELinux就被禁用了临时关......