Bash 脚本的权限

Permissions for a Bash Script

我有一个脚本,位于 /home/domain/cron/backup.sh

我基本上希望它是使用 mysql 转储备份 mysql 数据库的 CRON 作业。当我登录到 SSH 时,该命令有效,但是当我想 运行 来自 cron 作业的文件时,它返回权限被拒绝。

我要转储到的文件夹名为 'dbbackup'。如果我在这个文件夹上 运行 ls -al 我得到:

drwxrwxrwx  2 root root 4096 Mar 16 14:07 ./
drwx--x--x 14 gf gf 4096 Mar 13 14:47 ../

gf 是系统上的另一个用户,也是 CRON 脚本 运行 作为的用户。

当我 运行 CRON 作业时,我得到以下响应:

database2015-16-03-2015.sql: Permission denied

我只能以名为 graphite 的用户身份登录 SSH,用户 gf 没有 shell 访问权限,因此我无法以他们的身份登录。

mysql转储命令是:

mysqldump db_2015 > /home/gf/dbbackup/database2015-$(date +%d-%m-%Y)$

我不知道该怎么办:(

编辑 为了将来参考和遇到与我相同的挫败感的任何人,我找到了解决方案。

最初我试图通过控制面板设置 cron 作业,在用户 gf 下(该用户没有 SSH 访问权限,因此我无法登录命令提示符)。但是当然这个用户没有运行这个backup.sh文件的权限。

所以我开始好好思考我创建 backup.sh 文件的用户,graphite,也许我可以 运行 像他一样的 cron 作业。所以我开始查看 crontab,但仍然遇到 sudo 错误(未找到 tty)和其他问题。然后我回到 backup.sh 文件中的 mysqldump 命令,并且 而不是 使用 sudo 启动该命令,我 运行 它像往常一样,并将 -u <username> and --password=<password> 放在那里,它工作得很好。我对权限有了更多的了解,现在我的数据库每天都会备份。万岁!

问题是这样的:

drwx--x--x 14 gf gf 4096 Mar 13 14:47 ../

如您所见,gf 可以 readwriteexcecute,但其他用户只能 excecute

注意这是一个folder。因此,如果它不是 readable,则无法访问其中的文件。

您需要做的是确保此文件夹 和所有其他父文件夹 readable。像 :

chmod 755 <folder name>

所以你会得到:

drwxr-xr-x 14 gf gf 4096 Mar 13 14:47 ../

注意 如果您不是 rootgf 用户。你将无法做任何这些事情。