Ubuntu Shell脚本权限异常求助:无法执行且无法赋予执行权限
无法执行Shell脚本且无法分配执行权限的问题排查与解决
核心问题分析与修复步骤
1. 错误的chmod参数导致执行权限未添加
你执行的sudo chmod -x ~/.local/bin/renew_ssl.sh是移除执行权限的操作,而非添加。正确的添加执行权限命令是使用+x参数:
chmod +x ~/.local/bin/renew_ssl.sh
因为文件所有者是myuser,不需要用sudo执行chmod,直接用普通用户权限即可完成权限修改。执行后再用ls -l检查,权限会变成-rwxrw-r--,此时直接运行脚本就不会提示权限拒绝。
2. sudo运行脚本提示“command not found”的原因
sudo默认使用的PATH环境变量不包含用户个人目录(如/home/myuser/.local/bin),所以直接用sudo renew_ssl.sh会找不到命令。解决方式有两种:
- 使用绝对路径运行脚本:
sudo /home/myuser/.local/bin/renew_ssl.sh - 更合理的方式:给脚本添加执行权限后,直接以普通用户身份运行脚本——因为你的脚本内部已经包含
sudo命令,运行时会自动提示输入sudo密码,无需用sudo启动整个脚本。
3. 额外注意事项
确保你的myuser账号拥有执行脚本内命令的sudo权限,比如能通过sudo操作systemctl、certbot、docker。可以通过编辑sudoers文件(使用visudo命令)配置免密权限,或者确保执行时输入的密码能通过验证。
内容的提问来源于stack exchange,提问作者Ian M
相关产品推荐
相关产品推荐

