[转帖]Linux /tmp目录下执行脚本失败提示Permission denied
Linux /tmp目录下执行脚本失败提示Permission denied
https://www.cnblogs.com/linyfeng/p/11087655.html 国产化的环境上 就有一个 data 目录 提示没有 权限 解决oracle问题时 顺便扫了一眼 原作者的blog 发现有这个问题.. 非常感谢. 我这边的原始的fstab 的文件信息 # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even ). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda2 during installation UUID=262956d8-d76b-412a-bcac-d96294f67a87 / ext4 errors=remount-ro # /boot was on /dev/sda1 during installation UUID=fd46c1aa-9cb8-4ea4-8a90-54285c194b63 /boot ext4 defaults # /data was on /dev/sda5 during installation UUID=ca54de8a--4a33--780a36c20b07 /data ext4 rw,user,x-gvfs-show,nosuid,nofail # swap was on /dev/sda6 during installation UUID=637aab78-5eeb--8d9b-c50128f2f166 none swap sw
Linux上执行Shell脚本运行失败提示Permission denied一个问题,挺好的问题,切中了知识盲点。
问题现象
Shell脚本在/tmp目录下,执行./test.sh运行失败,提示Permission denied。
问题分析
1、检查ls -al test.sh脚本是否有可执行权限。权限为777。看来套路不行啊。。以前通常90%都是这个原因引起的。
2、尝试使用sh test.sh运行,可以执行。为啥。。
3、是/tmp目录没有执行权限?执行stat / 和stat /tmp发现权限都满足。。有点慌。。解决不了了。下图stat命令执行结果供参考。

4、借助搜索。发现是/tmp文件系统的属性被设置了noexec。noexec表示对应文件系统不允许执行可执行程序,即使文件具有可执行过权限。通常是考虑安全原因会这么设置。
问题解决
1、将脚本放到其他不具有noexec文件系统目录执行或者使用sh test.sh运行。
2、如果可以将/tmp文件系统中noexec属性去掉,可以使用如下操作步骤(说明:仅限测试环境操作)
(1)在/etc/fstab文件中将/tmp文件系统的noexec属性删掉。
(2)重新挂载/tmp文件系统。执行umount /tmp; mount /tmp将/tmp文件重新挂载。
知识拓展
这里主要是因为不了解文件系统挂载参数的约束导致问题无法及时解决。学习下/etc/fstab文件及挂载参数内容。

/etc/fstab文件内容总共包含6列。
第一列:Device:磁盘设备文件或者该设备的Label、UUID
第二列:Mount point:设备的挂载点,就是你要挂载到哪个目录下。
第三列:filesystem:磁盘文件系统的格式,包括ext2、ext3、reiserfs、nfs、vfat等。可以使用df -T查看
第四列:parameters:文件系统的参数
Async/sync 设置是否为同步方式运行,默认为async(性能较佳)
auto/noauto 当执行mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro 是否以只读或者读写模式挂载
exec/noexec 限制此文件系统内是否能够运行可执行文件。
user/nouser是否允许用户使用mount命令挂载
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式。这个涉及到磁盘配额的知识。有兴趣可以扩展看看
Grpquota 启动文件系统对群组磁盘配额模式的支持
Defaults 同时具有rw,suid,dev,exec,auto,nouser,async等参数。基本上,默认使用Defaults设置即可。
第五列:能否被dump备份命令作用:dump是一个用来作为备份的命令。通常值为0或者1。测试环境很少用。
第六列:是否检验扇区:开机的过程中,系统默认会以fsck检验我们系统是否为完整(clean)。一般来说,根目录设置为1,其他的文件系统设置为2。以前经常会在IBM的AIX系统遇到该问题。
总结
看了这个案例,相信如果你以后再遇到Shell脚本运行失败提示Permission denied的问题,解决它的概率就比别人大很多了。。
[转帖]Linux /tmp目录下执行脚本失败提示Permission denied的更多相关文章
- /tmp目录下执行脚本失败提示Permission denied
Linux上执行Shell脚本运行失败提示Permission denied一个问题,挺好的问题,切中了知识盲点. 问题现象 Shell脚本在/tmp目录下,执行./test.sh运行失败,提示Per ...
- linux 下执行.sh文件提示permission denied
linux 下执行.sh文件提示permission denied 在脚本文件目录下运行命令,赋予权限: chmod 777 *.sh or chmod +x *.sh
- [转帖]linux /proc目录下的文件为何无法用vi编辑保存
linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...
- 删除 Linux /tmp 目录下的临时文件
使用 tmpreaper How to install and use tmpreaper How to Remove Files Older than N days using tmpreaper ...
- linux下执行脚本失败的解决办法
现象: 1的解决办法:赋予该文件可执行权限即可,chmod +x docker.sh 2的解决办法:https://blog.csdn.net/youzhouliu/article/details/7 ...
- 执行*.sh脚本时提示Permission denied
使用chmod修改.sh的权限 chmod u+x *.sh 再次执行
- linux root用户无法删除文件,提示permission denied
我用root用户登录,删除一个普通的文件,怎么删也删不了.最后用lsattr命令查看,原来是被保护了.lsattr查看一个文件 1. chattr权限简介 chattr - change file a ...
- shell 脚本中的当前工作目录等于执行脚本时所在的工作目录
1. 测试脚本 在当前目录下创建 h1 h2两个文件夹 2. 在脚本所在目录执行脚本 在当前目录下创建了h1 h2两个目录 3. 在其他目录爱=下执行脚本 在其他目录下执行脚本时,在执行脚本所在的目录 ...
- linux 查询目录下包含关键字的所有文件
linux查找目录下的所有文件中是否含有某个字符串 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有 ...
随机推荐
- win10本机安装rabbitMQ
在win10环境下安装RabbitMQ的步骤 第一步:下载并安装erlang 原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang. 下载 ...
- MVN 报错1
找不到mapper映射文件 只打包了下面这些 所以pom.xml文件中添加 <!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉. --> <build> ...
- permutation 2(递推 + 思维)
permutation 2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- HR问“你目前有几个offer”,聪明人会怎么说?
点击上方“程序员江湖”,选择“置顶或者星标” 你关注的就是我关心的! 一个朋友和我聊天,说起自己最近被虐的面试经历.他985毕业,工作3年,看中了一家月薪1.5万的工作,准备跳槽.虽然在北京不算高 ...
- Robotframework之SSHLibrary库
Robotframework之SSHLibrary库 使用robotframework做自动化测试,在流程中可能需要远程连接机器做一些简单操作,比如连接linux服务器,外面平时用的工具去连接 ...
- LeetCode 130. 被围绕的区域(Surrounded Regions)
题目描述 给定一个二维的矩阵,包含 'X' 和 'O'(字母 O). 找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充. 示例: X X X X X O O X X X ...
- Linux上安装Python3
1. 安装支持包 yum -y groupinstall "Development tools" yum -y install zlib-devel bzip2-devel ope ...
- 淘宝TAE平台定时任务包的部署步骤
淘宝TAE平台定时任务包的部署: 第一步:首先把自己的任务打包成一个jar包.使用maven打包的命令为:mvn clean install 第二步:把任务jar包依赖的jar包全部导出来.使用mav ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_3-03CAP原理、常见面试题
笔记 3.分布式系统CAP原理常见面试题和注册中心选择 简介:讲解CAP原则在面试中回答和注册中心选择 C A 满足的情况下,P不能满足的原因: 数据同步(C) ...
- Java连接Sap系统调并调用RFC函数
参考博客:https://blog.csdn.net/qq_36026747/article/details/81287462 https://www.cnblog ...