Sudo'ing এর আগে sudo করার ক্ষমতা চেক করা সম্ভব?


11

আমি একটি ছোট্ট ইউটিলিটি প্রোগ্রাম লিখছি। আমি চাইলে sudoপ্রয়োজনে কিছু চালানোর চেষ্টা করা উচিত।

এটি হ'ল: যদি ফাইল অনুমতিগুলি বর্তমান ব্যবহারকারীকে কোনও নির্দিষ্ট ফাইলে কাজ করতে না দেয় (এবং sudoনিয়মগুলি এটির অনুমতি দেয়) আমি আমার ইউটিলিটিটি sudoফাইলের মালিক হিসাবে কিছু চালাতে চাই un

আমি আগে থেকে এই ক্ষমতাটি যাচাই করার জন্য আশাবাদী, কারণ আমি পছন্দ করি যে ব্যর্থ sudoপ্রচেষ্টা থেকে সিস্টেম লগগুলি শব্দের সাথে পূর্ণ না হয় । যেমন sudoব্যর্থতার পরে নিজেই প্রতিবেদন করেছে: "এই ঘটনার রিপোর্ট করা হবে"।

সুতরাং, আমি প্রগ্রেমেটিকভাবে চেক আশা করছি: এর মাধ্যমে চলতে পারে ?user <x>command <y>sudo

সমস্যাটি এখানে: /etc/sudoersম্যাপিংটি থাকা অবস্থায় এটি মূলের মালিকানাধীন এবং নিয়মিত ব্যবহারকারীদের দ্বারা পঠনযোগ্য নয়।

আমি চালানোর জন্য একটি সাবপ্রসেস তৈরি করার কথা ভাবছিলাম sudo -l(যা বর্তমান ব্যবহারকারী সুডো-রান করতে পারে এমন কমান্ডগুলি আউটপুট করে)। আমি তখন এর আউটপুট পার্স করব। তবে এটি কিছুটা ভঙ্গুর বলে মনে হচ্ছে। আউটপুটে আমার কাছে থাকা তথ্য রয়েছে তবে এটি মনে হয় এটি মানুষের পড়ার জন্য তৈরি করা হয়েছিল (প্রোগ্রামিক ব্যবহারের জন্য নয়)। ভবিষ্যতে বা বিভিন্ন প্ল্যাটফর্ম জুড়ে আউটপুট একই ফর্ম্যাটটি অনুসরণ করবে কিনা এমন কোনও গ্যারান্টি রয়েছে কিনা তা আমি জানি না।

প্রোগ্রাম sudo -lআউটপুট বিশ্লেষণ নিরাপদ হিসাবে বিবেচনা করা হয়? যদি তা না হয়, তাহলে আগে থেকে আরও নির্ধারণের জন্য কোনও সুডো কমান্ড সফল হবে কিনা তা নির্ধারণ করার জন্য কি আরও ভাল বিকল্প রয়েছে?


(এক্স / ওয়াইয়ের ব্যাকগ্রাউন্ড: এই ইউটিলিটিটি সীমিত অ্যাক্সেস রোল অ্যাকাউন্ট দ্বারা ব্যবহারের জন্য I 'অন্যান্য ব্যবহারকারীদের মধ্যে প্রডাক্ট সুডোর নিয়ম কার মধ্যে রয়েছে তা সময়ের আগে জানতে পারবেন না)


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

উত্তর:


13

সুডো ম্যান পৃষ্ঠা অনুসারে:

 -l, --list  If no command is specified, list the allowed (and forbidden)
             commands for the invoking user (or the user specified by the
             -U option) on the current host.  A longer list format is used
             if this option is specified multiple times and the security
             policy supports a verbose output format.

             If a command is specified and is permitted by the security
             policy, the fully-qualified path to the command is displayed
             along with any command line arguments.  If command is
             specified but not allowed, sudo will exit with a status value
             of 1.

সুতরাং এটি নিচে ফুটতে হবে

if sudo -l -U $USER shutdown > /dev/null
then
   ## $USER can
else
   ## $USER cannot
fi 

মুরু দ্বারা চিহ্নিত হিসাবে , আপনার প্রয়োজন উপর নির্ভর করে হয় বা কিছুই -U $USERবা ব্যবহার -U $USERTOTESTকরুন।


আপনি যদি $USERবর্তমান ব্যবহারকারীর অর্থ বোঝাতে চান, আপনি কেবল sudo -l <command>ছাড়াই করতে পারেন -U $USER
মুড়ু

ধন্যবাদ - এটি দরকারী। এই পদ্ধতির পরীক্ষার জন্য আমি একটি জিনিস লক্ষ্য করেছি যে এটি এমন কোনও ক্ষেত্রে ব্যতিক্রমী সমস্ত কমান্ডের অনুমতি দেওয়ার জন্য sudo রুল সেট আপ করা হয়েছে, যেমন (targetUser) ALL, !/usr/bin/foo .. সেই ক্ষেত্রে sudo -l -u targetUser /usr/bin/fooএখনও আউটপুট /usr/bin/fooএবং প্রস্থান প্রদর্শিত হবে স্থিতি সহ ০. তবুও, এটি আমার সাধারণ চেকের জন্য মূলত যথেষ্ট এবং আরও ভার্বোস sudo -lআউটপুট পার্সিং করার জন্য প্রহার করে।
পিটার মার্টিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.