मेरे क्रॉस्टैब में सभी कमांड "अनुमति से इनकार" के साथ विफल


10

अद्यतन: इस मुद्दे को निर्णायक रूप से उत्तर नहीं दिया जाएगा; मैं दूसरे डिस्ट्रो में चला गया हूं और मैंने इस समस्या को नहीं देखा है। मैं उस समय उपलब्ध व्यावहारिक जवाब के साथ इसे ठीक करने में सक्षम नहीं था, लेकिन आपकी ईंधन दक्षता भिन्न हो सकती है (वाईएमएमवी)।


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

तो कोंट्राब पढ़ा जा रहा है , लेकिन किसी भी तरह यह कुछ भी निष्पादित नहीं कर सकता है (निश्चित रूप से मैंने उसी उपयोगकर्ता के रूप में लॉग इन होने पर कमांडों को सत्यापित किया है)। कोई विचार क्यों?

/etc/cron.allowऔर /etc/cron.denyमौजूद नहीं है।

crontab समूह सेट है:

$ 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हर मिनट में दिखाई देती हैं (धन्यवाद @ आला):

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 सत्र प्रबंधन
  • इनहेरिटेबल कैपेबिलिटीज मैनेजमेंट

क्या उनमें से कोई भी सुरक्षित रूप से अक्षम हो सकता है? मैं किसी भी एन्क्रिप्टेड फाइल सिस्टम का उपयोग नहीं कर रहा हूं।

एक डेबियन बग प्रविष्टि के आधार पर मैंने दौड़ने की कोशिश की 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) सब मेरे उपयोगकर्ता द्वारा पठनीय हैं।

उबंटू 13.04 के साथ एक अन्य होस्ट पर, एक ही उपयोगकर्ता क्रॉस्टैब के साथ, /etc/cron.{allow,deny}ऊपर जैसी कोई अनुमतियाँ, और crontabसमूह का सदस्य नहीं होने के कारण , यह ठीक काम करता है (कमांड्स में आउटपुट नहीं है लेकिन लॉग इन करता है /var/log/syslog)।


पहली क्रॉस्टैब लाइन को बदलकर:

* * * * * /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

मैंने सत्यापित किया है कि क्रॉस्टैब कमांड बिल्कुल भी नहीं चलाए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)

मैं शुद्ध नहीं कर सकता और फिर अनम्यूट निर्भरता के कारण इन्हें पुनः स्थापित कर सकता हूं।


क्या आपने क्रोन के रूप में लॉग इन करने और कमांड निष्पादित करने का प्रयास किया था?
NotFromBrooklyn

@ l0b0, crontab फ़ोल्डर के अंदर ही crontab फ़ाइल की अनुमतियों के बारे में क्या है, अर्थात /var/spool/cron/crontabs/username?
आल्हा अली

1
हम्म। /var/log/auth.logCRON के बारे में क्या कहना है?
आल्हा अली

@NotFromBrooklyn id cron->id: cron: No such user
l0b0

1
@ मुझे कैसे पता चलेगा? मैं कर रहा हूँ एक स्थानीय , उपयोगकर्ता है कि यदि आप क्या मतलब है।
l0b0

जवाबों:


2

PAM bad jump in stack एक बड़ा सुराग है।

आपके /etc/pam.d/cronस्टॉक संस्करण से अंत में एक अतिरिक्त पंक्ति के साथ भिन्नता है:

session [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid

success=1बिट का अर्थ है "इस मॉड्यूल सफल होता है, तो अगले शासन को छोड़"। केवल कोई अगला नियम नहीं है, क्योंकि यह आपके PAM कॉन्फ़िगरेशन में अंतिम पंक्ति है।


मेरे पास एक ही पंक्ति थी (इंटरवेब पर कहीं से मिली होगी), इसे टिप्पणी की और सब कुछ फिर से काम करना शुरू कर दिया।
माइक

1

आपका PAM कॉन्फ़िगरेशन सॉर्ट आउट है। यह सामान्य है यदि आपने फिंगरप्रिंट स्कैनर, LDAP खाते, USB कुंजी या सॉर्ट जैसे "बाहरी" प्रमाणीकरण विधियों का उपयोग किया है। मूल रूप से क्रोन एक फिंगरप्रिंट स्कैनर काम नहीं कर सकता है इसलिए यह आपके अनुसार लॉगिन नहीं कर सकता है।

आपको अपकमिंग कॉन्फ़िगरेशन को हटाने की आवश्यकता है, /etc/pam.d/common-*हालांकि इसे ट्रैक करना थोड़ा मुश्किल हो सकता है, विशेष रूप से यदि आपने मैन्युअल रूप से कुछ सक्षम नहीं किया है (उदाहरण के लिए यदि फिंगर प्रिंट स्कैनर सेटअप स्क्रिप्ट कुछ चालू हो गई है)।

मैं आपको यह बताने में ज्यादा मदद नहीं कर सकता कि उन फाइलों में क्या होना चाहिए। आपके सेटअप के आधार पर बहुत सी चीजें अलग हो सकती हैं। लेकिन सिर्फ "यूनिक्स ऑथेंटिकेशन" के साथ आपके बाईं ओर "आवश्यक" ऑर्टिकल तरीकों को अक्षम करना एक अच्छा पहला कदम हो सकता है।

आप इसे pam-auth-updateरूट के रूप में चलाकर और अन्य बॉक्सों को अन-चेक कर सकते हैं। बहुत सावधान रहें क्योंकि यह आपको एक सिस्टम के साथ छोड़ सकता है जिसे आप गलत तरीके से लॉग इन नहीं कर सकते हैं। उन्हें एक बार में अक्षम करें, सुरक्षा के लिए रीबूट करें, और परीक्षण करें। कभी "यूनिक्स प्रमाणीकरण"


मुझे स्पष्ट होना चाहिए, एक फिंगर प्रिंट स्कैनर सामान्य रूप से "वैकल्पिक" होना चाहिए "आवश्यक" नहीं। इसे "आवश्यक" बनाने का मतलब है कि आपके फिंगरप्रिंट के बिना चीजें "लॉगिन" नहीं हो सकती हैं। इस तरह की कॉन्फ़िगरेशन त्रुटि के कारण आप इस तरह की समस्या को समाप्त कर सकते हैं। हालाँकि, आम तौर पर एक फिंगर प्रिंट स्कैनर (या USB या LDAP या SMB या जो भी) समस्या का कारण नहीं होगा।
coteyr

मैंने कोई फ़िंगरप्रिंट स्कैनर या USB ड्राइव कनेक्ट नहीं किया है। क्या आप शायद जानते हैं कि मैं यह जांच सकता हूं कि डिफ़ॉल्ट सामग्री क्या /etc/pam.d/common-*होगी?
l0b0

sudo dpkg-reconfigure pamहै सबसे अच्छा तरीका है। हालाँकि, आप sudo dpkg -i --force-confmissफ़ाइल (CAREFUL) को हटाने के बाद उपयोग कर सकते हैं और यह एक लिंक को वापस देखेगा: superuser.com/questions/69045/…
coteyr

/usr/sbin/dpkg-reconfigure: pam is not installed। मैंने भी कोशिश की sudo dpkg-reconfigure libpam-runtime, लेकिन इससे कोई फायदा नहीं हुआ।
l0b0

1
मुझे नहीं लगता कि यह एक लापता पैकेज है। मुझे लगता है कि यह एक गड़बड़ विन्यास है। "स्टैम में पीएएम खराब कूद" का अर्थ है कि, किसी कारण से, एक आवश्यक पैम मॉड्यूल प्रमाणित नहीं कर सका। जैसा कि मैंने कहा कि यह आम तौर पर लोगों द्वारा अपने पीएम फाइलों के साथ खिलवाड़ करने के कारण होता है, या तो जानबूझकर या किसी आवश्यक मॉड्यूल को जोड़ने के लिए जो काम नहीं कर रहा है। कुछ उदाहरण SMB प्रमाणीकरण, LDAP प्रमाणीकरण, हार्डवेयर आधारित प्रमाणीकरण आदि होंगे। ध्यान रखें, कुछ पैकेज में एक फ़ाइल जोड़ी जा सकती है जो समस्या का कारण बन रही है। पाम काम कर रहा है, क्योंकि आप लॉग इन कर सकते हैं, लेकिन यह भी काम नहीं कर रहा है क्योंकि क्रोन नहीं कर सकता है
coteyr

1

हम एक LDAP उपयोगकर्ता (गैर मशीन उपयोगकर्ता) से क्रोन को शेड्यूल करने की कोशिश कर रहे थे और permission deniedबुनियादी echoकमांड या स्क्रिप्ट को अंदर लाने के लिए भी crontabऐसा ही कर रहे थे , जबकि यह पूरी तरह से मशीनों के उपयोगकर्ताओं (जिनके पास / etc / passwd में प्रविष्टियाँ हैं) से फाइल काम कर रहा था। ओपी द्वारा जोड़े गए विस्तृत समस्या निवारण टिप्पणियों से मदद लेते हुए, हमने फ़ाइल की जाँच की /var/log/auth.logजहाँ हमें यह पंक्ति मिली:

pam_sss(cron:account): Access denied for user my_username: 6 (Permission denied)

Google की थोड़ी सी खोज मुझे इस जवाब पर ले गई जो हमारे लिए काम करता है। विवरण को यहां भी जोड़ना।

में /etc/sssd/sssd.conf, हमारे डोमेन के तहत, हम एक प्रविष्टि (अंतिम पंक्ति देखें) इस तरह जोड़ा।

[domain/my.domain.com]
....
ad_gpo_map_interactive = +cron

और फिर बस किया sudo service sssd restartऔर यह एक आकर्षण की तरह काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.