কাস্টম ওপেনশ শেল


8

পরিবেশটি উবুন্টু সার্ভার 12.04

আমি একটি সার্ভারে এমন একটি ব্যবহারকারী তৈরি করতে চাই যা কেবলমাত্র একটি লগ ফাইলটিতে লেজু-টু চালিত শেলটিতে প্রবেশ করতে সক্ষম হয় এবং প্রোগ্রামটি শেষ হওয়ার পরে সেশনটি বন্ধ করে দেয় (সিটিআরএল + সি)।

এই অর্জন করার জন্য একটি উপায় আছে কি?

উত্তর:


8

পেডেন্টিক হতে, এটি সিটিআরএল + সি হবে না, তবে SIGHUP(সিআরটিএল + ডি এর নিকটবর্তী) যা অ্যাপ্লিকেশনটিকে মেরে ফেলে।

আপনি ব্যবহারকারীর শেলটিতে যা চান তা মূলত রাখতে পারেন /etc/passwd। কেবলমাত্র /bin/bashঅন্য প্রোগ্রামের সাথে ব্যবহারকারীর পাসডওড লাইনে ডিফল্টটি প্রতিস্থাপন করুন (সম্ভবত )। এই প্রোগ্রামটি কোনও স্ক্রিপ্ট হতে পারে, যেমন /usr/bin/tail_log_file, মূলগুলির মালিকানাধীন এই বিষয়বস্তুগুলির সাথে: মূলটি ইউমোড 0755 সহ:

#!/bin/rbash
tail -f /path/to/logfile

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

এটি সম্পর্কে অত্যন্ত পেডেন্টিক হওয়ার জন্য, আপনাকে স্ক্রিপ্টের পথটি যুক্ত করা উচিত /etc/shellsতবে আমি সাধারণত এটি যেকোনভাবে কাজ করে দেখতে পাই।

এটি মনে রাখবেন যে ব্যবহারকারী সম্ভাব্যভাবে স্ক্রিপ্টটি পটভূমিতে রাখতে পারে বা কিছু বিকল্প ( ssh username@host bash) ব্যবহার করতে পারে এবং এখনও একটি শেল অর্জন করতে পারে। আপনি যদি এইভাবে ব্যবহারকারীকে সীমাবদ্ধ রাখতে চান তবে ভাল ফাইল সিস্টেমের অনুমতিগুলিই আসল সমাধান।


দুর্দান্ত কাজ করে, আপনার দ্রুত এবং নির্ভুল জবাবের জন্য অনেক ধন্যবাদ।
Ablue

2
আপনি যেটিতে কিছু যুক্ত করতে চান তার একমাত্র কারণ /etc/shellsহ'ল ব্যবহারকারীদের শেল হিসাবে অন্য কিছু রয়েছে তাদের শেলটি এটিতে সেট করতে দেওয়া; সুপারইউজার ( root) সর্বদা যে কারও শেলকে তারা যে কোনও কিছুতে পরিবর্তন করতে পারে।
জোনাথন কলেন

1
@ জোনাথন ক্যালেন যা বলেছিলেন তা যুক্ত করার জন্য: এটিতে স্ক্রিপ্টটি যুক্ত করা এটি একটি সুরক্ষা লিক /etc/shellsযা ব্যবহারকারীকে তার শেল পরিবর্তন করতে দেয় (কারণ /usr/bin/tail_log_fileতখন এটি "একটি" বাধা শেল "হিসাবে বিবেচিত হবে)!
জোছিম সউর

ঠিক আছে আমি মুছে ফেলব।
এলো

1
এটি অনেক জটিল; জোর করে কমান্ড (@ টিঙ্কের উত্তর দেখুন) এটি করার উপায়।
মনিকা পুনরায় ইনস্টল করুন - এম শ্র্র্ডার

10

কী-পেয়ার ভিত্তিক প্রমাণীকরণ ব্যবহার করতে আপনি সন্তুষ্ট হলে ssh জোর করে কমান্ডগুলি মনে রাখবে।

man authorized_keys
/command=

2

আপনি পাবলিক কী প্রমাণীকরণ ব্যবহার করে লগ ইন করার সময় আপনার পছন্দসই একটি কমান্ড চালাতে আপনি ssh কনফিগার করতে পারেন। এটি করতে, একটি জোড়া কী তৈরি করুন:

djs@sardinia:~$ ssh-keygen -f restricted-key 
Generating public/private rsa key pair. 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in restricted-key. 
Your public key has been saved in restricted-key.pub. 
The key fingerprint is: b1:8f:26:47:c2:c5:f2:8d:ed:a0:c4:bd:9a:30:9d:08 djs@sardinia 
[...]

restricted-key.pubব্যবহারকারীর ~/.ssh/authorized_keysফাইল রাখার জন্য উপযুক্ত একটি লাইন রয়েছে :

ssh-rsa AAAA...UDz47Nl djs@sardinia

তবে আপনি এটিতে একটি কমান্ড যুক্ত করতে পারেন, এবং কী দিয়ে লগ ইন করার সময় ssh এই আদেশটি চালাবে:

command="tail -f /my/interesting/file" ssh-rsa AAAA...UDz47Nl djs@sardinia

তারপরে ব্যবহারকারীটি মেশিনে ব্যবহার করে এসএসএস করতে পারেন ssh -i restricted-key

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