দেবিয়ান লিনাক্সে জটিল সুডো কমান্ডের অনুমতি দিন


13

আমার একক ব্যবহারকারীর জন্য একটি ডেবিয়ান লিনাক্স বাক্সে একটি নির্দিষ্ট কমান্ডের অনুমতি দেওয়া দরকার। আমি /etc/sudoersফাইলটিতে এটি চেষ্টা করেছি :

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}'

এটি প্রত্যাশার মতো কাজ করে না। যদি আমি কমান্ডটি sudo দিয়ে ব্যবহারকারী zabbix হিসাবে চালিত করি তবে এটি পাসওয়ার্ডের জন্য জিজ্ঞাসা করে (যদিও আমি NOPASSWDবিকল্পটি নির্দিষ্ট করেছি )।

তবে, এটি কাজ করে:

# User privilege specification
zabbix  ALL=NOPASSWD: /usr/bin/apt-get

তবে এর মধ্যে এমন একটি অপূর্ণতা রয়েছে যে সমস্ত সাবকম্যান্ড অনুমোদিত apt-get। কোনও নির্দিষ্ট কমান্ডের অনুমতি দেওয়ার জন্য কীভাবে আমি এটি ঠিক করতে পারি?

উত্তর:


10

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

যখন একটি রান করে sudo /usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}', তারা আসলে চলমান থাকে sudo /usr/bin/apt-get --print-uris -qq -y upgradeএবং তারপরে কলিং ব্যবহারকারী হিসাবে পাইপিং / রিডাইরেক্ট করা হয়।

এটা চেষ্টা কর: zabbix ALL=NOPASSWD: /usr/bin/apt-get --print-uris -qq -y upgrade

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


1
আপনি সঠিক আছেন তবে স্ক্রিপ্টটি যদি সুরক্ষিত না হয় তবে তাতে যা আছে তাতে কিছু আসে যায় না, এটি ওভাররাইট করা যায় এবং বিশ্বটি আপনার ঝিনুক। যদি স্ক্রিপ্টটি সুরক্ষিত থাকে তবে এর মধ্যে যা আছে তাও সুরক্ষিত।
ব্যবহারকারী 9517

25

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

#!/bin/bash
/usr/bin/apt-get --print-uris -qq -y upgrade 2>/dev/null |awk '{print $2}' | wc | awk '{print $1}'

হিসাবে সেট sudoers

zabbix  ALL=NOPASSWD: /path/to/script

এখন পুরো স্ক্রিপ্টটি কেবলমাত্র বিশেষায়িত অ্যাপ-গেট কমান্ড নয়, সুবিধাযুক্ত ব্যবহারকারী হিসাবে চালিত হবে। তবে নিশ্চিত করুন যে জাবিবিক্স ব্যবহারকারী স্ক্রিপ্টে লিখতে পারবেন না।


1
কেউ সম্ভবত আমাকে সংশোধন করতে পারে যদি সুডো ইতিমধ্যে এটির যত্ন নিয়ে থাকে (আমি এনভির ভেরিয়েবলগুলি পাস না করায় সমস্যাগুলি মনে করি) তবে আমি প্রস্তাব করতে পারি যে ডাব্লু এবং ডাব্লুসি সি স্ক্রিপ্টগুলির জন্য একটি সাধারণ সেরা অনুশীলন হিসাবে তাদের পূর্ণপথগুলি রয়েছে যাতে ব্যবহারকারী ব্যবহার করতে পারেন 'টি রপ্তানি পাথ না = ~ ব্যবহারকারী / বিন: $ পাথ এবং লাঠি যাই হোক না কেন একটি স্ক্রিপ্ট নামক awk (অথবা wc-) চান আদেশগুলিতে ~ ব্যবহারকারী / বিন
গেম

@ ফুন: আমি মনে করি আপনি ক্রোনের সাথে সুডোকে বিভ্রান্ত করছেন।
ব্যবহারকারী 9517

1
এটি বিভ্রান্তিকর না, কিন্তু superuser.com/questions/232231/... যে উবুন্টু প্রতিরোধ পাথ ম্যানিপুলেশন (এবং ডিফল্টরূপে LD_LIBARRAY_PATH) ইঙ্গিত দেয়
গেম

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