যে স্ক্রিপ্টগুলির জন্য সুডোর প্রয়োজন হয় সেগুলি যদি না থাকে তবে কি সেগুলি ব্যর্থ হয়, অথবা সুডো এবং প্রম্পট ব্যবহার করা উচিত?


26

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা আমাকে আমার ব্যাকলাইটের উজ্জ্বলতার উপর সূক্ষ্ম-নিয়ন্ত্রণযুক্ত নিয়ন্ত্রণ দেয় এবং sudoচালনার প্রয়োজন । এটি মূলত এটি:

backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | tee $backlight

এবং বাস ~/bin/backlight-adjust। স্ক্রিপ্টটির sudoসুবিধাগুলি প্রয়োজন , কারণ tee $backlightএটি কোনও অধিকারপ্রাপ্ত স্থানে লেখা। সুতরাং এটি চালানো না হলে এটি ব্যর্থ হবে sudo

এই পদ্ধতির একটি সমস্যা, কারণ আমি শুধু চলবে না পারে sudo backlight-adjust, কারণ ~/binনেই $PATHযে sudoপরিবেশ, শুধু আমার পরিবেশে। সুতরাং আমি চালাতে হবে sudo env "PATH=$PATH" backlight-adjustবা অনুরূপ কিছু।

বিকল্পভাবে, আমি এটি এইভাবে লিখতে পারতাম:

backlight="/sys/class/backlight/acpi_video0/brightness"
echo $1 | sudo tee $backlight

এবং আমাকে পাসওয়ার্ডের জন্য অনুরোধ করুন।

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

(আমি জুবুন্টু ১৪.০৪ চালাচ্ছি এবং আমার শেলটি জিএনইউ ব্যাশ ৪.২.৪৫, যদি এটির কোনও পার্থক্য আসে))


সংশোধনীর জন্য ধন্যবাদ. আমি একটি সংশোধিত ডেবিয়ান (এলএমডিই) চালাচ্ছি এবং আমার sudoআসলে আমার $PATHডিফল্ট হিসাবে রাখে যাতে আমার এই সমস্যাটি না থাকে।
টেরডন

উত্তর:


27

ব্যক্তিগতভাবে, আমি একটি ভিন্ন পদ্ধতির ব্যবহার করব। আপনার স্ক্রিপ্টের জন্য একটি উপাধি তৈরি করুন। আপনার ~/.bashrc(বা অন্যান্য শেলের সমতুল্য) এই লাইনটি যুক্ত করুন

alias backlight-adjust='sudo ~/bin/backlight-adjust'

এইভাবে, এটি চালানোর জন্য আপনাকে মনে রাখার বিষয়ে চিন্তা করার দরকার নেই sudoএবং আপনাকে sudoস্ক্রিপ্টে যুক্ত করার দরকার নেই । এটি আপনার কাছে সম্পূর্ণ স্বচ্ছ হবে এবং আপনি চেষ্টা ও চালানোর সময় কেবল আপনার পাসওয়ার্ডের জন্য জিজ্ঞাসা করবেন backlight-adjust


এটি খুব বুদ্ধিমান পদ্ধতির মতো বলে মনে হচ্ছে, এবং সিস্টেমের বাকী অংশগুলির উপর ন্যূনতম প্রভাব রয়েছে। +1 টি।
জন Feminella

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

পছন্দ করেছেন স্ক্রিপ্ট দ্বারা ডাকা কমান্ডটি অ্যাক্সেস না করার বিষয়ে কেবল অভিযোগ করবে।
টেরডন

@ ইটারডন আমি স্বীকার করেছি যে আমি কিছুটা পরিষ্কার হতে পারতাম, তবে সম্ভবত আপনি জানেন যে আমি কী বোঝাতে চাইছি: লিপিটির গ্রহীতা মূলত স্ক্রিপ্টটির লেখক হিসাবে একই সমস্যার মুখোমুখি হবেন এবং একজন বিবেকবান স্ক্রিপ্ট-ভাগীদার হিসাবে লেখকের উচিত এই বিশেষ ব্যবহারের দ্বিধায় তাদের ব্যক্তিগত সমাধানটিও ভাগ করুন।
কাইল স্ট্র্যান্ড

@ কাইলস্ট্র্যান্ড হ্যাঁ, তবে কোনও সমস্যা ছিল না, ওপি'র একমাত্র সমস্যা ছিল যে তিনি "সুডো টাইপ করতে" মনে রাখতে চান না "তবে স্ক্রিপ্টটি পুরোপুরি পোর্টেবল হবে। আমার বক্তব্যটি হ'ল উপনামটি সম্পূর্ণরূপে alচ্ছিক এবং কোনও কিছুই সমাধান করে না, এটি ব্যবহার করা সহজ করে তোলে।
টেরডন

7

কেন এটি ভুল হতে পারে তা আমি দেখতে পাচ্ছি না --- যদিও আমি সাধারণত পছন্দ করি যে কমান্ডগুলি আমাকে কিছু জিজ্ঞাসা করবে না, যাতে সেগুলি লিপিযোগ্য হয়। আপনি পাসওয়ার্ড ছাড়াই কাজ করে তাড়া /etc/sudoersকরতে পারেন sudo

তবে ... কেন যোগ হচ্ছে না

chgrp  one-of-your-groups-here /sys/class/backlight/acpi_video0/brightness     
chmod g+w /sys/class/backlight/acpi_video0/brightness 

আপনার /etc/rc.localএবং সম্পর্কে ভুলে sudo?

(উবুন্টুতে আপনি যদি ব্যবহার sudoকরতে সক্ষম হন তবে আপনি সুডো গ্রুপে রয়েছেন , তাই আপনি এটি ব্যবহার করে chgrp sudo /sys...খুশি হতে পারেন ))


3

বিকল্পভাবে, আপনি যোগ করতে পারে

Defaults        env_keep +="PATH"

আপনার /etc/sudoersফাইল


2

আপনি সুডো ব্যাকলাইট-সামঞ্জস্য করুন, কারণ do / বিন সুডো পরিবেশে $ PATH তে নেই

তাহলে তার উপর নির্ভর করবে কেন? আমি মনে করি আপনার কেবল সেই লাইনটি পরিবর্তন করা উচিত /home/user/bin/backlight-adjustএবং এটি কার্যকর হবে।

তবে আমি সত্যিই টরডনের একটি উপনাম ব্যবহারের সমাধানটি চাই। অথবা আপনি আপনার স্ক্রিপ্টটি স্থাপন করতে পারেন /usr/bin/এবং এটি প্রতিটি ব্যবহারকারীর জন্য উপলব্ধ থাকবে (অন্তর্ভুক্ত রুট)


হ্যাঁ, তবে এটি করা বিরক্তিকর। অন্যথায়, এটি আমার $ রাস্তায় প্রথম স্থানে রাখার অর্থ কী ছিল? এছাড়াও, আমি এটি থাকা পছন্দ করি ~/binকারণ এটি তখন আমার বাড়ির ডটফিলস সংগ্রহস্থলের অধীনে, সুতরাং এটি সংস্করণ-নিয়ন্ত্রণে থাকে।
জন ফেমেনিলা

@ জোহনফেমিনেলা, যাইহোক, পথ পরিবর্তন করার কোনও কারণ নেই, -Eপরিবেশ সংরক্ষণের জন্য পতাকা ব্যবহার করুন :sudo -E command
টেরডন

@terdon যা দেবিয়ানে কাজ করে না; এটি সুরক্ষার কারণে ওভাররাইড করা হয়েছে। আমি আমার প্রশ্নের ( sudo env "PATH=$PATH" ...) তে উল্লিখিত হিসাবে আপনাকে পরিবেশের পরিবর্তনগুলি স্পষ্টভাবে পাস করতে হবে ।
জন ফেমেনিলা

1

একটি সাধারণ নিয়ম দিতে পারে না ... স্ক্রিপ্ট / প্রোগ্রামটি যদি কিছু পুনরায় কনফিগারিং (যেমন একটি প্রিন্টার) করার জন্য ডিজাইন করা হয় এবং নিয়মিত ব্যবহারকারীদের দ্বারা ডাকা হয়, এটি করতে হবে। অন্যথায়, আমি যথেষ্ট পরিমাণে একা রেখে যাব: যদি কোনও নিয়মিত ব্যবহারকারী এটি চালায় তবে কেবল ব্যর্থ হবেন (হয় সুস্পষ্ট চেকের ফলস্বরূপ, বা এটি কিছু করার অনুমতি নেই বলেই)।

উন্নত সুবিধাগুলি কিছুটা হলেও অল্প পরিমাণে দেওয়া উচিত। উচ্চতর সুবিধার্থে স্যুইচিং করা কঠিন, এটি বিশেষজ্ঞদের (যেমন, sudo(1)) ভাল রেখে দিন ।


0

আমি ব্যক্তিগতভাবে ${SUDO}আমার স্ক্রিপ্টগুলির মতো এমন কিছু ব্যবহার করি যাতে কলার প্রয়োজনে এটি সেট ${SUDO:-sudo}করতে পারে বা এটি ডিফল্টরূপে ব্যবহার করতে পারে।

আপনার নির্দিষ্ট ক্ষেত্রে, আমি স্বীকৃত উত্তরের সাথে রয়েছি, যদিও।


-1

স্ক্রিপ্টটি (ছাড়া sudo) একটি যথাযথ ব্যবহারকারীর মতো স্থানে রাখুন /bin, এবং তারপরে এটি করুন:

sudo chown root /bin/backlight-adjust
sudo chmod 4755 /bin/backlight-adjust

এটি সেটুইড পতাকা সেট করে কাজ করে, যার অর্থ এটি সর্বদা ফাইলের মালিক হিসাবে চালানো হবে। বিস্তারিত জানার জন্য দয়া করে http://major.io/2007/02/13/chmod-and-the-mysterious-first-octet/ পড়ুন । এটি কীভাবে কাজ করে সে সম্পর্কে আমি এতটা সত্যই জানি না, আমি কয়েক বছর আগে যা পড়েছিলাম বলে ভেবেছিলাম তার ভিত্তিতে এটি গুগলিং পেয়েছি।


1
শেল স্ক্রিপ্টগুলি আর সেট করা যায় না, ধন্যবাদ মঙ্গলভাব ... এটি একটি সম্পূর্ণরূপে খারাপ উত্তর, আপনি জানেন। সুরক্ষার ভিত্তিতে বিশেষত
মীরাবিলোস

@ মিরাবিলোস গ্রুপ বা সাধারণ লেখার পতাকা চালু থাকলে এটি কেবল বিপজ্জনক। সেতুউইডের সাথে ঝুঁকিটি হ'ল ফাইলটির লেখার অনুমতি থাকা যে কেউ তাদের ব্যবহারকারীর মতো পছন্দ মতো কিছু চালাতে পারে এবং তাই এই রাইট অনুমতিগুলি যা সুরক্ষিত হওয়া দরকার। 4755এর অর্থ সর্বদা মালিক হিসাবে কার্যকর, মালিক পড়তে, লিখতে এবং চালাতে পারে, গোষ্ঠীটি পড়তে ও চালাতে পারে এবং ব্যবহারকারীরা পড়তে ও চালাতে পারে, যা ব্যবহারকারীকে মূল অনুমতি দিয়ে করার অনুমতি দেওয়া উচিত এমন স্ট্যান্ডার্ড অনুমতি স্তর permission
এজেম্যান্সফিল্ড

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

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