업데이트 :이 문제는 결정적으로 답변되지 않습니다. 나는 다른 배포판으로 옮겼으며 그 이후 로이 문제를 관찰하지 못했습니다. 당시에 사용 가능한 통찰력있는 답변으로 문제를 해결할 수 없었지만 연료 효율 (YMMV)이 다를 수 있습니다.
crontab -e
그리고 crontab -l
잘 작동 :
$ crontab -l | grep -v '^#'
* * * * * /usr/bin/env
* * * * * echo 'Hello from crontab'
그러나 매분마다 다음과 같은 두 가지 메시지가 표시됩니다 /var/log/syslog
.
Mon DD hh:mm:01 username CRON[PID]: Permission denied
따라서 crontab을 읽고 있지만 어떻게 든 아무것도 실행할 수 없습니다 (물론 동일한 사용자로 로그인 할 때 명령을 확인했습니다). 왜 그런지 알아?
/etc/cron.allow
그리고 /etc/cron.deny
존재하지 않습니다.
crontab은 setuid 그룹으로 설정됩니다.
$ stat --format '%A %U %G' /usr/bin/crontab
-rwxr-sr-x root crontab
crontabs 디렉토리에 올바른 권한이있는 것 같습니다.
$ stat --format '%A %U %G' /var/spool/cron/crontabs
drwx-wx--T root crontab
crontab 자체는 내 소유입니다 (놀랍게도 편집 할 수 있기 때문에).
$ sudo stat --format '%A %U %G' /var/spool/cron/crontabs/$USER
-rw------- username crontab
나는 그룹 의 회원이 아닙니다crontab
.
이 줄은 /var/log/auth.log
1 분마다 나타납니다 (@Alaa 덕분에).
Mon DD hh:mm:01 username CRON[1752]: pam_unix(cron:session): session opened for user username by (uid=0)
Mon DD hh:mm:01 username CRON[1752]: PAM bad jump in stack
아마도 PAM이 고장 났을까요? pam-auth-update
(감사 @coteyr)는이 모든 것을 나열하며 모두 활성화되어 있습니다.
- 유닉스 인증
- 그놈 키링 데몬-로그인 키링 관리
- eCryptfs 키 / 마운트 관리
- ConsoleKit 세션 관리
- 상속 가능한 기능 관리
안전하게 비활성화 할 수 있습니까? 암호화 된 파일 시스템을 사용하지 않습니다.
데비안 버그 항목을 기반으로 running을 시도한 debconf-show libpam-runtime
결과 다음과 같은 오류 메시지가 나타납니다.
debconf: DbDriver "passwords" warning: could not open /var/cache/debconf/passwords.dat: Permission denied
내용 /etc/pam.d/cron
:
# The PAM configuration file for the cron daemon
@include common-auth
# Read environment variables from pam_env's default files, /etc/environment
# and /etc/security/pam_env.conf.
session required pam_env.so
# In addition, read system locale information
session required pam_env.so envfile=/etc/default/locale
@include common-account
@include common-session-noninteractive
# Sets up user limits, please define limits for cron tasks
# through /etc/security/limits.conf
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid
언급 된 파일 ( /etc/environment
, pam_env.so
, /etc/default/locale
, pam_limits.so
, pam_succeed_if.so
) 내 모든 사용자가 읽을 수 있습니다.
동일한 사용자 crontab, no /etc/cron.{allow,deny}
, 위와 동일한 권한이 있고 crontab
그룹 의 구성원이 아닌 Ubuntu 13.04를 사용하는 다른 호스트에서는 정상적으로 작동합니다 (명령은 기록하지만 출력은 안 됨 /var/log/syslog
).
첫 번째 crontab 줄을 변경하여 :
* * * * * /usr/bin/env >/tmp/env.log 2>&1
/ tmp가 월드 쓰기 가능한지 확인하십시오.
$ sudo -u nobody touch /tmp/test
$ ls /tmp/test
/tmp/test
$ ls -ld /tmp
drwxrwxrwt 15 root root 12288 May 27 10:18 /tmp
crontab 명령이 전혀 실행되지 않는 것을 확인했습니다 . Permission denied
메시지는 여전히에 표시 /var/log/syslog
되지만 /tmp/env.log
생성되지는 않습니다.
무작위 /etc/pam.d
설정 목록을 기반으로 다음과 같은 불일치가 발견되었습니다.
$ grep '^[^#]' /etc/pam.d/sshd
@include common-auth
account required pam_nologin.so
@include common-account
@include common-session
session optional pam_motd.so # [1]
session optional pam_mail.so standard noenv # [1]
session required pam_limits.so
session required pam_env.so # [1]
session required pam_env.so user_readenv=1 envfile=/etc/default/locale
@include common-password
$ grep '^[^#]' /etc/pam.d/common-session
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_umask.so
session required pam_unix.so
session optional pam_ecryptfs.so unwrap
session optional pam_ck_connector.so nox11
$ grep '^[^#]' /etc/pam.d/common-account
account [success=1 new_authtok_reqd=done default=ignore] pam_unix.so
account requisite pam_deny.so
account required pam_permit.so
$ grep '^[^#]' /etc/pam.d/common-session-noninteractive
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session optional pam_umask.so
session required pam_unix.so
session optional pam_ecryptfs.so unwrap
설치된 PAM 패키지 :
$ dpkg --get-selections | grep --invert-match deinstall | cut --fields 1 | grep pam
libpam-cap
libpam-ck-connector
libpam-gnome-keyring
libpam-modules
libpam-modules-bin
libpam-runtime
libpam0g
python-pam
나는 이것을 다시 설치하려고 시도했지만 도움이되지 않았다.
$ sudo apt-get install --reinstall $(dpkg --get-selections | grep --invert-match deinstall | cut --fields 1 | grep pam)
충족되지 않은 종속성으로 인해 제거하고 다시 설치할 수 없습니다.
/var/spool/cron/crontabs/username
어떻습니까?
/var/log/auth.log
CRON에 대해 무엇을 말합니까?
id cron
>id: cron: No such user