加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 在EC2(Ubuntu)上运行bash脚本时出现奇怪的“Permission

发布时间:2020-12-14 01:19:01 所属栏目:Linux 来源:网络整理
导读:我已经附加了一个EBS块并将其安装在我的EC2实例的“/ data”上,该实例运行Ubuntu 12.04.有一个运行正常的备份脚本,但在我将脚本移动到“/ data / backup”文件夹后,它无法执行,错误: -bash: ./db_backup.sh: Permission denied 许可是: -rwxr-xr-x 1 ubunt
我已经附加了一个EBS块并将其安装在我的EC2实例的“/ data”上,该实例运行Ubuntu 12.04.有一个运行正常的备份脚本,但在我将脚本移动到“/ data / backup”文件夹后,它无法执行,错误:

-bash: ./db_backup.sh: Permission denied

许可是:

-rwxr-xr-x 1 ubuntu ubuntu 2.3K Nov 22 03:25 db_backup.sh

如果我用“sudo”运行它,没有错误也没有输出,但应该有一些东西回显到控制台.

我也尝试使用“strace”来执行,但得到了:

execve("./db_backup.sh",["./db_backup.sh"],[/* 19 vars */]) = -1 EACCES (Permission   denied)
dup(2)                                  = 3
fcntl(3,F_GETFL)                       = 0x8002 (flags O_RDWR|O_LARGEFILE)
fstat(3,{st_mode=S_IFCHR|0620,st_rdev=makedev(136,1),...}) = 0
mmap(NULL,4096,PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANONYMOUS,-1,0) =     0x7f354f010000
lseek(3,SEEK_CUR)                   = -1 ESPIPE (Illegal seek)
write(3,"strace: exec: Permission deniedn",32strace: exec: Permission denied
) = 32
close(3)                                = 0
munmap(0x7f354f010000,4096)            = 0
exit_group(1)                           = ?

但是,如果我把这个脚本放在某个地方,比如说“/ tmp”,它就没问题了.为了缩小根本原因,我还创建了一个测试脚本:

#!/bin/bash

echo "hello"

可悲的是,如果我把它放在/ data文件夹中,这也不行.

解决方法

最有可能它安装了noexec标志.你可以确认:

mount | grep /data

在输出中,您可能会在行尾看到类似(rw,noexec)的内容. noexec标志不是默认值,因此通常在明确配置为以这种方式挂载时会发生这种情况.

我不知道你是如何安装它的,但是必须有一个配置.你可以改变它,但也许这不是一个好主意,这些默认值存在是有原因的.一个更好的选择是在bash或sh中显式运行脚本,如下所示:

sh db_backup.sh

UPDATE

在某些情况下,@Doc的评论也可能有所帮助:

I was dealing with the same sort of behaviour. I noticed in my /etc/fstab,even though I had “exec” in there explicitly for my partition,I also had “user” after it.. As soon as I removed user and remounted the partition,my users could exec on the partition.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读