我的 crontab(以用户身份运行)包含以下命令
00-59 00-23 * * * /usr/bin/smbget -R smb://192.168.10.32/Data -u USER -p PASSWORD
但我收到一个错误
您没有足够的权限访问
smb://192.168.10.32/Data/
但同样的命令我能从命令行执行(以用户身份运行)。
如何授予 crontab 权限来解决这个问题?
答案1
我遇到了同样的问题,花了大约 6 个小时才找到答案。您可以免费获得:
当您正确登录时,您将拥有一个环境变量 USER=root - 当您从 crontab 运行作业时,它不会出现在您的环境中。
要在 crontab 中为一个命令设置环境变量,只需将其直接放在命令之前(即在时间/日期规范之后)。因此,对于您的情况:
00-59 00-23 * * * USER=root /usr/bin/smbget -R smb://192.168.10.32/Data -u USER -p PASSWORD
答案2
我会设置 Autofs 来负责挂载 SMB 文件系统。您可以使用凭证文件来使其更安全一些。从那里,您的 cronjob 只需 cp /mnt/smbshare/data /home/whomever/whereever。
Autofs 不会永远保持 SMB 共享处于挂载状态,并且它将帮助您省去尝试弄清楚 cron 内部的那些 SMB 工具的麻烦。