আমি কিছু কমান্ড কেন sudo করতে পারি না? (যেমন, ভিএম)


16

আমার বন্ধুদের সার্ভারে সুডো অ্যাক্সেস রয়েছে, সেন্টোস -৩.৩ চলছে, তবে যখন আমি কিছু কমান্ড চালানোর চেষ্টা করি তখন আমি sudo vim /var/www/html/index.htmlএকটি ত্রুটি পেয়ে sudo: vim: command not foundযাই তবে চালাতে পারি sudo suএবং তারপরে vim /var/www/html/index.htmlএটি প্রত্যাশার মতো কাজ করে।

echo $PATHএবং sudo echo $PATHউভয় ফলন:

/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jared/bin

sudo which vim তবে ফলন:

which: no vim in (/sbin:/bin:/usr/sbin:/usr/bin)

আমি যোগ করার চেষ্টা করেছি

export PATH=$PATH:/usr/local/bin

থেকে /root/.bashrcযখন ব্যবহার যা সমস্যা সমাধান করা হয়েছে sudo suকিন্তু শুধু sudo <command>

আমি কীভাবে sudo <command>কাজ করব?


আপনি কি ইতিমধ্যে সেন্টোস ওএস-এর sudoers এ ব্যবহারকারীটিকে যুক্ত করেছেন?
এএলভিজ

উত্তর:


18

চলমান অবস্থায় sudo, অনেকগুলি সিস্টেম অ-শ্বেত তালিকাভুক্ত মানগুলির পরিবেশ সাফ করার জন্য এবং PATH ভেরিয়েবলটিকে স্যানিটাইজড মানটিতে পুনরায় সেট করতে কনফিগার করা হয়।

আপনি প্রাক্তন হিসাবে Defaults env_resetএবং বেশ কয়েকটি Defaults env_keep += "SOME_VARIABLE_NAME"খুঁজে পাবেন /etc/sudoers। পরবর্তী "সুরক্ষিত" PATHওভাররাইডটি হিসাবে নির্দিষ্ট করা হয়েছে Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin- sudoআইএনএন করার সময় এই আচরণটি সরাতে এই লাইনটি মুছুন ।


কীভাবে পরিবেশের পরিবর্তনশীল পরিচালনা করা হয় তা আপনি যখন চালনা sudo -Vকরেন তা মুদ্রিত  হয় root


আপনি যদি এই ডিফল্টগুলি থেকে মুক্তি পেতে না চান তবে আপনি সর্বদা তাদের সম্পূর্ণ পথ ( sudo /usr/local/bin/vim) ব্যবহার করে প্রোগ্রামগুলি নির্দিষ্ট করতে পারেন ।

অন্যথা, আপনি আপনার অ্যাকাউন্ট অনুমতি দিতে পারেন SETENVমধ্যে sudoersফাইল, উদাহরণস্বরূপ:

%wheel  ALL=(ALL)       SETENV: ALL

এটি আপনাকে এনভায়রনমেন্ট ডিফল্টকে এই জাতীয় ওভাররাইড করতে দেয়: sudo PATH=$PATH which vimযেমন কমান্ড কার্যকর হওয়ার আগে আপনার শেল দ্বারা ভেরিয়েবলটি ব্যাখ্যা করা হয়, ফলস্বরূপ উত্তরাধিকার সূত্রে প্রাপ্ত হয় PATH( /sbinযদিও সম্ভবত এটি অন্তর্ভুক্ত থাকবে না )।


ধন্যবাদ। আমি ডানিসের কাজটি ব্যবহার করব যতক্ষণ না আমি মালিককে সুডোর ফাইল সংশোধন করতে পারি।
জ্যারেডম্যাকএটিয়ার

6
sudo echo $PATH

আপনি যা ভাবেন তা করেন না। কমান্ড এক্সিকিউটিংয়ের আগে$PATH (আপনার) শেল দ্বারা প্রতিস্থাপিত হয় ।

পছন্দসই আচরণ সম্পাদন করতে, আপনি ব্যবহার করতে পারেন sudo -i

ম্যান সুডোর কাছ থেকে :

-আমি নির্দেশ করছি]

-I ( অনুকরণ প্রাথমিক লগইন ) বিকল্প শেল উল্লেখিত রান passwd কোন একটি লগইন শেল হিসাবে লক্ষ্য ব্যবহারকারীর (5) এন্ট্রি। এর অর্থ এই যে লগইন নির্দিষ্ট রিসোর্সে যেমন ফাইল .profileবা .loginশেল দ্বারা পড়া করা হবে না। যদি একটি কমান্ড নির্দিষ্ট করা থাকে, তবে এটি কার্যকর করার জন্য শেলকে দেওয়া হয় is


1
মালিককে sudoers ফাইল সামঞ্জস্য করতে না পারা পর্যন্ত এটি একটি উপযুক্ত কাজ।
জ্যারেডম্যাকএটিয়ার

1

আমি কীভাবে sudo <command>কাজ করব?

যতক্ষণ না আপনি পাথ দিয়ে সমস্যার সমাধান করছেন ততক্ষণে একটি পুরো পথের নাম ব্যবহার করুন

  sudo /usr/local/bin/vim /var/www/html/index.html

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