আমি কি স্ক্রিপ্টকে সর্বদা মূল হিসাবে চালিত করতে পারি?


27

কে কোনও স্ক্রিপ্টকে মূল হিসাবে চালিত করতে পারে, এটি কার্যকর করে না কেন?

আমি সেটুয়েড সম্পর্কে পড়েছি তবে আমি কীভাবে এটি করব তা নিশ্চিত নই।

আমি লিনাক্স, উবুন্টু 12.04 এলটিএস ব্যবহার করছি।


আপনি কোন লিনাক্স বিতরণ চালু করছেন? নাকি ইউনিক্স, এমনকি?
স্ল্যাক করুন

@ স্লহ্যাক লিনাক্স, উবুন্টু 12
হ্যাপিডেভোপার

3
setuidস্ক্রিপ্টগুলিতে কাজ করবে না - এটি আজকাল বেশিরভাগ * নিক্স বিতরণে সুরক্ষার কারণে অক্ষম। আপনি এটি সেট করতে পারেন তবে তা উপেক্ষা করা হবে। হতে পারে আপনি আপনার প্রকৃত সমস্যা সম্পর্কে আরও ব্যাখ্যা করতে পারেন যাতে আমরা আপনাকে পরিবর্তে এটি সমাধান করতে পারি? এটি কোন স্ক্রিপ্ট? কেন এটি আপনার মূল হিসাবে চালানো দরকার? sudoবিকল্প ব্যবহার করছেন ?
নভেম্বর

আপনি চেষ্টা করেছেন sudo -s?
নাম ফুং

উত্তর:


29

সত্যিই সাবধান হন: সেটআপের সাথে মিলিত স্ক্রিপ্টগুলি বিপজ্জনক!

প্রথমে দয়া করে এই প্রশ্ন / উত্তরগুলি দেখুন , বিশেষত এই উত্তর এবং সুরক্ষা সতর্কতা সম্পর্কে

আপনি যদি এখনও স্ক্রিপ্টটি setuidসেট সহ চালনা করতে চান তবে আপনি একটি ছোট সি প্রোগ্রামটি র‌্যাপার হিসাবে লিখতে এবং setuidসংকলিত বাইনারিটিতে বিট সেট করতে পারেন ।

মোড়কের উদাহরণ:

int main(void) {        
    setuid(0);
    clearenv();
    system("/absolute/path/to/your/script.sh");
}

ব্যবহার করে অন্য সমাধান sudo( এখানে উল্লিখিত ):

  1. রুট হিসাবে, আপনার স্ক্রিপ্টে লেখার (এবং সম্ভবত অন্যান্য) অ্যাক্সেস প্রতিরোধ করুন:

    কাওন রুট /absolve/path/to/your/script.sh
    chmod 700 /absolve/path/to/your/script.sh
    
  2. যাচাই করে নিন যে রুট ব্যতীত অন্য কেউ স্ক্রিপ্টটি প্রতিস্থাপন করতে পারে , যেমন প্যারেন্ট ফোল্ডারের অ্যাক্সেস অধিকারগুলি সংশোধন করে:

    শূন্য / নিরঙ্কুশ / পথ / থেকে / আপনার /
    chmod 755 / পরম / পথ / থেকে / আপনার /
    
  3. এর /etc/sudoersসাথে সুডো অ্যাক্সেসের অধিকারগুলি সংশোধন করুন visudo:

    সমস্ত সমস্ত = (মূল) NOPASSWD: /absolve/path/to/your/script.sh
    

    সেটিংস সম্পর্কে আরও বিশদ (যেমন নির্দিষ্ট ব্যবহারকারী বা গোষ্ঠীগুলিতে অ্যাক্সেস সীমাবদ্ধ করা) sudoers ম্যানপেজে পাওয়া যাবে।

এরপরে, সমস্ত ব্যবহারকারী পাসওয়ার্ড ছাড়াই স্ক্রিপ্টটি রুট হিসাবে চালাতে পারবেন:

sudo /absolute/path/to/your/script.sh

এটি উপরের মোড়ক / সেটুইড সমাধান ব্যবহারের অনুরূপ।


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

1
সিস্টেমটি wraেকে দেওয়ার আগে ক্লিয়ারেনভ () -র কাছে আপনার কল যুক্ত করা উচিত, পরিবেশটি পুরোপুরি দূরে সরিয়ে দেওয়া যাতে স্ক্রিপ্টটি সামাল দেওয়ার জন্য কোনও মন্দ সেটিংস না থাকে। kernel.org/doc/man-pages/online/pages/man3/clearenv.3.html
স্টেফানি

@ স্টেফানি আমি অবশ্যই কিছু ভুল করছি, কারণ এগুলি একটি সাধারণ কাজের জন্য খুব পাগল দেখাচ্ছে। এটিই আমি করার চেষ্টা করছি: সার্ভারফ্রন্ট
প্রশ্ন

@ হ্যাপিডিপলপার একটি নির্লিপ্ত স্ক্রিপ্টের জন্য খুব বেশি পাগল নয়, যেহেতু খুব কম সুরক্ষিত এটি যে কোনও ব্যক্তির পক্ষে এটি পরিচালনা করতে সক্ষম হওয়ার জন্য মূলের পথ।
স্টেফানি

4
sudoসমস্ত ব্যবহারকারীকে একটি নির্দিষ্ট প্রোগ্রামে (বা স্ক্রিপ্ট) অ্যাক্সেস দিতে ব্যবহার করা যেতে পারে। সেই অর্থে, এটি অভিনব সেটিউড মোড়কের কাজ করে। দেখে মনে হচ্ছে এটি সাধারণত আপনার নিজের সেটুয়েড মোড়ক লেখার চেয়ে ভাল পছন্দ।
jjlin

4

সবচেয়ে সহজ এবং নিরাপদতম উপায় হল ফাইল অনুমতিগুলিতে সেটিং বিট ব্যবহার করা। এই ভাবে কমান্ড অনুমতিগুলি ফাইলের মালিকদের অনুমতিগুলিতে উন্নীত হবে।

সংস্করণ থেকে স্ক্রিপ্ট প্রতিরোধ প্রতিটি বিট জন্য লেখার সেট না।


0

আমি জানি না এটি কার্যকর হতে পারে কিনা তবে, স্ক্রিপ্টটিকে কেবল রুট হিসাবে চালাতে আপনি স্ক্রিপ্টের প্রথম লাইনে এই শেবাংটি ব্যবহার করতে পারেন:

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