我有一个脚本,位于/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}在那里,它完美地运作。我已经学到了更多关于权限的知识,我的数据库现在每天备份。好哇!
答案 0 :(得分:2)
问题是:
drwx--x--x 14 gf gf 4096 Mar 13 14:47 ../
如您所见gf
可以read
,write
和excecute
,但其他用户只能excecute
。
注意这是folder
。因此,如果不能访问readable
里面的文件。
您需要做的是确保此文件夹和其他所有父文件夹均为readable
。类似的东西:
chmod 755 <folder name>
所以你会得到:
drwxr-xr-x 14 gf gf 4096 Mar 13 14:47 ../
如果您不是root
或gf
用户,请注意。你将无法做任何这些事情。