Bash脚本的权限

时间:2015-03-16 14:19:04

标签: linux redhat

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

我基本上希望它是使用mysqldump备份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访问权限,因此我无法以其身份登录。

mysqldump命令是:

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

我不知道该怎么做:(

修改 为了将来的参考和任何遇到同样挫折的人,我找到了解决方案。

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

所以我开始认为我用graphite创建了backup.sh文件的用户,也许我可以像他一样运行cron作业。所以我开始寻找crontab,仍然得到sudo错误(tty not found)和事情。然后我回到了backup.sh文件中的mysqldump命令,而代替sudo启动该命令,我正常运行它并放置{{1}在那里,它完美地运作。我已经学到了更多关于权限的知识,我的数据库现在每天备份。好哇!

1 个答案:

答案 0 :(得分:2)

问题是:

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用户,请

注意。你将无法做任何这些事情。