কোনও পাসওয়ার্ড প্রম্পট ছাড়াই কোনও নির্দিষ্ট প্রোগ্রামটি রুট হিসাবে কীভাবে চালানো যায়?


169

আমার পাসওয়ার্ড ছাড়াই sudo হিসাবে কিছু চালানো দরকার, তাই আমি এটি ব্যবহার visudoকরে আমার sudoersফাইলে যুক্ত করেছি:

MYUSERNAME ALL = NOPASSWD: /path/to/my/program

তারপরে আমি এটি চেষ্টা করেছিলাম:

$ sudo /path/to/my/program
[sudo] password for MYUSERNAME: 

কেন এটি একটি পাসওয়ার্ড জিজ্ঞাসা করে? একটি পাসওয়ার্ড না জিজ্ঞাসা করে আমি কীভাবে কোনও নন-রুট ব্যবহারকারীকে কমান্ডগুলি রুট হিসাবে চালাতে / ব্যবহার করতে পারি?

উত্তর:


91

আপনার অন্য sudoersফাইলটি এন্ট্রি রয়েছে যা আপনার ব্যবহারকারীর সাথেও মেলে। NOPASSWDনিয়ম যাতে এটা প্রাধান্য নিতে জন্য যে এক পরে হতে হবে।

এটি সম্পন্ন করার পরে, sudoসমস্ত কমান্ডের ব্যতীত অন্য পাসওয়ার্ডের জন্য সাধারণত অনুরোধ জানানো হবে /path/to/my/program, এটি আপনাকে সর্বদা আপনার পাসওয়ার্ড না জিজ্ঞাসা করে চলতে দেয়।


6
/path/to/my/programঅজগর লিপিটি কি এটি এখনও কাজ করবে ?
সাদমিক্রোভে 20

পারি প্রোগ্রাম পরিবর্তে উপনাম, ব্যাশ জন্য সেট (অর্থাত হতে .bashrc)? এমনকি ভিতরে একটি শেল স্ক্রিপ্ট /usr/local/sbin? চেষ্টা করে.
নিকোস আলেকজান্দ্রিস

নিকোস - না এটি একটি উপনাম হতে পারে না। এটি অবশ্যই একটি আসল পথে নির্দেশ করবে।
পল হেডারলি

sudoers? কোথায়? আপনার উত্তরটি ব্যবহার করতে প্রস্তুত (
ভ্যাসিলি সুরিকভ

@ ভ্যাসিলি সুরিকোভ: এটি সাধারণত থাকে /etcতবে কিছু সিস্টেম এটিকে অন্য কোথাও রেখে দেয়। যদি এটি খুঁজে না পান তবে চেষ্টা করুন man sudoers। সেই ফাইলটির জন্য স্থানীয় অবস্থানটি সেই সিস্টেমে তৈরির manসময় পৃষ্ঠায় প্রতিস্থাপন করা উচিত sudo
ওয়ারেন ইয়ং

135

যদি এখানে একাধিক মিলের এন্ট্রি থাকে তবে /etc/sudoerssudo সর্বশেষটি ব্যবহার করে। অতএব, আপনি যদি পাসওয়ার্ড প্রম্পট সহ কোনও কমান্ড কার্যকর করতে পারেন এবং আপনি একটি পাসওয়ার্ড প্রম্পট ছাড়াই একটি নির্দিষ্ট কমান্ড কার্যকর করতে সক্ষম হতে চান, তবে আপনাকে ব্যতিক্রমটি শেষের প্রয়োজন।

myusername ALL = (ALL) ALL
myusername ALL = (root) NOPASSWD: /path/to/my/program

এর ব্যবহারটি নোট করুন (root), প্রোগ্রামটি রুট হিসাবে চালানোর অনুমতি দেওয়ার জন্য , তবে অন্যান্য ব্যবহারকারীর মতো নয়। (আপনি যদি এর প্রভাবগুলি না ভেবে থাকেন তবে প্রয়োজনীয় ন্যূনতমের চেয়ে বেশি অনুমতি দেবেন না))

যারা উবুন্টু চালাচ্ছেন না বা যারা ডিফল্ট sudo কনফিগারেশন পরিবর্তন করেছেন (উবুন্টুর সুডো ডিফল্টরূপে ঠিক আছে) পাঠকদের জন্য দ্রষ্টব্য : উন্নত সুবিধাগুলি সহ শেল স্ক্রিপ্টগুলি ঝুঁকিপূর্ণ, আপনার একটি পরিষ্কার পরিবেশ থেকে শুরু করা দরকার (একবার শেল শুরু হয়ে গেলে, এটি খুব দেরী হয়েছে ( শেল স্ক্রিপ্টগুলিতে সেটুকুইডকে মঞ্জুরি দিন ), সুতরাং এটির যত্ন নেওয়ার জন্য আপনার দরকার সুডোর)। নিশ্চিত হয়ে নিন যে আপনার Defaults env_resetমধ্যে রয়েছে /etc/sudoersবা এই বিকল্পটি সংকলন-সময় ডিফল্ট ( sudo sudo -V | grep envঅন্তর্ভুক্ত হওয়া উচিত Reset the environment to a default set of variables)।


3
প্রাক্তন ঝোড় থেকে মূলত সুডো সু ন ন পাস -----> জন ALL = (সমস্ত) নোপাএসডাব্লুডি: / বিন / সু
বোর্টুনাক

5
@ অ্যাড্রিয়ান আপনি যদি নির্বিচারে আদেশগুলি মূল হিসাবে অনুমতি দিতে চান তবে এটি তৈরি করুন john ALL=(ALL) NOPASSWD: all। দিয়ে যাওয়ার কোনও মানে নেই su
গিলস

প্রশ্ন: আমি কি আমার শেল স্ক্রিপ্টের অনুমতিগুলি পরিবর্তন করব যাতে এটি সুরক্ষার জন্য শুধুমাত্র রুট ব্যবহারকারীদের দ্বারা পরিবর্তিত হয় এবং পড়তে পারে? আমি কোনও আক্রমণকারী স্ক্রিপ্টটি সংশোধন করার কথা ভাবছি, যার পাসওয়ার্ডের প্রয়োজন ছাড়াই মঞ্জুরিপ্রাপ্ত সমস্ত অনুমতি রয়েছে, যাতে সে যা চায় তা করে does স্পষ্টতই, আক্রমণকারী কোনও স্ক্রিপ্টগুলির এই বিশেষত্বটি রয়েছে তা জানার জন্য sudoers ফাইলটি পড়তেও পারে না, তবে তার / সে যে ফোল্ডারে তারা যে ফোল্ডারে সঞ্চিত রয়েছে সেগুলি খুঁজে পাওয়ার পরে কিছু অনুমতিপ্রাপ্ত, বা এর মতো কিছু খুঁজে পেতে পারে তবে আমার সমস্ত কাস্টম স্ক্রিপ্ট দিয়ে চেষ্টা করতে পারে or ।
জেফ্রি লেবোস্কি

1
@ জেফ্রেলিবোস্কি যদি আপনার কাছে এমন একটি সূডো নিয়ম থাকে যা স্ক্রিপ্টটি চালায় (প্রত্যক্ষ বা অপ্রত্যক্ষভাবে) তবে কেবল রুটই (বা যে কোনওভাবে রুট সুবিধাগুলি রয়েছে) স্ক্রিপ্ট ফাইল এবং স্ক্রিপ্ট ফাইলযুক্ত ডিরেক্টরিতে লিখতে পারে এবং এর মূল ডিরেক্টরি এবং অন্যান্য। স্ক্রিপ্ট ফাইলটি যে কেউ পড়তে পারে তা বিবেচ্য নয় (যদি এটিতে কোনও পাসওয়ার্ড বা কিছু না থাকে তবে এটি একটি খারাপ ধারণা, যদি কোনও পাসওয়ার্ড থাকে তবে এটি নিজের ফাইলটিতে থাকা উচিত, অন্যথায় দুর্ঘটনাক্রমে এটি ফাঁস হওয়ার খুব বেশি ঝুঁকি রয়েছে যেমন: এই সাইটে একটি প্রশ্নে কোডটির সেই বিভাগটি অনুলিপি করুন ing
গিলস

1
@ অ্যাল্পার নং। খুব অল্প কিছু জিনিসে পুনরায় বুট করা দরকার। পরিবর্তনের পরে sudoers, আপনাকে বিশেষ কিছু করার দরকার নেই: sudoপ্রতিবার এটি পরীক্ষা করে।
গিলস

24

সতর্কতা : এই উত্তরটিকে নিরাপত্তাহীন বলে গণ্য করা হয়েছে। নীচে মন্তব্য দেখুন

সম্পূর্ণ সমাধান: নিম্নলিখিত পদক্ষেপগুলি আপনাকে পছন্দসই আউটপুট অর্জনে সহায়তা করবে:

  1. একটি নতুন স্ক্রিপ্ট ফাইল তৈরি করুন ( create_dir.shআপনার পছন্দসই স্ক্রিপ্টের নামটি দিয়ে প্রতিস্থাপন করুন ):

    vim ~/create_dir.sh
    

    স্ক্রিপ্টটি ব্যবহারকারীর হোম ডিরেক্টরিতে তৈরি করা হবে

  2. কিছু কমান্ড যুক্ত করুন যা কেবলমাত্র কোনও ব্যবহারকারী rootবা sudoব্যবহারকারী কার্যকর করতে পারে যেমন মূল ডিরেক্টরি স্তরে ফোল্ডার তৈরি করার মতো:

    mkdir /abc
    

    দ্রষ্টব্য:sudo এই আদেশগুলি যোগ করবেন না । সংরক্ষণ এবং প্রস্থান (ব্যবহার করে :wq!)

  3. এটি ব্যবহার করে এর জন্য নির্বাহের অনুমতি নির্ধারণ করুন:

    sudo chmod u+x create_dir.sh
    
  4. পরিবর্তনগুলি করুন যাতে এই স্ক্রিপ্টটির পাসওয়ার্ডের প্রয়োজন হয় না।

    1. sudoersফাইলটি খুলুন :

      sudo visudo -f /etc/sudoers
      
    2. শেষে নীচের লাইনটি যুক্ত করুন:

      ahmad ALL=(root) NOPASSWD: /home/ahmad/create_dir.sh
      

      ahmadআপনার ব্যবহারকারীর নাম যাই হোক না কেন তার সাথে প্রতিস্থাপন করুন । এটিও নিশ্চিত করুন যে এটি শেষ পংক্তি। সংরক্ষণ করুন এবং প্রস্থান.

  5. কমান্ড চালানোর সময় এর sudoআগে যুক্ত করুন :

    sudo ./create_dir.sh
    

    এটি কোনও পাসওয়ার্ড না জিজ্ঞাসা করে স্ক্রিপ্ট ফাইলের ভিতরে কমান্ডগুলি চালাবে run

সহজ ধাপ এখানে উল্লেখ অনুসরণ http://step4wd.com/2013/09/14/run-root-commands-in-linux-ubuntu-without-password/


আপনি যদি এখানে সম্পর্কিত পদক্ষেপগুলি সরবরাহ করেন এবং লিঙ্কটিকে আরও বিশদ তথ্যের জন্য ব্যাকআপ হিসাবে ব্যবহার করেন তবে ভাল। এই লিঙ্কটি আর বৈধ না হলে এমনকি আপনার উত্তরটি সম্ভাব্য মান ধরে রাখে।
অ্যান্থন

15
এই পরামর্শটি অনিরাপদ। sudoঅংশ sudo chmod u+x create_dir.shহিসাবে ব্যবহারকারী (সম্ভবতঃ) তাঁর / তার বাড়ি Dir উপর মালিকানা রয়েছে অপ্রয়োজনীয়। যেহেতু ব্যবহারকারী লিখতে পারেন create_dir.sh, আপনি কার্যকরভাবে সেই ব্যবহারকারীকে একটি বিনামূল্যে মূল শেল দিয়েছেন given
লেকেনস্টেইন

1
@ লেকেনস্টেইন যার অর্থ ব্যবহারকারী হিসাবে চলমান যে কোনও প্রোগ্রাম। পাশাপাশি কেবলমাত্র পাসওয়ার্ড ছাড়াই ব্যবহারকারীকে সুডো দিয়ে যে কোনও কিছু চালানোর অনুমতি দেওয়া যেতে পারে।
পাইডসাইনার

2
আমি কিছু অনুপস্থিত করছি? আমি বিশ্বাস করি যে chmodপুরোটি অপ্রয়োজনীয়, যেহেতু আপনি sudoআপনার সুবিধাগুলি বাড়ানোর জন্য নির্ভর করছেন ।
জি-ম্যান

10

আমি মনে করি আপনার সিনট্যাক্সটি ভুল। কমপক্ষে আমি নিম্নলিখিতটি ব্যবহার করি যা আমার পক্ষে কাজ করে:

myusername ALL=(ALL) NOPASSWD: /path/to/executable

6
(ALL)অংশ ঐচ্ছিক, এটা যাব ঠিক একই প্রভাব রয়েছে। রয়ে (root)যদিও ভাল হবে, কিন্তু তার অনুপস্থিতি সমস্যা ব্যাখ্যা করে নি।
গিলস

এই আদেশের জন্য সুডোর জন্য +1 এবং অন্য কিছুই! পুরো সিস্টেমটি ভাঙার কোনও কারণ নেই ...
জোহান

3
@ জোহান: এটি ইতিমধ্যে প্রশ্নে ছিল।
গিলস

5

আপনি যদি sudo ব্যবহার না করা বা sudoers কনফিগারেশন ফাইলটি পরিবর্তন করতে না চান তবে আপনি ব্যবহার করতে পারেন:

sudo chown root:root path/to/command/COMMAND_NAME
sudo chmod 4775 path/to/command/COMMAND_NAME

এটি কমান্ডটি sudo এর প্রয়োজন ছাড়াই মূল হিসাবে চালিত করবে।


বাহ, আমি এই সমাধানটি এর আগে কখনও শুনিনি, মাথা ঘোরাঘুরি
কিছু কিছু

আমার কেন সর্বোত্তম উত্তর খুঁজতে এই বিষয়গুলির নীচে স্ক্রোল করা দরকার? এই সহজ সুরক্ষিত সমাধানের জন্য ধন্যবাদ।
রায়াননার্ড

5

আপনার যদি মাঞ্জারোর মতো কোনও ডিস্ট্রো থাকে তবে আপনাকে অবশ্যই প্রথমে এমন ফাইলের সাথে ডিল করতে হবে যা / ইত্যাদি / সুডোর সংজ্ঞাটিকে ওভাররাইড করে, আপনি এটি মুছে ফেলতে পারেন বা আপনার নতুন কনফিগারেশন যুক্ত করতে সরাসরি সেই ফাইলটির সাথে কাজ করতে পারেন।

এই ফাইলটি হ'ল:

sudo cat /etc/sudoers.d/10-installer

এটি দেখার একমাত্র উপায় মূল সুবিধার অধীনে রয়েছে, আপনি এটি ছাড়া এই ডিরেক্টরিটি তালিকাভুক্ত করতে পারবেন না, এই ফাইলটি মনজারো নির্দিষ্ট, আপনি অন্য নামের সাথে এই কনফিগারেশনটি খুঁজে পেতে পারেন তবে একই ডিরেক্টরিতে।

আপনার পছন্দের ফাইলটিতে, আপনার পছন্দসই কনফিগারেশন (গুলি) পেতে আপনি নিম্নলিখিত লাইনটি যুক্ত করতে পারেন:

একটি গোষ্ঠীর জন্য প্রমাণীকরণ উপেক্ষা করুন

%group ALL=(ALL) NOPASSWD: ALL

বা ব্যবহারকারীর জন্য প্রমাণীকরণ উপেক্ষা করুন

youruser ALL=(ALL) NOPASSWD: ALL

বা নির্দিষ্ট ব্যবহারকারীর জন্য কার্যকর করার যোগ্যতা প্রমাণীকরণ উপেক্ষা করুন

youruser ALL=(ALL) NOPASSWD: /path/to/executable

দ্রুত দ্রষ্টব্য: আপনি প্রমাণীকরণ ব্যতীত SUDO ব্যবহারের জন্য একটি দরজা খুলছেন, এর অর্থ আপনি আপনার সিস্টেম থেকে সমস্ত কিছু সংশোধন করে সমস্ত কিছু চালাতে পারেন, দায়বদ্ধতার সাথে এটি ব্যবহার করতে পারেন।


4

যাচাই করুন যে sudo অ্যালাইজড নয়। এইভাবে চালান

/usr/bin/sudo /path/to/my/program

উদাহরণস্বরূপ একটি শেল ওরফে এটির মতো:

alias sudo="sudo env PATH=$PATH"

এই আচরণের কারণ হতে পারে।


আপনি ঠিক বলেছেন, আমার মন্তব্যটি এখানে ছিল না , তার জন্য দুঃখিত। তবুও আমি কৌতূহল বোধ করছি - আপনি কীভাবে আলয়েজিংয়ের sudoersমাধ্যমে সুডো দ্বারা প্রসেসিং পরিবর্তন করার প্রত্যাশা করবেন । অথবা sudoআপনি এমন কিছুতে পুনঃনির্দেশের কথা বলছেন যা সর্বদা পাসওয়ার্ডগুলি স্কুপে এই ত্রুটি বার্তাটি প্রিন্ট করে? এখানে ক্ষেত্রে সম্ভবত এটি অসম্ভব ...
পিটার্ফ

2
ওপি'র মতোই আমারও সমস্যা ছিল। এটি alias sudo="sudo env PATH=$PATH"আমার মধ্যে থাকার কারণে হয়ে গেছে ~/.bashrc। এটি কেবল নিজের জন্য সমাধান করার পরিবর্তে এবং অন্ধভাবে আমার ব্যবসায়ের বিষয়ে আলোচনা করার পরিবর্তে, আমি এই উত্তরটি এই থ্রেডের সাথে উপস্থিত যে কারও পক্ষে সম্ভাব্য সমাধান হিসাবে জমা দিয়েছি submitted
সেপিরো

1
এটি ঠিক আছে, তবে যখন এটি স্পষ্ট না হয় (যা এই ক্ষেত্রে কমপক্ষে কিছু লোকের পক্ষে নয়) কিছু প্রসঙ্গ সরবরাহ করার জন্য এবং লোকদের অন্ধভাবে যাদু জাগ্রত ব্যবহার থেকে বাঁচানোর জন্য উত্তরের একটি ব্যাখ্যা দেওয়া ভাল। +2 (- (- 1) +1 1)। :)
পিটার্ফ

2

আপনি যখন আপনার স্ক্রিপ্টটি কার্যকর করেন তখন আপনাকে এটি চালানো দরকার sudo /path/to/my/script

সম্পাদনা করুন: অন্য উত্তরে আপনার মন্তব্যের ভিত্তিতে আপনি এটি একটি আইকন থেকে চালাতে চান। .desktopটার্মিনালের মতো আপনাকে এমন একটি ফাইল তৈরি করতে হবে যা আপনার প্রোগ্রামটি সুডো দিয়ে চালায়।

আপনি gtk-sudoএকটি ভিজ্যুয়াল পাসওয়ার্ড প্রম্পট জন্য ব্যবহার বিবেচনা করতে পারেন ।

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


7
শেল স্ক্রিপ্ট সেটআপ করবেন না । দেখুন শেল স্ক্রিপ্ট উপর setuid অনুমতি দিন
গিলস

আমি এটি উল্লেখ না করেও বিবেচনা করেছি কারণ এটি একটি খারাপ বিকল্প। আমি কেবল এটি মুছে ফেলেছি কারণ আমি উদ্বিগ্ন এই প্রশ্নকর্তা এই পরামর্শটি এমনকি খারাপ পরামর্শ বলে সতর্ক করার পরেও ব্যবহার করতে পারেন!
কালেব

2

এটি আমার জন্য সমস্যাটি সমাধান করেছে (অন্যান্য উত্তরগুলির সাথে কিছু চেষ্টা করেছিল, এটি সম্ভবত সহায়তা করেছিল):

আমি যে স্ক্রিপ্টটি কল করছিলাম সেটি ছিল /usr/bin, একটি ডিরেক্টরিতে আমার লেখার অনুমতি নেই (যদিও আমি সেখানে কোনও ফাইল সাধারণত পড়তে পারি)। স্ক্রিপ্টটি chmodded + x (এক্সিকিউটেবল পার্সিমিসন) ছিল, কিন্তু এটি এখনও কার্যকর হয়নি। এই ফাইলটি আমার হোম ডিরেক্টরিতে একটি পাথের দিকে সরানো পরিবর্তে /usr/bin, আমি শেষ পর্যন্ত কোনও পাসওয়ার্ড না দিয়ে sudo দিয়ে এটি কল করতে সক্ষম হয়েছি।

এছাড়াও এমন কিছু সম্পর্কে যা আমি সন্দেহ করেছিলাম (ভবিষ্যতের পাঠকদের জন্য স্পষ্ট করে): আপনার স্ক্রিপ্টটি sudo হিসাবে চালানো দরকার। স্ক্রিপ্ট কল করার sudoসময় টাইপ করুন । আপনার স্ক্রিপ্টের অভ্যন্তরে যে কমান্ডটি আসবে তার মূল ব্যবহার করা যাবেন না (আমার ক্ষেত্রে কীবোর্ডের ব্যাকলাইট পরিবর্তন করা হয়)। সম্ভবত এটিও কাজ করে, তবে আপনার দরকার নেই এবং এটি না করার চেয়ে ভাল সমাধান বলে মনে হচ্ছে।sudo


দ্বিতীয় অনুচ্ছেদে আমার সমস্যার উত্তর ছিল
এম আহমেদ জাফর

@ মুহাম্মাদ আহমাদ জাফর এতে খুশী হয়েছে!
লুক

3
আসলে sudoকোনও স্ক্রিপ্টের অভ্যন্তর ব্যবহার করা পুরোপুরি ঠিক আছে তবে আপনার sudoersপাসওয়ার্ড ছাড়াই প্রশ্নে কমান্ডটি চালানোর উপযুক্ত অধিকার রয়েছে (সেট আপ )। এটি জিনিসগুলিকে কিছুটা সুরক্ষিত করে।
পিটার্ফ

অন্য উত্তরগুলির সাথে কথোপকথন না করে এই উত্তরটি ধাপে-ধাপে পুনরায় লিখিত এই উত্তরটি ব্যবহার করতে পারে
ওয়ালরাস দ্য ক্যাট

টুইটার আমার উত্তরটি পুনরায় পড়া, আমি মনে করি আমি নিজেই কিছুটা বিভ্রান্ত হয়ে পড়েছি। এখনই যদিও, সঠিক পরিস্থিতিটি কী ছিল তা আমি মনে করি না তাই আমি সত্যিই আরও ভাল লেখার ব্যবস্থা করতে পারি না। যদি আপনি এটি বের করেন, সম্ভবত বেশ কয়েকটি উত্তরের একটি সংমিশ্রণ, সর্বদাই একটি নতুন উত্তর জমা দিন!
লুক

1

আর একটি সম্ভাবনা হ'ল ইনস্টল করা, কনফিগার করা এবং তারপরে আপনার স্ক্রিপ্টটি চালানোর জন্য সুপার কমান্ড ব্যবহার করা

super /path/to/your/script

আপনি কিছু বাইনারি চালাতে চান তাহলে এক্সিকিউটেবল (যেমন যে আপনি মধ্যে কম্পাইল করা হয়েছে ELF কিছু সি সোর্স কোড থেকে বাইনারি) -যেটা হয় না root পরিচয়ে script-, আপনি পারে এটা বিবেচনা setuid (এবং আসলে /bin/login, /usr/bin/sudoএবং /bin/suএবং superযে সব কৌশল ব্যবহার করছেন )। তবে, খুব সাবধানতা অবলম্বন করুন, আপনি একটি বিশাল সুরক্ষা গর্ত খুলতে পারেন

কংক্রিটের সাথে, আপনার প্রোগ্রামটি অযৌক্তিকভাবে কোডিং করা উচিত (সুতরাং সম্ভাব্য প্রতিকূল ব্যবহারকারীকে ধরে নিয়ে " আচরণের আগে সমস্ত যুক্তি এবং পরিবেশ এবং বাইরের পরিস্থিতি পরীক্ষা করুন), তবে আপনি সিটুইড (2) এবং বন্ধুবান্ধব ( সংশোধন (2) দেখুন ) সাবধানতার সাথে ব্যবহার করতে পারেন ( ক্ষমতা (7) এবং শংসাপত্রগুলিও দেখুন (7) এবং সম্পাদন (2) ...)

আপনি ব্যবহার করব chmod u+s(পড়া chmod (1) ইনস্টল যেমন একটি বাইনারি)।

তবে খুব সাবধান হন

অ্যাডভান্সড লিনাক্স প্রোগ্রামিং সহ সেটুইড সম্পর্কে অনেকগুলি বিষয় পড়ুন such

লক্ষ্য করুন যে কোনও স্ক্রিপ্ট, বা কোনও শেবাং-জাতীয় জিনিস সেটআপ করা যায় না। তবে আপনি কোডটি (সিতে) একটি ছোট সেটুইড-বাইনারি এটিকে মোড়ানো করতে পারেন।


0

আদর্শভাবে যদি আপনি কমান্ডগুলি পরিচালনা করতে পারেন তা কাস্টমাইজ করে থাকেন তবে আপনার সরাসরি ফাইল সম্পাদনা করার পরিবর্তে sudoএকটি পৃথক ফাইলে এই পরিবর্তনগুলি করা উচিত । আপনার ফাইল (গুলি) সম্পাদনা করতে সর্বদা ব্যবহার করা উচিত । আপনাকে এটার অনুমতি কখনও উচিত উপর কমান্ড।/etc/sudoers.d/sudoersvisudoNOPASSWDALL

উদাহরণ: sudo visudo -f /etc/sudoers.d/mynotriskycommand

অনুমতি দেওয়ার জন্য আপনার লাইনটি প্রবেশ করান: myuser ALL= NOPASSWD: /path/to/your/program

তারপরে সংরক্ষণ করুন এবং প্রস্থান করুন এবং visudoআপনার যদি কোনও সিনট্যাক্স ত্রুটি থেকে থাকে তবে আপনাকে সতর্ক করবে।

sudo -lআপনার ব্যবহারকারীর যে অনুমতি পেয়েছে তা দেখতে আপনি দৌড়াতে পারেন , যদি কোনও নির্দিষ্ট নির্দিষ্ট NOPASSWDকমান্ড %groupyouarein ALL=(ALL) ALLআউটপুটে কোনও আদেশের আগে উপস্থিত হয় তবে আপনাকে আপনার পাসওয়ার্ডের জন্য অনুরোধ করা হবে।

যদি আপনি নিজেকে এই প্রচুর sudoers.d ফাইল তৈরি করে দেখতে পান তবে সম্ভবত আপনি তাদের ব্যবহারকারী হিসাবে নাম তৈরি করতে চান যাতে সেগুলি ভিজ্যুয়ালাইজ করা সহজ হয়। মনে রাখবেন যে ফাইলের মধ্যে ফাইলের নাম এবং বিধিগুলির ক্রমটি অত্যন্ত গুরুত্বপূর্ণ, সর্বশেষের একটি বোঝা বিজয়ী, এটি পূর্ববর্তী এন্ট্রিগুলির চেয়ে আরও বেশি বা কম অনুমোদিত।

আপনি 00-99 বা এএ / বিবি / সিসির উপসর্গ ব্যবহার করে ফাইলের নাম ক্রমটি নিয়ন্ত্রণ করতে পারেন, তবে এও মনে রাখবেন যে আপনার যদি এমন কোনও ফাইল রয়েছে যার সংখ্যার উপসর্গ নেই, তবে তারা সংখ্যায়িত ফাইলের পরে ওভাররাইড করে লোড করবে সেটিংস। এটি কারণ আপনার ভাষা সেটিংসের উপর নির্ভর করে "লেজিকাল বাছাই" শেলটি প্রথমে ধরণের সংখ্যা ব্যবহার করে এবং তারপরে "আরোহী" ক্রম অনুসারে বাছাইয়ের সময় উপরের এবং ছোট হাতের অংশটি আন্তঃবিবাহ করতে পারে।

দৌড়াতে চেষ্টা করুন printf '%s\n' {{0..99},{A-Z},{a-z}} | sortএবং printf '%s\n' {{0..99},{A-Z},{a-z}} | LANG=C sortআপনার বর্তমান ভাষার প্রিন্টগুলি AaBbCcইত্যাদি প্রিন্ট রয়েছে কিনা তা পরীক্ষা করে দেখুন বা ABCতারপরে abcব্যবহারের সেরা "শেষ" বর্ণের উপসর্গটি কী হবে তা নির্ধারণ করুন।


0

কোনও ব্যবহারকারীর পাসওয়ার্ড জিজ্ঞাসা না করে sudo হিসাবে প্রোগ্রাম চালানোর অনুমতি দেওয়ার জন্য আপনি নিম্নলিখিত লাইনটি যুক্ত করতে পারেন

%sudo ALL=(root) NOPASSWD: /path/to/your/program

মধ্যে /etc/sudoers

নোট করুন যে % sudo এটি তৈরি করে।


যদিও এটি একটি সুডো নিয়মটি সম্পাদনের এক উপায়, যদিও এই নিয়মে NOPASSWD পতাকা সেট করার ফলে এখনও একটি পাসওয়ার্ড প্রম্পটের ফলস্বরূপ প্রশ্নটির উত্তর পাওয়া যায় না। কেন এটি ঘটেছিল একটি ধারণার জন্য গৃহীত উত্তর দেখুন।
জেফ স্ক্যালার হলেন

0

নীচের ক্ষেত্রে সেই ক্ষেত্রে রয়েছে যেখানে আপনি পাসওয়ার্ড ছাড়াই একটি কমান্ড চালাতে চান কেবলমাত্র যদি এটির একটি নির্দিষ্ট বিকল্পের বিকল্প থাকে, যেখানে বিকল্পগুলির একটি অংশ পরিবর্তনীয় । আফাইক, সুডোরের ঘোষণায় ভেরিয়েবল বা মানের ব্যাপ্তি ব্যবহার করা সম্ভব নয়, অর্থাৎ আপনি স্পষ্টভাবে অ্যাক্সেসের অনুমতি দিতে পারবেন command option1কিন্তু command option2ব্যবহার না করে:

user_name ALL=(root) /usr/bin/command option1

তবে কাঠামোটি যদি command option1 value1যেখানে value1পরিবর্তিত হতে পারে তবে প্রতিটি সম্ভাব্য মানের জন্য আপনার সুস্পষ্ট sudoers লাইন থাকা দরকার value1। শেল স্ক্রিপ্ট এর চারপাশে একটি উপায় সরবরাহ করে।

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

  1. শেল স্ক্রিপ্ট তৈরি করুন যেখানে আপনি আদেশ ছাড়াই কল করবেন sudo
  2. স্ক্রিপ্টটি কোনও রুট-বিশেষাধিকারযুক্ত ফোল্ডারে সংরক্ষণ করুন (উদাঃ /usr/local/bin/), chown root:wheel /usr/local/bin/script_nameঅন্যের জন্য লেখার অ্যাক্সেস ছাড়াই (যেমন ) ফাইলটিকে রুট-মালিকানাধীন (যেমন chmod 755 /usr/local/bin/script_name) করুন।
  3. ভিজুডো ব্যবহার করে সুডোরগুলিতে ব্যতিক্রম যুক্ত করুন:

    user_name ALL=(root) NOPASSWD: /usr/local/bin/script_name

  4. আপনার স্ক্রিপ্ট চালান sudo script_name

উদাহরণস্বরূপ, আমি ম্যাকস-এ ডিসপ্লে স্লিপ টাইমআউট পরিবর্তন করতে চাই। এটি ব্যবহার করে করা হয়:

sudo pmset displaysleep time_in_minutes

আমি স্লিপ টাইমআউটকে একটি নিরীহ ক্রিয়াটি পরিবর্তন হিসাবে বিবেচনা করি যা পাসওয়ার্ড টাইপিংয়ের ঝামেলা ন্যায়সঙ্গত করে না, তবে pmsetঅনেক কিছুই করতে পারে এবং আমি এই অন্যান্য জিনিসগুলি সুডো পাসওয়ার্ডের পিছনে রাখতে চাই।

সুতরাং আমার এখানে নিম্নলিখিত স্ক্রিপ্ট রয়েছে /usr/local/bin/ds:

#!/bin/bash
if [ $# -eq 0 ]; then
        echo 'To set displaysleep time, run "sudo ds [sleep_time_in_minutes]"'
else
        if [[ $1 =~ ^([0-9]|[1-9][0-9]|1[0-7][0-9]|180)$ ]]; then
                pmset displaysleep $1 
        else
                echo 'Time must be 0..180, where 0 = never, 1..180 = number of minutes'
        fi
fi

sudoersফাইলের শেষে আমার নীচের লাইনটি রয়েছে:

user_name ALL=(root) NOPASSWD: /usr/local/bin/ds

3 মিনিটে টাইমআউট সেট করতে, আমি আমার ব্যবহারকারীর সাধারণ অ্যাকাউন্ট থেকে আমার স্ক্রিপ্টটি চালাই user_name:

sudo ds 3

পিএস আমার বেশিরভাগ স্ক্রিপ্ট হ'ল ইনপুট বৈধতা যা বাধ্যতামূলক নয় তাই নিম্নলিখিতগুলিও কাজ করবে:

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