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
可以 read
、write
和 excecute
,但其他用户只能 excecute
。
注意这是一个folder
。因此,如果它不是 readable
,则无法访问其中的文件。
您需要做的是确保此文件夹 和所有其他父文件夹 是 readable
。像 :
chmod 755 <folder name>
所以你会得到:
drwxr-xr-x 14 gf gf 4096 Mar 13 14:47 ../
注意 如果您不是 root
或 gf
用户。你将无法做任何这些事情。
我有一个脚本,位于 /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
可以 read
、write
和 excecute
,但其他用户只能 excecute
。
注意这是一个folder
。因此,如果它不是 readable
,则无法访问其中的文件。
您需要做的是确保此文件夹 和所有其他父文件夹 是 readable
。像 :
chmod 755 <folder name>
所以你会得到:
drwxr-xr-x 14 gf gf 4096 Mar 13 14:47 ../
注意 如果您不是 root
或 gf
用户。你将无法做任何这些事情。