执行Bash命令写入文件时遭遇Permission denied错误求助
执行Bash命令写入文件时遭遇Permission denied错误求助
Hey there, let's sort out this permission problem step by step!
问题原因
/usr/bin是系统核心目录,默认只有root用户或者拥有sudo权限的用户才能在里面写入文件。你用普通用户身份直接执行写入命令,自然会因为权限不足被拒绝。
解决方案
1. 用sudo提升权限执行写入命令
在你的命令前加上sudo,以root权限运行就能顺利把脚本写入/usr/bin了:
sudo printf '#!/bin/bash\nxvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf -q $*' > /usr/bin/newwkhtmltopdf.sh
执行时会要求你输入当前用户的密码(只要你的账号在sudo用户组里,Ubuntu默认管理员账号都满足)。
2. 给脚本添加可执行权限
写完脚本后别忘了给它加上执行权限,不然没法直接运行:
sudo chmod +x /usr/bin/newwkhtmltopdf.sh
额外建议(更安全的替代方案)
如果不是必须要把脚本放在系统目录里,其实更推荐放在用户专属的~/bin目录下,这样不用sudo权限,也不会改动系统文件:
- 先创建
~/bin目录(如果还没有的话):mkdir -p ~/bin - 把脚本写入这个目录:
printf '#!/bin/bash\nxvfb-run -a --server-args="-screen 0, 1024x768x24" /usr/bin/wkhtmltopdf -q $*' > ~/bin/newwkhtmltopdf.sh - 添加执行权限:
chmod +x ~/bin/newwkhtmltopdf.sh
Ubuntu默认会把~/bin加入环境变量PATH,之后你在终端任何位置直接输入脚本名称就能运行它。
备注:内容来源于stack exchange,提问作者Koji_422




