যখনই লিনাক্স বাক্সে কেউ এসএসএইচ দিয়ে লগ ইন করে তখনই প্রোগ্রামটি কার্যকর করুন


10

আমার একটি ছোট এসএসএইচ সার্ভার রয়েছে এবং আমি যখন এসএসএইচ দিয়ে কেউ লগ ইন করে তখন প্রতিবার স্ক্রিপ্ট লিখতে চাই।

এখন, আমি কিভাবে এটি সম্পর্কে যেতে হবে?

আমি স্ক্রিপ্টটি যে কোনও সময় লগইন চালানোর জন্য চাই এবং লগ ইন করা ব্যক্তির কমপক্ষে ব্যবহারকারীর নাম এবং লগ ইন করা ব্যক্তিটির আইপি ঠিকানাটি আমার অ্যাক্সেস থাকা দরকার।

আমি ব্যবহার সম্পর্কে ভেবেছিলাম /etc/bash.bashrc, কিন্তু এটি কি ভাল সমাধান? উদাহরণস্বরূপ, কোনও ব্যবহারকারীর এর ব্যবহারটি অক্ষম করতে পারে এবং এভাবে আমার স্ক্রিপ্টটি অক্ষম করতে পারে? যদি হ্যাঁ, তবে আমার অন্যান্য বিকল্পগুলি কী কী?

ধন্যবাদ।


এটি কেবল তখনই কাজ করবে যদি ব্যবহারকারী অবশ্যই অবশ্যই ব্যাশ ব্যবহার করে। ব্যবহারকারীরা তাদের নিজস্ব শেল নির্বাচন করতে পারলে এটি কাজ করবে না।
পাওলো ইবারম্যান

উত্তর:


12

ব্যবহার করার পদ্ধতিটি আপনার লক্ষ্যগুলির উপর নির্ভর করে।

আপনি যদি আপনার ব্যবহারকারীদের জন্য সুবিধাজনক বা বন্ধুত্বপূর্ণ কিছু সরবরাহ করতে চান তবে আপনার /etc/profileসমস্ত ব্যবহারকারী একই শেল ব্যবহার করেন তবে আপনার পক্ষে যথেষ্ট যুক্তিযুক্ত। আপনি কমান্ড চালানো চান শুধুমাত্র যখন মাধ্যমে লগ-ইন sshমধ্যে, স্থান কমান্ড /etc/ssh/sshrc। (আপনি যদি ব্যবহারকারীদের নিজস্ব ~/.ssh/rcফাইল দিয়ে কমান্ডগুলিকে ওভাররাইড করতে আপত্তি না করেন ।)

আপনি যদি কোনও ব্যবহারকারীকে একটি প্রোগ্রাম এবং শুধুমাত্র একটি প্রোগ্রাম চালাতে বাধ্য করতে চান তবে ডিজিটালরোস দ্বারা বর্ণিত বিকল্পটি একটি ভাল পদ্ধতির। (আমি ব্যক্তিগতভাবে আরও একটি ব্যবহারকারীর পুরা হবে বাধ্যতামূলক প্রবেশাধিকার নিয়ন্ত্রণ যেমন সিস্টেম AppArmor , SELinux- র , TOMOYO , অথবা স্ম্যাক দ্যাট , তা নিশ্চিত করার জন্য প্রোগ্রাম একটি ব্যবহারকারী অব্যাহতি করার অনুমতি দেয় না করতে পারেন। আমি দশ বছর ধরে AppArmor উপর কাজ করেছি তাই যে সরঞ্জামটি আমি প্রথমে বাছাই করব, তবে অন্যগুলি দুর্দান্ত প্রোগ্রামারদের দ্বারা রচিত দুর্দান্ত সরঞ্জাম)ForceCommand

আপনি যদি কেবল একটি প্রোগ্রাম কার্যকর করতে এবং ব্যবহারকারীকে কোনওভাবে বিরক্ত না করতে চান তবে সর্বোত্তম পন্থাটি হল pam_exec(8)মডিউলটি ব্যবহার করা , যা বাইপাস করা যায় না, শেল নির্বিশেষে কাজ করে এবং ব্যবহারকারী বা ব্যবহারকারী হিসাবে চালানোর সহজ দক্ষতা সরবরাহ করে অনুমোদনের জন্য প্রোগ্রামটির অ্যাকাউন্ট। ম্যানপেজটি নিম্নলিখিত উদাহরণ দেয়:

   Add the following line to /etc/pam.d/passwd to rebuild the
   NIS database after each local password change:

               passwd optional pam_exec.so seteuid make -C /var/yp

   This will execute the command

       make -C /var/yp

   with effective user ID.

এই চালানো বাড়ানো যেতে পারে auth, account, password, এবং sessionকর্ম; sessionলগ ইন করার পরে সম্ভবত কার্যকর হবে। ঠিক একটি লাইন যুক্ত করুন:

session optional pam_exec.so log=/var/log/ssh_login_cmd /usr/local/bin/ssh_cmd

আপনার /etc/pam.d/sshdনিয়ন্ত্রণ ফাইল।


দেখে মনে হচ্ছে pam_execমডিউলটি ঠিক আমি যা খুঁজছি। ধন্যবাদ!
houbysoft

2
আউট দেখুন, আপনি নির্ধারিত কমান্ডটি যদি শূন্য-বহির্গমন কোডের সাথে প্রস্থান করে তবে আপনার লগইন ব্যর্থ হবে এবং আপনাকে লক আউট হতে পারে। এটি সমাধানের একটি উপায় হ'ল সর্বদা সফল হয় এমন একটি পৃথক মডিউল সহ আরও একটি 'সেশন alচ্ছিক' বলা হয় তা নিশ্চিত করা।
gflarity

4

OpenSSH- র নবীন সংস্করণ নামক একটি সার্ভার বৈশিষ্ট্য আছে ForceCommand যে একটি স্ক্রিপ্ট পরিবর্তে অপারেশন (SCP, SSH, ...) যে ব্যবহারকারীর অভিপ্রেত নিয়ন্ত্রণ দেয়। স্ক্রিপ্টটি আসল কমান্ডটি কেটে গেছে, তাই আপনার যা করা দরকার তা করার পরে আপনি সম্ভবত এটিতে চেইন করতে পারেন।

Sshd_config (5) থেকে:

ForceCommand

ক্লায়েন্টের সরবরাহিত কোনও কমান্ড এবং if / .ssh / rc উপস্থিত থাকলে উপেক্ষা করে ফোর্সকমন্ড দ্বারা নির্দিষ্ট কমান্ড কার্যকর করতে জোর করে। কমান্ডটি -c বিকল্পের সাথে ব্যবহারকারীর লগইন শেল ব্যবহার করে আহ্বান জানানো হয়। এটি শেল, কমান্ড বা সাবসিস্টেম এক্সিকিউশনের ক্ষেত্রে প্রযোজ্য। এটি ম্যাচ ব্লকের ভিতরে সবচেয়ে কার্যকর। ক্লায়েন্টের দ্বারা সরবরাহিত কমান্ডটি এসএসএইচ_অরআইআইএনআইএনএলআইএনএমএএমএনডি এনভায়রনমেন্ট ভেরিয়েবল-এ উপলব্ধ। `` অভ্যন্তরীণ-এসফটিপি '' র একটি কমান্ড নির্দিষ্ট করা একটি ক্রিয়োডডাইরেক্টরির সাথে ব্যবহার করার সময় কোনও প্রসেসের এসএফটিপি সার্ভার ব্যবহার করতে বাধ্য করবে যা কোনও সমর্থন ফাইলের প্রয়োজন নেই।

আমি এটিকে একবার স্কিপকে ওভাররাইড করতে এবং প্রত্যেক ব্যবহারকারীকে রত্ন ইন্টারেক্টিভ অ্যাক্সেসের প্রয়োজন নেই বা চান না তা আপলোড করার অনুমতি না দিয়ে সুরক্ষিত রত্ন আপলোড সরবরাহ করতে ব্যবহার করেছি।


3

একটি উপায় হ'ল সিসলগ-এনজি সিসলোগ ডেমন হিসাবে ব্যবহার করা এবং স্ক্রিপ্টের পটভূমি চালানোর জন্য এটির জন্য কনফিগার করা যখনই কোনও নির্দিষ্ট লগ এন্ট্রি (যেমন একটি সফল এসএস লগইন) মেলে।


0

এটা দেখ:

http://ubuntuforums.org/showthread.php?p=9383927

এটি চালানো থেকে অক্ষম করার কোনও উপায় আছে বলে আমি বিশ্বাস করি না। অন্য কেউ এটি যাচাই করতে পারেন?


এটি ( /etc/profileবা ~/.profile) ব্যবহারকারীর শেলের উপর নির্ভর করে, এর চেয়ে কিছুটা কম bashrc। যদি আপনার ব্যবহারকারীরা ব্যাশ বা অনুরূপ ব্যবহার করে থাকেন তবে এটি ঠিক আছে।
পাওলো ইবারম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.