更改uid后无法访问crontab

Ala*_*ain 6 cron uid

我最近更改了我的 linux 帐户的 uid(此更改的原因在于需要有一个精确的 uid 来访问挂载驱动器上的文件)。从那以后,我无法访问我的 crontab。键入后:

crontab -e
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

crontabs/my_login/: fopen: Permission denied
Run Code Online (Sandbox Code Playgroud)

我调查了与文件 /usr/bin/crontab 相关的权限,它是:

-rwxr-xr-x 1 root my_login 35984 Feb  9  2013
Run Code Online (Sandbox Code Playgroud)

但是,如果我查看 my_login 的 id,我会得到:

uid=11375(my_login) gid=1000(my_login) groups=1000(my_login),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),107(lpadmin),110(sambashare)
Run Code Online (Sandbox Code Playgroud)

我可以看到 gid 似乎有问题,但我不知道从这一点上该怎么做......

Ter*_*nce 9

您对该crontab文件的权限不正确。它应该是这样的:

-rwxr-sr-x 1 root crontab 35984 Feb  9  2013 /usr/bin/crontab
Run Code Online (Sandbox Code Playgroud)

要将您设置crontab为上述权限,请先更改所有权:

sudo chown root:crontab /usr/bin/crontab
Run Code Online (Sandbox Code Playgroud)

然后设置权限:

sudo chmod 2755 /usr/bin/crontab
Run Code Online (Sandbox Code Playgroud)

这应该将您设置crontab为正确的运行权限。

编辑:

另外,查看/var/spool/cron/crontabs/文件夹,您应该会看到类似于以下内容的内容:

terrance@terrance-ubuntu:~$ sudo ls -al /var/spool/cron/crontabs/
total 16
drwx-wx--T 2 root     crontab 4096 Dec 17 22:08 .
drwxr-xr-x 3 root     root    4096 Dec  1 07:24 ..
-rw------- 1 root     crontab 1185 Dec 17 22:08 root
-rw------- 1 terrance crontab 1130 Dec 17 21:47 terrance
Run Code Online (Sandbox Code Playgroud)

注意你的用户名。如果它没有正确的所有权,请键入以下内容进行更改:

sudo chown username:crontab /var/spool/cron/crontabs/username
Run Code Online (Sandbox Code Playgroud)

如果需要对该文件设置权限:

sudo chmod 600 /var/spool/cron/crontabs/username
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!