Ubuntu 运行文件时,出现 Permission denied

本文介绍了在Ubuntu系统中遇到.sh文件无法执行时的解决办法,通过使用chmod命令更改文件权限来实现。详细解释了chmod命令中不同数字代表的含义,并展示了如何查看文件的权限设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Ubuntu下,执行sh文件时提示下面信息:
-bash: ./xx.sh: Permission denied

可以尝试以下方法解决:
chmod 777 xx.sh

执行其他类型的文件出错时,也可以此类推


  • Ubuntu中,chmod 755代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。
  • chmod 777代表user,group和others 都有读写和可执行权限。
  • 在终端输入ls -al,可以看到如: -rwx-r–r– (一共10个参数)
    • 第一个跟参数跟chmod无关
    • 2-4参数:属于user
    • 5-7参数:属于group
    • 8-10参数:属于others
    • 接下来就简单了:r=>可读 | w=>可写 | x=>可执行
    • r=4 w=2 x=1
  • 755就代表 rwx-xr-xr,而777代表rwx-rwx-rwx
### 解决 Ubuntu 上停止 MySQL 容器出现的权限拒绝问题 当尝试在 Ubuntu 系统上通过 `docker stop` 命令停止 MySQL 容器遇到权限被拒的情况,通常是因为当前用户缺少访问 Docker Daemon 的必要权限。以下是可能的原因以及解决方案: #### 权限不足的问题分析 Docker 默认只允许 root 用户或者属于 `docker` 组的用户操作容器。如果执行命令的用户未加入到该组,则会触发权限错误。 - 如果运行的是如下命令并收到权限拒绝消息: ```bash docker stop mysql_container_name_or_id ``` 则可以确认这是由于用户的权限设置不当引起的[^1]。 #### 解决方案一:将用户添加至 `docker` 组 可以通过将当前用户添加到 `docker` 组来授予其足够的权限以管理 Docker 资源。具体方法如下: ```bash sudo usermod -aG docker $USER ``` 完成上述更改之后,需重新登录使新配置生效。为了验证是否成功加入了 `docker` 组,可使用以下命令检查: ```bash groups ``` 此再次尝试停止容器应该不会再有权限问题发生。 #### 解决方案二:临提升权限 如果不希望永久修改用户权限,在每次调用 Docker CLI 工具前加上 `sudo` 是一种快速解决办法。例如: ```bash sudo docker stop mysql_container_name_or_id ``` 这种方法虽然有效但并不推荐长期采用,因为频繁输入密码可能会降低工作效率。 #### 额外注意事项 有即使已经正确设置了用户权限仍然无法正常工作,这可能是由其他因素引起,比如文件系统的安全模块 AppArmor 或 SELinux 设置干扰了进程间通信。对于这种情况,请确保这些防护机制没有阻止 Docker 进程连接到它的 Unix Socket 文件 `/var/run/docker.sock`[^2]。 另外需要注意的是,某些特定环境下的服务重启也可能影响到依赖关系链上的组件状态同步情况;如案例提到过 keystone 启动失败关联到了 Apache HTTP Server 的存在与否变化所造成的影响一样,因此建议排查是否存在类似的间接因果关系存在于目标环境中。 ```python import os os.system('id') # 查看当前UID/GID信息用于调试目的 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值