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的更多相关文章

  1. /tmp目录下执行脚本失败提示Permission denied

    Linux上执行Shell脚本运行失败提示Permission denied一个问题,挺好的问题,切中了知识盲点. 问题现象 Shell脚本在/tmp目录下,执行./test.sh运行失败,提示Per ...

  2. linux 下执行.sh文件提示permission denied

    linux 下执行.sh文件提示permission denied 在脚本文件目录下运行命令,赋予权限: chmod 777 *.sh or chmod +x  *.sh

  3. [转帖]linux /proc目录下的文件为何无法用vi编辑保存

    linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...

  4. 删除 Linux /tmp 目录下的临时文件

    使用 tmpreaper How to install and use tmpreaper How to Remove Files Older than N days using tmpreaper ...

  5. linux下执行脚本失败的解决办法

    现象: 1的解决办法:赋予该文件可执行权限即可,chmod +x docker.sh 2的解决办法:https://blog.csdn.net/youzhouliu/article/details/7 ...

  6. 执行*.sh脚本时提示Permission denied

    使用chmod修改.sh的权限 chmod u+x *.sh 再次执行

  7. linux root用户无法删除文件,提示permission denied

    我用root用户登录,删除一个普通的文件,怎么删也删不了.最后用lsattr命令查看,原来是被保护了.lsattr查看一个文件 1. chattr权限简介 chattr - change file a ...

  8. shell 脚本中的当前工作目录等于执行脚本时所在的工作目录

    1. 测试脚本 在当前目录下创建 h1 h2两个文件夹 2. 在脚本所在目录执行脚本 在当前目录下创建了h1 h2两个目录 3. 在其他目录爱=下执行脚本 在其他目录下执行脚本时,在执行脚本所在的目录 ...

  9. linux 查询目录下包含关键字的所有文件

    linux查找目录下的所有文件中是否含有某个字符串 查找目录下的所有文件中是否含有某个字符串 find .|xargs grep -ri "IBM" 查找目录下的所有文件中是否含有 ...

随机推荐

  1. JVM(二),Java怎样实现一次编译到处运行(平台无关性)

    二.Java怎样实现一次编译到处运行(平台无关性) 1.java平台无关性原理 Java源码首先被编译成字节码,再由不同平台的JVM进行解析,JAVA语言在不同的平台上运行时不需要进行重新编译,Jav ...

  2. B/S上传超大文件解决方案

    4GB以上超大文件上传和断点续传服务器的实现 随着视频网站和大数据应用的普及,特别是高清视频和4K视频应用的到来,超大文件上传已经成为了日常的基础应用需求. 但是在很多情况下,平台运营方并没有大文件上 ...

  3. luogu 1072 Hankson 的趣味题 唯一分解定理+线性筛

    貌似是比大多数题解优的 $O(n^2logn)$ ~ Code: #include <bits/stdc++.h> #define N 50004 #define setIO(s) fre ...

  4. 【原创】Python3 + Red + PyDev + Eclipse + Subversion + RobotFramework + UI Automator2 + Weditor 构建Web+Mobile 交互式移动App自动化测试环境

    环境搭建步骤: 1. 下载安装Oracle JDK: 安装路径设置为C:\Program Files\Java\jdk1.8.0_152 2. 下载安装Eclipse: 安装路径设置为C:\Eclip ...

  5. Open_Read_Write函数基本使用

    先来一个小插曲,我们知道read函数等是系统调用函数,应该在第二页的手册里头,可是我man 2 read的时候却找不到,由此到/usr/sharead/man/man2目录下查看的时候发现此目录为空, ...

  6. Speed

    传送门:Speed 题目大意 给一棵n个点的无根树,每条树边i给出li和ri表示速度在[li,ri]内才能通过这条边. 现在有m个询问,每个询问给出一个速度x,求以x的速度(不能改变)能在树上通过的路 ...

  7. [BZOJ1123]:[POI2008]BLO(塔尖)

    题目传送门 题目描述 Byteotia城市有n个towns.m条双向roads.每条road连接两个不同的towns,没有重复的road.所有towns连通. 输入格式 输入n,m及m条边. 输出格式 ...

  8. java jsp基础介绍

    1         Jsp基础 1.1           Jsp介绍 JSP(全称Java Server Pages)是一种web动态网页开发技术,通过标签和指令完成用户界面开发和交互操作.它使用J ...

  9. SRS之HLS部署实例源码分析

    1. 综述 SRS 关于 HLS 的具体配置可见: HLS部署实例 SRS 关于 hls 的配置文件内容如下: listen 1935; max_connections 1000; daemon of ...

  10. 【java测试】Junit、Mock+代码覆盖率

    原文见此处 单元测试是编写测试代码,用来检测特定的.明确的.细颗粒的功能.单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的. 单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代 ...