Não é possível editar o crontab como usuário não root

2

Quando eu uso o comando crontab -e no meu servidor Debian como um usuário não root (neste caso como postgres), eu não posso editá-lo por causa do "/tmp/crontab.SJlY0Y/crontab" [Permission Denied]

crontab -l , por outro lado, funciona bem. Como posso resolver este problema?

Aqui estão as permissões atuais:

$ ls -l /tmp/crontab.SJlY0Y/crontab
-rw------- 1 root postgres 1.2K Aug  3 11:44 /tmp/crontab.SJlY0Y/crontab
$ ls -l /var/spool/cron
total 12K
drwxrwx--T 2 daemon daemon  4.0K Sep 12  2012 atjobs
drwxrwx--T 2 daemon daemon  4.0K Jun  9  2012 atspool
drwx-wx--T 2 root   crontab 4.0K Aug  3 11:15 crontabs
$ ls -l /var/spool/cron/crontabs
total 12K
-rw------- 1 git      crontab 1.3K Mar  2 16:48 git
-rw------- 1 postgres crontab 1.4K Aug  3 11:15 postgres
-rw------- 1 root     root    2.3K Jul 20 20:32 root
$ ls -l /usr/bin/crontab
-rwsr-xr-x 1 root root 36K Jul  3  2012 /usr/bin/crontab
$ ls -ld /tmp/
drwxrwxrwt 6 root root 4.0K Aug  3 11:43 /tmp/
    
por Thurion 03.08.2014 / 11:47

2 respostas

3
$ ls -l /usr/bin/crontab
-rwsr-xr-x 1 root root 36K Jul  3  2012 /usr/bin/crontab

A propriedade e a permissão devem, na verdade, ser

-rwxr-sr-x 1 root crontab 35880 Jul  3  2012 /usr/bin/crontab

Como o Debian sarge, crontab é setontcrontab, não setuid root, como solicitado no bug # 18333 .

Esta é a causa do seu problema: o programa crontab espera executar o setgid, não o setuid, portanto ele cria o arquivo temporário como o usuário e o grupo em execução, que são root e o grupo primário do chamador do usuário chamador e o grupo crontab .

Reinstale o pacote cron :

apt-get --reinstall install cron

(como root). Verifique se /var/spool/cron/crontabs tem as permissões e propriedade corretas:

drwx-wx--T 2 root crontab 4096 Oct  8  2013 /var/spool/cron/crontabs

No futuro, não mexa com permissões de arquivos do sistema.

    
por 04.08.2014 / 00:50
0

Não é possível usar apt-get --reinstall install cron porque ele retorna o seguinte erro:

gateway:/home/firewall# apt-get --reinstall install cron
Reading package lists... Done
Building dependency tree... Done
Suggested packages:
  anacron logrotate lockfile-progs checksecurity
Recommended packages:
  exim4 postfix mail-transport-agent
The following NEW packages will be installed:
  cron
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/78.4kB of archives.
After unpacking 303kB of additional disk space will be used.
(Reading database ... 48768 files and directories currently installed.)
Unpacking cron (from .../cron_3.0pl1-100_i386.deb) ...
dpkg: error processing /var/cache/apt/archives/cron_3.0pl1-100_i386.deb (--unpack):
 ***unable to make backup link of './usr/bin/crontab' before installing new version: Operation not permitted***
Errors were encountered while processing:
 /var/cache/apt/archives/cron_3.0pl1-100_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
gateway:/home/firewall#

E se eu tentar apagar o arquivo manualmente, ele também não permite. Como posso apagar o arquivo, pois ele não tem permissões?

gateway:~# ls -la /usr/bin/crontab
---------- 1 root crontab 26380 Dec 20  2006 /usr/bin/crontab
    
por 20.10.2014 / 21:45