`/ ইত্যাদি / sudoers` - শুধুমাত্র একটি কমান্ডের জন্য` env_keep` নির্দিষ্ট করুন?


23

sudoনির্দিষ্ট উপায়ের জন্য নির্দিষ্ট পরিবেশের ভেরিয়েবল সংরক্ষণ করা উচিত তা নির্দিষ্ট করার কোনও উপায় আছে কি ? কিছু উদ্দেশ্যে আমি আমার $HOMEvর্ষা চাই । যখন আমি নির্দিষ্ট কমান্ডগুলি চালিত করি তখন ভেরিয়েবল সংরক্ষণ করা হয়। অন্যান্য উদ্দেশ্যে এবং অন্যান্য আদেশের জন্য, আমি এটি পুনরায় সেট করতে চাই। এটি দিয়ে /etc/sudoersকি করা যায় ?

সম্পাদনা:

উত্তরের জন্য আপনাকে ধন্যবাদ। আমি অবাক হই যদি আমি একটি ফলো-আপ প্রশ্ন জিজ্ঞাসা করতে পারি, যা এটি "তবে, কেন এটি কাজ করে না?"

উদাহরণস্বরূপ আমি কাজ করার চেষ্টা করছি, আমি sudo nanoআমার পড়তে চাই $HOME/.nanorc। আমি যদি এটি ব্যবহার করি:

Defaults:simon env_keep=HOME

এটা পুরোপুরি কাজ করে। আমি যদি এটি ব্যবহার করি:

Defaults!/bin/nano env_keep=HOME

অথবা এটা:

Cmnd_Alias      NANO = /usr/bin/nano,/bin/nano,/bin/rnano
Defaults!NANO   env_keep=HOME

এটা মোটেই কাজ করছে না কোন পরামর্শ কেন? (আমি বিবিডাব্লু দেবিয়ান টেস্টিংয়ে আছি)

(দ্রষ্টব্য: আমি মনে করি না এটা nanoনির্দিষ্ট, BTW - আমি এক লাইন ব্যাশ স্ক্রিপ্ট যে কেবল সঙ্গে আচরণ প্রজনন করতে পারে echoগুলি $HOME)।


1
একই কনফিগার ফাইলটি ব্যবহার করতে সুডোর মাধ্যমে ন্যানো চালানোর চেষ্টা করার sudoeditপরিবর্তে ব্যবহার করুন। sudoeditকোনও টিএমপি ফাইলে কোনও ফাইলের বিষয়বস্তু অনুলিপি করা হবে এবং আপনার পছন্দ হিসাবে সম্পাদনাটিকে আপনার ব্যবহারকারী হিসাবে চালাবে, সম্পাদক যখন প্রস্থান করবেন তখন এটি পরীক্ষা করে দেখবে আপনি কোনও পরিবর্তন করেছেন কিনা এবং যদি সম্পাদিত ফাইলটির সাথে আসলটি প্রতিস্থাপন করেন। $EDITOREditor VISUAL` env vars সেট করে আপনি কোন সম্পাদকটি চালাতে চান তা নির্বাচন করতে পারেন ।
অ্যারোমাস্টার

@ অ্যারোমাস্টার - ধন্যবাদ, এটি যেটার সাথে আমি জড়িয়ে যাচ্ছিলাম তার চেয়ে ভাল পদ্ধতির মতো মনে হচ্ছে। যেহেতু আমি ইতিমধ্যে sudoআমার নিজের কোনও ক্রিয়াকলাপটি গুটিয়ে রেখেছি, আমি কেবল একটি if [ "$1" == "$EDITOR" ]; thenব্লক যুক্ত করেছি এবং এখন sudoeditপরিবর্তে কল করছি :)
সাইমন

উত্তর:


21

env_keepশুধুমাত্র /path/to/command(যখন কোনও নিয়মের মাধ্যমে, যে কোনও ব্যবহারকারীর দ্বারা আহ্বান করা হয়েছে) এবং ব্যবহারকারীর জন্য joe(সে যে আদেশটি চালাচ্ছে তা নির্বিশেষে ) ওভাররাইড করতে :

Defaults!/path/to/command env_keep=HOME
Defaults:joe env_keep=HOME

আপনি ব্যবহার করতে পারেন -=বা +=অপসারণ করতে বা env_keepতালিকায় একটি এন্ট্রি যুক্ত করতে পারেন ।


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

1
@ সিমন: বোকা বোধ করবেন না, আমিও sudoersম্যান পেজে সিনট্যাক্সের বর্ণনাটি আনুষ্ঠানিক বিবরণ থেকে বের করে নেওয়া এবং উদাহরণগুলি সনাক্ত করতে আরও সহজ করে যদি আপনি ইতিমধ্যে সেগুলি কীভাবে লিখতে জানেন তবে খুঁজে পান।
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'

হুম - সম্ভবত আমি শীঘ্রই কথা বললাম। এখন যেহেতু আমি এটি চেষ্টা করেছি, আমি আসলে এটি কাজ করতে পারি না। আমার সংশোধনটি একবার দেখে নিতে আমি কি ঝামেলা করতে পারি?
সাইমন

1
@ সিমন: আমার অনুমান যে আপনার একটি এন্ট্রিও রয়েছে যা আপনাকে সবকিছু করতে দেয় এবং env_keepসেটিংটি নেই ( simon ALL = ALL)। সুডো সর্বশেষ ম্যাচিং এন্ট্রি ব্যবহার করে ।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

সাবধান, যদি নিরাপদ_পথ সেট করা থাকে তবে আপনাকে ডিফল্টগুলিও যুক্ত করতে হবে: জো! নিরাপদ_পথ
জিসিটিডিওট

6
Cmnd_Alias      PBUILDER = /usr/sbin/pbuilder,/usr/sbin/cowbuilder
Defaults!PBUILDER       env_keep+=HOME

যারা লাইন আমার নিজের থেকে এসেছ /etc/sudoersইস্যু সংশোধন করার যে pbuilderদেখায় $HOME(সরালে তার ব্যবহারকারী কনফিগ ফাইলের জন্য কিন্তু রুট হিসাবে চালাতে করা আবশ্যক /rootধরণ উভয় একটি সিস্টেম এবং একটি ব্যবহারকারী কনফিগ ফাইল থাকার ফলে নষ্ট)।


হ্যাঁ, এটি যে মনে মনে রেখেছিল তার সাথে এটি খুব মিলের ব্যবহার, ধন্যবাদ!
সাইমন

আমার পুনর্বিবেচনার উদাহরণগুলি কাজ করে বলে মনে হচ্ছে না সে সম্পর্কে কি আপনার কোনও ধারণা আছে?
সাইমন

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

1

মানুষ sudoers:

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller’s environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

অতএব হ্যাঁ, আপনি যে ব্যবহার করে তা করতে পারেন env_reset, env_keepএবং env_checkআপনার সিস্টেমের / etc / sudoers হবে।

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