Непривилегированный пользователь не может редактировать свой файл crontab с помощью команды «crontab -e»

$ crontab -e
no crontab for oracle - using an empty one
/tmp/crontab.Lm34gsJV: Permission denied
$

Решение

Это может произойти в основном из-за неправильного разрешения на каталог /tmp.
Когда пользователь пытается отредактировать crontab с помощью команды «crontab -e», в каталоге / tmp создается временный файл crontab, который перезаписывается в фактическом файле crontab, когда пользователь сохраняет изменения.
Неправильные права владельца группы (root) также могут вызывать эту ошибку.
Для решения проблемы проверьте 2 вещи на ввашем сервере.

Проверьте права на /tmp

1. убедитесь, что права доступа к каталогу /tmp «drwxrwxrwt».

# ls -ld /tmp/
drwxr-xr-x. 13 root root 4096 May 14 10:48 /tmp/

Как вы можете видеть в выводе выше, это неверные права.

2. Восстановите правильные права следующим образом:

# chmod 1777 /tmp

Каталог должен быть разрешен а чтение, запись и выполнение.

Также только владелец файла может удалить его; в противном случае любой пользователь может удалить любой произвольный файл в каталоге.

3. Попробуйте создать новый файл в /tmp/, чтобы проверить:

# touch /tmp/test_file

Проверьте разрешения SELinux

1. Вы также можете проверить, включен ли SELinux в вашей системе.

SELinux в некоторых случаях, если установлен неправильно, может создать проблемы.

Чтобы проверить, включен ли SELinux:

# getenforce
Enforcing

2. Давайте временно отключим SELinux, чтобы проверить, решена ли проблема.

# setenforce 0

3. Проверьте настройки, отредактировав пользовательский crontab.

# crontab -e
4. Если все работает нормально, вы можете включить SELinux обратно и использовать «restorecon» для восстановления правильного разрешения каталога /tmp.
# setenforce 1
# restorecon -v /tmp
Поделитесь статьей:

Добавить комментарий