Crontab executes shell script: Mount error(13): Permission denied
Crontab executes shell script: Mount error(13): Permission denied
我有一个 RasPi,实际上我尝试执行一个 shellscript 以在每次重新启动时自动挂载一个文件夹。
脚本命令是:
sudo mount -t cifs 'folderpath' 'pointtomount' -o username=xxx,password=xxx,sec=ntlm
如果我手动使用它,它工作完美,但通过 cronjob 它响应 "Mount Error(13): Permission denied" 并且无法执行挂载。
表示 cronjob 至少执行该文件。
我的想法是手动挂载它并检查 /etc/fstab 或 /etc/mtab 中是否禁用了自动挂载。因为它只是一个文件夹,所以我只在 mtab 中找到它。
我不能写进去,但选项中没有 "noauto" 所以可能一切都是正确的。
不确定它是否有某物。与 crontab 执行权限相同,但 ls -lha /usr/bin/crontab 输出是 -rwxr-sr-x 1.
如果你们中有人知道如何解决这个问题,我将不胜感激。
谢谢
编辑 1:
好吧,几个小时后它似乎在 /home/pi/.config/lxsession/LXDE-pi/autostart.sh 中工作(键入 "sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart.sh")。在那个文件中我写了“@/home/pi/scripttoexecute.sh”。在我的执行脚本中,我写了 "sudo mount -t cifs 'foldertomount' 'directorypath' -o credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm"。显然要使用 smbcredentials 文件,请写入 "sudo nano /root/.smbcredentials" 并在其中 "username=xxx" 和下一行 "password=xxx" 和可选域。
感谢所有人,我希望这可以节省其他人的时间。
不确定它是否与之前的 apt-get upgrade 和 apt-get update 有共同之处。
这里有两点,首先每个用户都可以拥有自己的 crontab。例如:
crontab -e # Edit crontab of current user
crontab -u root -e # Edit crontab of root user (might need sudo for this)
crontab -u www-data -e # Edit crontab of www-data user
还有一点就是如果你不使用crontab -e
编辑文件,而是直接编辑/etc/crontab
文件(做类似vim /etc/crontab
的事情),你其实可以将您想要 运行 cron 的用户指定为:
* * * * * root mount -t cifs /path/to/folder /point/to/mount -o username=xxx,password=xxx,sec=ntlm
在重新启动时通过 root 的 crontab 到 运行,键入:
sudo crontab -e
并添加这一行:
@reboot mount -t cifs 'folderpath' 'pointtomount' -o username=xxx,password=xxx,sec=ntlm
但真的,你不应该 adding your auto-mounts to /etc/fstab
吗?
我有一个 RasPi,实际上我尝试执行一个 shellscript 以在每次重新启动时自动挂载一个文件夹。 脚本命令是: sudo mount -t cifs 'folderpath' 'pointtomount' -o username=xxx,password=xxx,sec=ntlm
如果我手动使用它,它工作完美,但通过 cronjob 它响应 "Mount Error(13): Permission denied" 并且无法执行挂载。 表示 cronjob 至少执行该文件。
我的想法是手动挂载它并检查 /etc/fstab 或 /etc/mtab 中是否禁用了自动挂载。因为它只是一个文件夹,所以我只在 mtab 中找到它。 我不能写进去,但选项中没有 "noauto" 所以可能一切都是正确的。
不确定它是否有某物。与 crontab 执行权限相同,但 ls -lha /usr/bin/crontab 输出是 -rwxr-sr-x 1.
如果你们中有人知道如何解决这个问题,我将不胜感激。 谢谢
编辑 1:
好吧,几个小时后它似乎在 /home/pi/.config/lxsession/LXDE-pi/autostart.sh 中工作(键入 "sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart.sh")。在那个文件中我写了“@/home/pi/scripttoexecute.sh”。在我的执行脚本中,我写了 "sudo mount -t cifs 'foldertomount' 'directorypath' -o credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777,sec=ntlm"。显然要使用 smbcredentials 文件,请写入 "sudo nano /root/.smbcredentials" 并在其中 "username=xxx" 和下一行 "password=xxx" 和可选域。 感谢所有人,我希望这可以节省其他人的时间。 不确定它是否与之前的 apt-get upgrade 和 apt-get update 有共同之处。
这里有两点,首先每个用户都可以拥有自己的 crontab。例如:
crontab -e # Edit crontab of current user
crontab -u root -e # Edit crontab of root user (might need sudo for this)
crontab -u www-data -e # Edit crontab of www-data user
还有一点就是如果你不使用crontab -e
编辑文件,而是直接编辑/etc/crontab
文件(做类似vim /etc/crontab
的事情),你其实可以将您想要 运行 cron 的用户指定为:
* * * * * root mount -t cifs /path/to/folder /point/to/mount -o username=xxx,password=xxx,sec=ntlm
在重新启动时通过 root 的 crontab 到 运行,键入:
sudo crontab -e
并添加这一行:
@reboot mount -t cifs 'folderpath' 'pointtomount' -o username=xxx,password=xxx,sec=ntlm
但真的,你不应该 adding your auto-mounts to /etc/fstab
吗?