উবুন্টু: কোনও ব্যবহারকারীকে রুট অনুমতি নিয়ে স্ক্রিপ্ট চালানো হোক


9

আমার উবুন্টু 8.04 আছে এবং আমি বাশ স্ক্রিপ্টটি লিখতে চাই rootযা প্রতিটি ব্যবহারকারী চালাতে পারে runs

আমি নিজেও সুডো করতে পারি।

আমি কেমন করে ঐটি করি?

বর্ণমালা : আমি এটি sudo দিয়ে করতে চাই না, কারণ তখন ব্যবহারকারীদের তাদের পাসওয়ার্ড টাইপ করতে হবে। আমি কেবল তাদের স্ক্রিপ্টটি মূল হিসাবে চালিত করতে চাই, সম্ভবত কিছু নির্বিঘ্নে, ডুনো।

উত্তর:


23

এটি যদি একটি সাধারণ বাইনারি হয় তবে আপনি চালিয়ে গিয়ে সেটআপ করতে পারেন

# chmod u+s /path/to/binary

দুর্ভাগ্যক্রমে, স্ক্রিপ্টগুলি সেট করা যায় না। (ভাল আপনি পারেন, কিন্তু এটি উপেক্ষা করা হবে)। এর কারণ হ'ল স্ক্রিপ্টের প্রথম লাইনটি ওএসকে স্ক্রিপ্টটি কোন দোভাষী দ্বারা চালিত করতে পারে তা বলে। উদাহরণস্বরূপ যদি আপনার সাথে কোনও স্ক্রিপ্ট থাকে:

#!/bin/bash

আপনি আসলে দৌড়াতে চাই

/bin/bash /path/to/script

স্পষ্টতই, আপনাকে সেটআপ করার জন্য দোভাষী দরকার হবে, যার অর্থ সমস্ত স্ক্রিপ্টগুলি সেট করা হবে। এটা খারাপ হবে।

নীচে আপনার / ইত্যাদি / sudoers ফাইলটিতে ভিজুডো চালিয়ে আপনি sudo দিয়ে এটি করতে পারেন।

ALL ALL=NOPASSWD: /path/to/script

এবং এখন যে কোনও ব্যবহারকারী চালাতে পারবেন

$ sudo /path/to/script

এটি তাদের পাসওয়ার্ড টাইপ না করে স্ক্রিপ্টটি চালানোর অনুমতি দেয়।

কমান্ডে সুডোর প্রয়োজন নেই এমন একটি বিকল্প রয়েছে যার জন্য আপনার স্ক্রিপ্টটি কার্যকর করে এমন একটি ছোট সেটআপড বাইনারি তৈরি করা দরকার তবে প্রতিটি অতিরিক্ত সেটুইড বাইনারি আরও একটি সম্ভাব্য সুরক্ষা সমস্যা যুক্ত করে।


আমি মনে করি এটিই আমি উত্তর খুঁজছিলাম। আমি কি কোনও বাইনারি স্ক্রিন সেট করতে পারি না? (অবশ্যই, আমি এটিকে অযোগ্য করে তোলার ব্যবস্থা নেব)
ফ্লাইওয়ায়ার

না, আপনি কোনও স্ক্রিপ্ট সেটআপ করতে পারবেন না।
wfaulk

wfaulk: আপনি সক্ষম হতেন, তবে বেশিরভাগ সাম্প্রতিক লিনাক্স ডিস্ট্রোস এটি আর অনুমতি দেয় না। স্ক্রিপ্টটি 'সংকলন' করতে আপনি shc এর মতো একটি সরঞ্জাম ব্যবহার করতে পারেন এবং তারপরে সেটআপ করে তুলতে পারেন।
কাইল ব্র্যান্ড্ট

wfaulk: অবশ্যই, এটি ইচ্ছাকৃতভাবে অক্ষম এমন কিছু করার আপনার উপায় থেকে দূরে চলে যাবে, সুতরাং এটি সম্ভবত একটি খারাপ ধারণা :-)
কাইল ব্র্যান্ড্ট

ALLকোনও ব্যবহারকারীর নামের সাথে পদটি প্রতিস্থাপন করুন যাতে কেবলমাত্র একজন sudoer একটি পাসওয়ার্ড প্রবেশ না করে চালাতে সক্ষম হয়।
hdave

3

আমি যে লাইন সন্নিবেশ করা প্রয়োজন সবশেষে / sudoers / etc: ALL ALL = NOPASSWD: <filename> দৃশ্যত, পরবর্তী %admin ALL=(ALL) ALLওভাররাইড অ্যাডমিন ব্যবহারকারীদের জন্য একটি পাসওয়ার্ড প্রয়োজন।

কোনও স্ক্রিপ্টটিকে ততক্ষণ রুট হিসাবে চালানোর অনুমতি দেওয়ার ক্ষেত্রে কোনও সুরক্ষা সমস্যা নেই যতক্ষণ না স্ক্রিপ্টটি একটি নির্ধারিত, নিরীহ, মঞ্জুরিপ্রাপ্ত ক্রিয়া করে এবং যদি কোনও প্যারামিটারের মানগুলি স্ক্রিপ্টটিকে দুর্ব্যবহার করতে না পারে।

তবে একটা গ্যাচা আছে ...

কমান্ড এবং ফাইলের নামগুলিতে সর্বদা পূর্ণ পথ ব্যবহার করুন। আপনি যদি এর মতো কিছু লিখে echo Hello world!থাকেন তবে myrootscriptকেউ হয়ত একটি লিখতে পারে ~/bin/echo scriptএবং myrootscriptএতে যা কিছু আছে তার মূল হিসাবে চালিত করবে।

/bin/echo "Hoping this will keep you safe" :-)


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

2

ডিফল্টরূপে, wheelগ্রুপের সদস্যদের sudoহিসাবে কোনও আদেশের অনুমতি দেওয়া হয় root। আপনি আজ অবধি এভাবে ব্যবহার sudoকরছেন।

অন্য ব্যবহারকারীর অনুমতি দেওয়ার জন্য আপনাকে একটি sudoersবিধি তৈরি করতে হবে । উদাহরণ স্বরূপ:

mickey.mouse ALL = (root) NOPASSWD: /usr/local/bin/test.sh

ব্যবহারকারী অনুমতি দেবে mickey.mouseকমান্ড চালানোর জন্য /usr/local/bin/test.shযেমন rootএকটি অতিরিক্ত পাসওয়ার্ড প্রম্পটের প্রয়োজন ছাড়া।

আরও তথ্যের জন্য আপনার এই দস্তাবেজটি পড়া উচিত ।


দেবিয়ান / উবুন্টু চাকার চেয়ে অ্যাডমিন গ্রুপটি ব্যবহার করে। এটি সম্ভবত কিছুটা আরও সঠিক নাম।
ডেভিড পাশলে

আমাকে পুরানো ফ্যাশন বলুন, তবে ..;)
ড্যান কারলি

1
পুরাতন ধাঁচ: পি
ডেভিড পাশলে

0

chmod +s <filename>সুইড বিটটি ব্যবহার করতে। এর অর্থ হ'ল যখন ফাইলটি কার্যকর করা হয় তখন ফাইলের মালিকের অনুমতি নিয়ে এটি চলতে থাকে (সুতরাং এটি এটির মতো চালানোর জন্য এটি রুটটিতে ছুঁড়ে দেওয়া হয়)।

তবে এটি ব্যাশ স্ক্রিপ্টগুলির মতো কোনও কিছুর সাথে খুব বিপজ্জনক হতে পারে, কারণ কোনও ব্যবহারকারী এটি পরিবর্তন করার কোনও উপায় খুঁজে পান, তারা সহজেই একটি মূল শেল পেতে পারে। এটি রুট ব্যতীত অন্য কারও কাছে লেখা যায় না তা নিশ্চিত করুন।

লিনাক্স আপনাকে স্ক্রিপ্টগুলিতে সেটআপ করার অনুমতি দেয় না, এটি করার জন্য আপনাকে এটি প্রোগ্রাম হিসাবে সংকলন করতে হবে। পরিবর্তে, আপনি sudoers ফাইল (/ ইত্যাদি / sudoers) ব্যবহার করতে পারেন, এবং এই মত একটি লাইন যোগ করতে পারেন।

<username> ALL = NOPASSWD: /path/to/script


0

অন্য বিকল্প: আপনি যে স্ক্রিপ্টের চারপাশে একটি ছোট সেটিউড সি র‍্যাপার করতে পারেন

  • আপনি কার্যকর করতে পারেন এমন কোনও সীমাবদ্ধতার জন্য পরীক্ষা করে (ব্যবহারকারীর তালিকা, সময়, সিস্টেম লোড, ...)
  • লগ / অডিট কার্যকর যদি প্রয়োজন হয়
  • স্ক্রিপ্ট চালায়

একাধিক ক্যাপাবিলিটিগুলির নিজস্ব উপসেটটি পছন্দ sudo

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