อัปเดต: ปัญหานี้จะไม่ได้รับคำตอบอย่างแน่นอน; ฉันย้ายไปที่ distro อื่นและไม่ได้สังเกตปัญหานี้ตั้งแต่ ฉันไม่สามารถแก้ไขได้ด้วยคำตอบที่ลึกซึ้งในขณะนั้น แต่ประสิทธิภาพการใช้เชื้อเพลิงของคุณอาจแตกต่างกันไป (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
ทุกนาที (ขอบคุณ @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) แสดงรายการทั้งหมดเหล่านี้และเปิดใช้งานทั้งหมด:
- การพิสูจน์ตัวตน Unix
- ภูตพวงกุญแจ GNOME - การจัดการพวงกุญแจเข้าสู่ระบบ
- การจัดการคีย์ eCryptfs / Mount
- การจัดการเซสชัน ConsoleKit
- การจัดการความสามารถที่สืบทอดได้
สามารถปิดใช้งานใด ๆ ของพวกเขาอย่างปลอดภัย? ฉันไม่ได้ใช้ระบบไฟล์ที่เข้ารหัสใด ๆ
จากรายการข้อบกพร่องของเดเบียนฉันพยายามเรียกใช้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
) ทั้งหมดที่สามารถอ่านได้โดยผู้ใช้ของฉัน
บนโฮสต์อื่นที่มี Ubuntu 13.04 ที่มีผู้ใช้ crontab เดียวกันไม่มี/etc/cron.{allow,deny}
สิทธิ์เหมือนข้างต้นและไม่ได้เป็นสมาชิกของcrontab
กลุ่มมันใช้งานได้ดี (บันทึกคำสั่ง แต่ไม่ใช่เอาต์พุต/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