在相对较新的 Ubuntu 22.04 实例上,我安装于:
sudo apt update
sudo apt install at
现在,当我尝试以一般用户身份使用它时,我收到错误消息:“您无权使用”
我发现本文,与错误消息完全匹配,但引用了不存在的 /etc/at.allow。文件 /etc/at.deny 确实存在,但其中没有此用户 (dennis) 的名字。
在调试中,我尝试添加一个文件 /etc/at.allow,其内容中仅包含所需的用户名,如下所示,错误发生了变化:
> sudo su -
# echo 'dennis' > /etc/at.allow
# chmod a+r /etc/at.allow
# atd restart
# exit
> at now
warning: commands will be executed using /bin/sh
Cannot open lockfile /var/spool/cron/atjobs/.SEQ: Permission denied
我找到了这个权限问题的答案在 StackOverflow 上也就是说,该 .SEQ 文件的权限应为 777。我怀疑这是否正确(而可能是解决某些无法理解的问题的一种蛮力方法),但我确实尝试了,结果如下:
> sudo chmod 777 /var/spool/cron/atjobs/.SEQ
> echo 'ls' | at now
warning: commands will be executed using /bin/sh
job 5 at Wed May 24 21:05:00 2023
Can't signal atd (permission denied)
我还能尝试什么来让它工作?或者我应该提供哪些日志?
答案1
这是由于 aptitude 未执行其安装后工作(“处理触发器”),原因是某些软件包(尤其是与手刹相关的软件包)被保留。一旦我删除了“保留”(且不需要)的软件包,我就会删除并重新安装:
sudo apt purge at
sudo apt install at
这解决了问题。