আমার ক্রন্টবায় সমস্ত কমান্ড "অনুমতি অস্বীকার" করে ব্যর্থ হয়েছে


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অস্তিত্ব নেই।

ক্রোনটব গ্রুপ সেটুইড সেট করেছে:

$ stat --format '%A %U %G' /usr/bin/crontab
-rwxr-sr-x root crontab

ক্রোনট্যাব ডিরেক্টরিতে সঠিক অনুমতি রয়েছে বলে মনে হচ্ছে:

$ stat --format '%A %U %G' /var/spool/cron/crontabs
drwx-wx--T root 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-auth-update(ধন্যবাদ @ কোটায়ার) এগুলির সমস্ত তালিকা তৈরি করে এবং সেগুলি সমস্ত সক্ষম হয়েছে:

  • ইউনিক্স প্রমাণীকরণ
  • জিনোম কেরিং ডেমন - লগইন কেরিং ব্যবস্থাপনা
  • eCryptfs কী / মাউন্ট ম্যানেজমেন্ট
  • কনসোলকিট সেশন ম্যানেজমেন্ট
  • উত্তরাধিকারী যোগ্যতা পরিচালনা

তাদের মধ্যে কেউ নিরাপদে অক্ষম হতে পারে? আমি কোনও এনক্রিপ্ট করা ফাইল সিস্টেম ব্যবহার করছি না।

একটি ডেবিয়ান বাগ প্রবেশের উপর ভিত্তি করে আমি দৌড়ানোর চেষ্টা 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) আমার সকল ব্যবহারকারী দ্বারা পাঠযোগ্য।

/etc/cron.{allow,deny}উপরের মতো একই ব্যবহারকারী ক্রোনটব, না , একই অনুমতি এবং crontabগ্রুপের সদস্য না হয়ে উবুন্টু ১৩.০৪ সহ অন্য একটি হোস্টে , এটি ঠিক কাজ করে (কমান্ডগুলিতে লগ করে তবে আউটপুটে নয় /var/log/syslog)।


প্রথম ক্রন্টব লাইন পরিবর্তন করে:

* * * * * /usr/bin/env >/tmp/env.log 2>&1

এবং পরীক্ষা করা / টিএমপি বিশ্ব লিখনযোগ্য:

$ 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

প্যাম প্যাকেজ ইনস্টল করা হয়েছে:

$ 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)

আনমেট নির্ভরতার কারণে আমি এগুলি পুনরায় ইনস্টল করতে পারি না।


আপনি কি ক্রোন হিসাবে লগ ইন এবং আদেশগুলি কার্যকর করার চেষ্টা করেছিলেন?
ফ্রেমবুকলিন

@ l0b0, ক্রোনট্যাব ফোল্ডারের ভিতরে ক্রন্টব ফাইলের অনুমতি সম্পর্কে কী হবে /var/spool/cron/crontabs/username?
আলা আলী

1
হুম। /var/log/auth.logCRON সম্পর্কে কি বলে?
আলা আলী

@ নটফ্রম ব্রুকলিন 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বিট মানে "এই মডিউল সফল হলে, পরবর্তী শাসন লাফালাফি"। কেবলমাত্র পরবর্তী কোনও নিয়ম নেই, কারণ এটি আপনার প্যাম কনফিগারেশনের শেষ লাইন।


আমার একই লাইন ছিল (অবশ্যই আন্তঃবিশ্বের কোথাও থেকে এটি পেয়েছিল), এটি মন্তব্য করে এবং সবকিছু আবার কাজ শুরু করে।
মাইক

1

আপনার পিএএম কনফিগারেশনটি এর বাইরে of আপনি যদি আঙুলের ছাপ স্ক্যানার, এলডিএপি অ্যাকাউন্ট, ইউএসবি কী বা বাছাইয়ের মতো "বাহ্যিক" প্রমাণীকরণ পদ্ধতি ব্যবহার করেন তবে এটি সাধারণ। মূলত ক্রোন ফিঙ্গারপ্রিন্ট স্ক্যানার কাজ করতে পারে না তাই এটি আপনার মতো লগইন করতে পারে না।

আপনাকে আপত্তিজনক কনফিগারেশনটি সরিয়ে ফেলতে /etc/pam.d/common-*হবে যদিও এটিকে ট্র্যাক করা কিছুটা কঠিন হতে পারে, বিশেষত যদি আপনি ম্যানুয়ালি কোনও কিছু সক্ষম না করেন (উদাহরণস্বরূপ যদি কোনও ফিঙ্গার প্রিন্ট স্ক্যানার সেটআপ স্ক্রিপ্ট কিছু চালু করে থাকে)।

এই ফাইলগুলির মধ্যে কী হওয়া উচিত তা আপনাকে জানাতে আমি বেশি সাহায্য করতে পারি না। আপনার সেটআপের উপর নির্ভর করে অনেক কিছুই আলাদা হতে পারে। তবে আপনার "বামে" ইউনিক্স প্রমাণীকরণের সাহায্যে "প্রয়োজনীয়" প্রমাণীকরণের পদ্ধতিগুলি অক্ষম করা ভাল প্রথম পদক্ষেপ হতে পারে।

আপনি এটি pam-auth-updateরুট হিসাবে চালিয়ে এবং অন্যান্য বাক্সগুলি আন-চেক করে করতে পারেন। খুব সাবধানতা অবলম্বন করুন কারণ এটি আপনাকে এমন একটি সিস্টেমে ছেড়ে যেতে পারে যা ভুলভাবে হয়ে গেলে আপনি লগইন করতে পারবেন না। এগুলিকে একবারে অক্ষম করুন, সুরক্ষার জন্য পুনরায় বুট করুন এবং পরীক্ষা করুন। "ইউনিক্স প্রমাণীকরণ" কখনই অক্ষম করুন


আমার পরিষ্কার হওয়া উচিত, একটি আঙুলের মুদ্রণ স্ক্যানার সাধারণত "alচ্ছিক" "প্রয়োজন" না হওয়া উচিত। এটি "প্রয়োজনীয়" করা মানে আপনার আঙুলের ছাপ ছাড়া জিনিসগুলি "লগইন" করতে পারে না। এর মতো একটি কনফিগারেশন ত্রুটির কারণে আপনি এই জাতীয় সমস্যাটি শেষ করতে পারেন। তবে, সাধারণত একটি আঙুলের মুদ্রণ স্ক্যানার (বা ইউএসবি বা এলডিএপি বা এসএমবি বা যাই হোক না কেন) সমস্যার কারণ হবে না।
coteyr

আমি কোনও ফিঙ্গারপ্রিন্ট স্ক্যানার বা ইউএসবি ড্রাইভ সংযুক্ত করি নি। আপনি সম্ভবত কোথাও জানেন কি আমি ডিফল্ট সামগ্রীটি কী /etc/pam.d/common-*হতে পারে তা যাচাই করতে পারি?
l0b0

sudo dpkg-reconfigure pamহয় সেরা উপায়। যাইহোক, যদি আপনি ব্যবহার করতে পারেন sudo dpkg -i --force-confmissফাইল (সাবধান) মুছে ফেলার পর এবং এটি আবার করা হবে এই লিঙ্কে দেখুন: superuser.com/questions/69045/...
coteyr

/usr/sbin/dpkg-reconfigure: pam is not installed। আমি চেষ্টাও করেছি sudo dpkg-reconfigure libpam-runtime, কিন্তু তাতে কোন লাভ হয়নি।
l0b0

1
আমি মনে করি না এটি একটি অনুপস্থিত প্যাকেজ। আমি মনে করি এটি একটি বিশৃঙ্খল কনফিগারেশন। "স্ট্যাকের পিএএম ব্যাড জাম্প" ত্রুটির অর্থ এই যে, কোনও কারণে প্রয়োজনীয় প্যাম মডিউল প্রমাণীকরণ করতে পারেনি। আমি যেমন বলেছি এটি সাধারণত লোকেরা তাদের পাম ফাইলগুলির সাথে জেনেশুনে বা ঘটনাক্রমে ম্যাসেজ করে এবং কাজ করে না এমন প্রয়োজনীয় মডিউল যুক্ত করে by কয়েকটি উদাহরণ এসএমবি প্রমাণীকরণ, এলডিএপি প্রমাণীকরণ, হার্ডওয়্যার ভিত্তিক প্রমাণীকরণ ইত্যাদি হবে mind মনে রাখবেন, কিছু প্যাকেজ কোনও ফাইল যুক্ত করেছে যা সমস্যা তৈরি করছে। পাম কাজ করছে, কারণ আপনি লগইন করতে পারেন, কিন্তু এটি কাজ করছে না কারণ ক্রোন পারে না
coteyr

1

আমরা একটি এলডিএপি ব্যবহারকারী (নন মেশিন ব্যবহারকারী) এর কাছ থেকে ক্রোন নির্ধারণ করার চেষ্টা করছিলাম এবং permission deniedএমনকি বেসিক echoকমান্ড বা স্ক্রিপ্টটি ভিতরে রাখার জন্য একই রকম হচ্ছিলাম crontab, যখন এটি মেশিন ব্যবহারকারীদের (যাদের / / etc / পাসডাব্লুতে প্রবেশ রয়েছে) সম্পূর্ণরূপে ফাইল কাজ করছিল। ওপি দ্বারা যুক্ত বিশদ সমাধানের মন্তব্যগুলির সহায়তা নিয়ে আমরা ফাইলটি পরীক্ষা /var/log/auth.logকরেছিলাম যেখানে এই লাইনটি পেয়েছি:

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

গুগল অনুসন্ধানের একটি বিট আমাকে এই উত্তরটিতে নিয়ে গেছে যা আমাদের পক্ষে কাজ করে। পাশাপাশি এখানে বিশদ যুক্ত করা হচ্ছে।

ইন /etc/sssd/sssd.conf, আমাদের ডোমেইন অধীনে, আমরা একটি এন্ট্রি (শেষ লাইনটি দেখুন) এই মত এখনো যোগ করেনি।

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

এবং তারপরে ঠিক করেছে sudo service sssd restartএবং এটি একটি কবজির মতো কাজ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.