যখন কোনও এসএসএইচ ব্যবহারকারী লগ ইন করবেন তখন কীভাবে শাটডাউন প্রতিরোধ করবেন?


20

আমি একটি নেটওয়ার্কযুক্ত পরিবেশ পরিচালনা করছি এবং গতকাল আমার একটি আকর্ষণীয় পরিস্থিতি তৈরি হয়েছিল। যখন কোনও হোস্টকে নিয়মিত ব্যবহারকারীর দ্বারা শাটডাউন করার প্রয়োজন হয়, অন্য ব্যবহারকারীরা স্থানীয়ভাবে লগ ইন করলে এটি তা করতে অস্বীকার করে। অন্যান্য ব্যবহারকারীরা যখন এসএসএইচ-এর মাধ্যমে লগ ইন করেন এটি তবে এটি নয়। যদি কোনও ব্যবহারকারী স্থানীয়ভাবে লগ ইন থাকে এবং একজন ব্যবহারকারী এসএসএইচের মাধ্যমে লগ ইন হয় এবং স্থানীয়ভাবে ব্যবহারকারীরা চেষ্টা করে শাটডাউন করে তবে এটি কোনও সতর্কতা ছাড়াই সফল হয় এবং অন্য ব্যবহারকারীর এসএসএইচ সংযোগটি হঠাৎ করে বন্ধ হয়ে যায়। আমার প্রশ্ন হ'ল, স্থানীয় ব্যবহারকারীদের জন্য নীতিমালা এমনভাবে প্রতিরোধ করার কোনও উপায় আছে কি? আমি ইতিমধ্যে এর জন্য ম্যান পেজটি দেখেছি এবং এর sshd_configসাথে সম্পর্কিত বলে মনে হচ্ছে এমন কোনও কিছুই খুঁজে পাচ্ছি না।


সম্পাদনা (অতিরিক্ত তথ্য।):

নেটওয়ার্কে 4 টি ওএস রয়েছে: মান্ড্রিভা ২০০৯, মান্দ্রিভা 2010.2, মান্ড্রিভা 2011 এবং উবুন্টু 11.04। আমি যে নির্দিষ্ট ক্ষেত্রে উল্লেখ করছি সেটি হ'ল ম্যানড্রিভা ২০০৯ হোস্টে এসএসএইচ ব্যবহারকারী এবং মান্ড্রিভা ২০১১ হোস্টে স্থানীয় ব্যবহারকারী।

মান্দ্রিভা ২০০৯ হোস্টগুলি জিনোম ২.২৮ পরিবেশ ব্যবহার করে, ২০১০.২ হোস্টগুলি জিনোম ২.৩২ ব্যবহার করে, ২০১০ হোস্টগুলি কে.ডি. প্লাজমা এবং উবুন্টু ১১.০৪ হোস্ট ইউটি ব্যবহার করে।


হালনাগাদ

আমি এই প্রশ্নে উল্লেখ করেছি যে , আমি বার্তায় ছুড়ে ফেলা একটি ক্রিয়াটির polkitঅধীনে ক্রিয়াগুলি অনুসন্ধান করেছি /usr/share/polkit-1/actions/এবং (ফাইলটিতে org.freedesktop.consolekit.policy) পেয়েছিorg.freedesktop.consolekit.system.stop-multiple-users

System policy prevents stopping the system when other users are logged in

আমি ( org.freedesktop.*নামকরণের সম্মেলনের কারণে ) ভাবছি যে এটি কোনও ধরণের সিগন্যাল ডিএম বাসের মাধ্যমে ডিএমকে পাঠানো হয়েছে sent আমি মনে করি যে সিগন্যালটি এই polkitক্রিয়াটি কীভাবে ট্রিগার করে তা যদি আমি জানতে পারি তবে আমার আচরণটি পরিবর্তন করতে সক্ষম হওয়া উচিত। কোন ধারনা?


আপডেট 2

আমি আজ একটি সামান্য পরীক্ষা করার চেষ্টা করেছি এবং এটি আমাকে খুব আজব ফলাফল দিয়েছে। আমি এসএসএইচ এর মাধ্যমে একটি বাক্সে লগ ইন করার চেষ্টা করেছিলাম এবং নিশ্চিত করেছিলাম যে অন্য কোনও ব্যবহারকারী কোনও ভিটিতে লগ ইন হয়নি। আমি যদি Shutdownজিডিএম এর "অ্যাকশনগুলি" মেনু থেকে বেছে নিই , আমি দীর্ঘ প্রতীক্ষিত নীতি বার্তাটি আমাকে জানিয়ে দিচ্ছি যে অন্যান্য ব্যবহারকারীরা লগ ইন থাকায় প্রমাণীকরণ ছাড়া এটি করা অসম্ভব। তবে , আমি যদি স্থানীয়ভাবে লগ ইন করতে এবং জিডিএম ব্যবহার করতে পারি জিনোমের মেনু থেকে বাক্সটি বন্ধ করতে, এসএসএইচ অধিবেশনটি আগের মতো ক্লোবারড। এটা কিভাবে সম্ভব? আমি যখন shutdownজিডিএমের কাছ থেকে কোনও অনুরোধ শুরু করি তখন এটি কি এর মধ্যে থেকে শুরু করার চেয়ে আলাদা হয় gnome-session? এটি কি কাউকে এমন কিছু বলে যা আমাকে সমস্যার সমাধান করতে সহায়তা করতে পারে?


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

নেটওয়ার্কে 4 টি ওএস রয়েছে: মান্ড্রিভা ২০০৯, মান্দ্রিভা 2010.2, মান্ড্রিভা 2011 এবং উবুন্টু 11.04। আমি বুঝতে পারিনি যে এটি ওএস-নির্দিষ্ট; আমার প্রশ্ন সম্পাদনা ...
জোসেফ আর।

2
আমি মনে করি এসএসএইচের চেয়ে ওএসের সাথে এটি করা আরও বেশি। আমি যে ইউনিক্সগুলিতে দৌড়েছি তা এমন কিছু নয়; তবে আবার, আমি সাধারণত রুট হিসাবে শাটডাউন করি।
জেনি ডি

@ জেনিডি: ব্যবহারকারীদের ইউআইয়ের মাধ্যমে বন্ধ হওয়া থেকে রোধ করার একটি সমাধান হতে পারে; তবে আমি মনে করি এটি তাদের জন্য বরং বিরক্তিকর হবে।
জোসেফ আর।

2
এসএসএইচে সমস্যা হওয়ার পরিবর্তে এটি প্যামের কনফিগারেশনের (হোস্টটি বন্ধ হয়ে থাকা) সমস্যা হতে পারে। আপনি কী দেখেছেন কীভাবে প্যাম লগ-ইন করা ব্যবহারকারীদের শটডাউনটি নির্ধারণ করতে এবং সিস্টেমটি বন্ধ করতে চেয়ে কোন ব্যবহারকারীকে একই সতর্কতা সরবরাহ করতে পারে?
রব গিবসন

উত্তর:


3

আমি একটি ছোট প্রোগ্রাম লিখব যা কোনও সক্রিয় এসএসএইচ সংযোগগুলির জন্য netstatএবং / অথবা এর মাধ্যমে পরীক্ষা করেছিল psshutdownকমান্ডের জায়গায় ফেলে দিন ।

অন্য কেউ যদি মেশিনটি ব্যবহার না করে থাকে, shutdownব্যবহারকারী যখন চেষ্টা করবেন তখন কল করুন । যদি কেউ মেশিনটি ব্যবহার করে থাকে তবে shutdownকমান্ডটি সরবরাহকারী ব্যবহারকারীকে কেবল সতর্ক করুন ।

নেটস্যাট আপনাকে এ জাতীয় আউটপুট দেবে এবং আউটপুটটি দেখতে এটি বেশ সহজ .ssh

netstat -a
Active Internet connections (including servers)
Proto Recv-Q Send-Q  Local Address          Foreign Address        State
tcp        0     52  10.5.6.xx.ssh          10.6.6.yy.51400        ESTABLISHED
tcp        0      0  *.ssh                  *.*                    LISTEN
udp        0      0  *.syslog               *.*

psআপনাকে এরকম আউটপুট দেবে তবে এটি কিছুটা শক্ত কারণ আপনাকে আউটবাউন্ড সংযোগগুলি নিয়ে চিন্তা না করার বিষয়টি নিশ্চিত করতে হবে। Netstatসম্ভবত সম্ভবত সঠিক উপায়।

  ps -e | grep ssh
      10084366 ?        00:00:07 /opt/sbin/sshd
        282647 ?        00:00:00 /opt/sbin/sshd

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

1
এটা কাজ করা উচিত। এক ভাবনা: লগ আউট না করে তারা সংযোগ বিচ্ছিন্ন হলে কী হবে? এসএসএইচ সেশনটি যদি সহজে মারা যায় তবে ফাইলটি কী স্পর্শ পাবে? আপনি এটি নিশ্চিত করতে চাইবেন

হুম। এটি সত্যই চিন্তার জন্য খাদ্য ...
জোসেফ আর।

1
whoপরিবর্তে আউটপুট বিশ্লেষণ করে সম্ভবত আপনার পদ্ধতির সরল করা যেতে পারে । এটি দেখায় যে কোন ব্যবহারকারী (গুলি) সংযুক্ত আছেন এবং কোন হোস্ট থেকে।
জোসেফ আর।

1
খুব সম্ভবত. আমি যে শেলটি ব্যবহার করি whoসেটিতে খুব বেশি আউটপুট দেয় না, তবে বেশিরভাগ অন্যান্য শেল এটি করে। (নিরীহ এম্বেড সিস্টেম ...) যে কোনও ক্ষেত্রে আপনি যদি ব্যবহার করতে চান তবে netstatআপনার প্রয়োজনীয় কলামটি পাওয়া খুব সহজ awk। লাইন বরাবর কিছু netstat -a | awk '{print $4}'(আমার শেল উপর অন্তত।)
kmort

2

আপনি আসলে সঠিক তথ্য খুঁজে পেয়েছেন। কমপক্ষে এটি উবুন্টুর অধীনে 13.04 অবধি কাজ করেছে।

নিম্নলিখিত নীতির নীতি প্রবেশ, নীচে হিসাবে "auth_admin_keep" সেটআপ করার পরে, শাটডাউনটি ঘটতে পছন্দ করবে:

<action id="org.freedesktop.consolekit.system.stop-multiple-users">
  <description>Stop the system when multiple users are logged in</description>
  <message>System policy prevents stopping the system when other users are logged in</message>
  <defaults>
    <allow_inactive>no</allow_inactive>
    <allow_active>auth_admin_keep</allow_active>
  </defaults>
</action>

তবে কোনওভাবে, ১৩.১০ সাল থেকে এই নীতিটি সম্পূর্ণ উপেক্ষা করা হয়েছে। এতদূর কেউই আমাকে এটি বলতে সক্ষম হয়নি যে এটি কীভাবে প্রতিস্থাপন করবে (যদি কিছু থাকে))

মনে রাখবেন যে আপনার পুনঃসূচনা (org.freedesktop.consolekit.system.restart- একাধিক-ব্যবহারকারী) এর জন্য এ জাতীয় একটি এন্ট্রিও রয়েছে যা সেট করাও উচিত auth_admin_keep

এসকিউবুন্টুতেও এই প্রশ্ন / উত্তরটি দেখুন: /ubuntu/1190/how-can-i-make-shutdown-not-require-admin-password


0

এসএসএইচ সংযোগ গণনা করুন, এবং যদি আপনার চেয়ে বেশি হয়, তবে শাটডাউন করুন:

SSH_CONS=$(ps x | grep 'sshd:' | grep -v 'grep' | wc -l)

if [ "$SSH_CONS" -gt 1 ]
then
    echo "More than 1 SSH connection..."
else
    echo "Shutting down..."
    # halt
fi

এটার মতো কিছু?

আমি সম্ভবত কিছু পঠিত ভেরিয়েবলগুলি সন্নিবেশ করবো যাতে এটি আমাকে অনুরোধ করবে, "আপনি কি কোনওভাবেই শাটডাউন করতে চান?" এবং "আপনি কি শাটডাউন করতে চান?"

তারপরে আপনি এটি একটি উপাধি বা অনুরূপ হিসাবে ব্যবহার করতে পারেন।


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