এসএসএইচ-এর অনুমোদিত_কিস কমান্ড বিকল্প: একাধিক আদেশ?


17

অনুমোদিত_কিসের একটি কমান্ড = "..." বিকল্প রয়েছে যা একটি একক কমান্ডে একটি কী সীমাবদ্ধ করে। একাধিক কমান্ডের কী কী সীমাবদ্ধ করার কোনও উপায় আছে ? উদাহরণস্বরূপ, সেখানে একটি রেইগেক্স থাকার মাধ্যমে, বা অন্য কোনও কনফিগারেশন ফাইল সম্পাদনা করে?

উত্তর:


9

না। এটি "অনুমোদিত" কমান্ড নয়, "জোর করে" কমান্ড ( ফোর্সকম্যান্ড বিকল্প হিসাবে )।

একমাত্র সম্ভাবনা হ'ল বিভিন্ন কমান্ডের জন্য বিভিন্ন কী ব্যবহার করা বা এর থেকে প্যারামিটারগুলি পড়া stdin


27

প্রতি কিতে আপনার কেবল একটি কমান্ড থাকতে পারে, কারণ কমান্ডটি "জোরপূর্বক"।

তবে আপনি একটি র‍্যাপার স্ক্রিপ্ট ব্যবহার করতে পারেন। ডাকা কমান্ডটি পরিবেশের পরিবর্তনশীল হিসাবে মূল কমান্ড লাইন পায় $SSH_ORIGINAL_COMMANDযা এটি মূল্যায়ন করতে পারে।

যেমন এটি এতে রাখুন ~/.ssh/allowed-commands.sh:

#!/bin/sh
#
# You can have only one forced command in ~/.ssh/authorized_keys. Use this
# wrapper to allow several commands.

case "$SSH_ORIGINAL_COMMAND" in
    "systemctl restart cups")
        systemctl restart cups
        ;;
    "shutdown -r now")
        shutdown -r now
        ;;
    *)
        echo "Access denied"
        exit 1
        ;;
esac

তারপর এটা রেফারেন্স ~/.ssh/authorized_keysসঙ্গে

command="/home/user/.ssh/allowed-commands.sh",…

1
উপকারী। এটি স্পষ্ট করে তুলতে মূল্যবান হতে পারে যে এটি নিজেই sshd যা যুক্ত SSH_ORIGINAL_COMMAND(প্রতি man sshd) যাতে এটি স্ক্রিপ্টগুলিতে উপলব্ধ। এছাড়াও স্বয়ংক্রিয় স্ক্রিপ্টগুলির একটি উদাহরণ দেওয়া যা নির্দিষ্ট নিদর্শনগুলি SSH_ORIGINAL_COMMANDচালানোর অনুমতি দেয় । এছাড়াও unixwars.blogspot.com/2014/12/getting-sshoriginalcommand.html
সিড্রিক নাইট

7

গ্রেট এসএসএইচ, দ্য সিকিউর শেল: ও'রিলির ডিফিনিটিভ গাইড বই, অধ্যায় আট এ, নীচের মতো স্ক্রিপ্ট ব্যবহার করে একটি দুর্দান্ত উদাহরণ দেওয়া হয়েছে:

#!/bin/sh

/bin/echo "Welcome!
Your choices are:
1       See today's date
2       See who's logged in
3       See current processes
q       Quit"

/bin/echo "Your choice:"

read ans

while [ "$ans" != "q" ]
do
   case "$ans" in
      1)
         /bin/date
         ;;
      2)
         /usr/bin/who
         ;;
      3)
         /usr/bin/top
         ;;
      q)
         /bin/echo "Goodbye"
         exit 0
         ;;
      *)
         /bin/echo "Invalid choice '$ans': please try again"
         ;;
   esac
   /bin/echo "Your choice:"
   read ans
done
exit 0

আপনার .authorized_keysফাইলে এটি ব্যবহার করে যেমন:

command="/path/to/your/script.sh" <ssh-key>

... এটি করার সময় আপনাকে এটি দেয় ssh:

Welcome!
Your choices are:
1       See today's date
2       See who's logged in
3       See current processes
q       Quit
Your choice:

কিন্তু এই ধরনের স্ক্রিপ্ট মূলত বিরতি scp, sftpএবং সমস্ত অন্যান্য জিনিস নিয়ে আপনি কিছু দিন লাগতে পারে।
জাকুজে

3
@ জাকুজে এটি commandসাধারণভাবে বিকল্পটির জন্য বৈধ নয় কি ?
gf_

1

অন্যান্য পদ্ধতির উদাহরণস্বরূপ প্রদত্ত ব্যবহারকারীর জন্য একটি সীমাবদ্ধ শেল ব্যবহার করুন বা একটি মোড়ক ব্যবহার করুন যা নির্দিষ্ট ডিরেক্টরিতে পাওয়া ফাইল / স্ক্রিপ্টগুলিতে কমান্ডগুলিকে সংযত করে, এইভাবে মোড়ক পরিবর্তন না করে কমান্ডের তালিকা বাড়িয়ে তোলে।

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

এই উদাহরণটি নিম্নলিখিত উপায়ে প্রকাশ করা হবে:

command="only systemctl shutdown"

এবং .onlyrulesএই বিষয়বস্তু দিয়ে একটি ফাইল তৈরি করা হবে:

\:^systemctl restart cups$:{p;q}
\:^shutdown -r now$:{p;q}

এই 'কেবল' পদ্ধতির সুবিধাটি হ'ল প্রতিটি ব্যবহারকারীর এবং পরিস্থিতির জন্য স্বতন্ত্র স্ক্রিপ্টগুলি লেখার দরকার নেই।


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

আপনি একটি হিসাবে "সীমাবদ্ধ শেল" ব্যবহার করতে পারেনForcedCommand
জর্জি লেহনার

আমার কাছে এটি ঘটে, যে অ্যাকাউন্টটি ব্যবহার করা হচ্ছে এটি একটি সাধারণ ব্যবহারকারী অ্যাকাউন্ট, এবং প্রয়োজনীয় ক্রিয়াকলাপগুলি সুবিধাপ্রাপ্ত, যে কোনওটি চেক করার জন্য সুডোর উপর নির্ভর করতে পারে এবং অনুমোদিত_কাইস কমান্ড বিকল্পটি "sudo $ SSH_ORIGINAL_COMMAND" সেট করে?
স্টিভ ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.