SUDOERS এর মাধ্যমে নির্দিষ্ট ডিরেক্টরিতে কমান্ড চালানো সীমাবদ্ধ করবেন কীভাবে?


13

সিস্টেমে কোনও ফাইল বা ডিরেক্টরিতে কোনও ব্যবহারকারীকে chownএবং chmodকমান্ড চালানোর অনুমতি দেওয়ার জন্য আমি sudo (sudoers ফাইলের মাধ্যমে) কনফিগার করতে পারি । তবে আমি কেবলমাত্র কোনও ব্যবহারকারীকে /var/www/htmlডিরেক্টরিতে নীচে থাকা ফাইলগুলিতে এই কমান্ডগুলি চালনার অনুমতি দিতে চাই ।

আমি কীভাবে সুবিধাযুক্ত কমান্ডগুলিকে সীমাবদ্ধ করতে পারি যে ব্যবহারকারীরা কেবল তাদের পূর্ব-নির্দিষ্ট ডিরেক্টরিতে চালাতে পারে?

উদাহরণস্বরূপ: নিম্নলিখিত কমান্ড index.htmlফাইল করার জন্য 7 777 টি অনুমতি দেয় ।

sudo chmod 777 /var/www/html/index.html

এখন আমি দুটি ক্রিয়া সম্পাদন করতে চাই

  1. সীমাবদ্ধ করুন sudoযাতে ব্যবহারকারী কেবল চালাতে পারে chmodএবং এর chownমধ্যে থেকে/var/www/html

  2. ব্যবহারকারীকে সিস্টেমে অন্য কোথাও এই কমান্ডগুলি কার্যকর করতে অস্বীকার করুন (উদাহরণস্বরূপ কমান্ডগুলি চালানো যায় না /var/wwwবা /var/ftp)


1
Crosspost না দয়া করে - superuser.com/questions/456662/...
উলরিখ Dangel

7
এটা কি সত্যিই সঠিক উপায়? একটি www-dataগ্রুপ chmod/ কীভাবে প্রয়োজনীয়তা দূর করবে chown?
sr_

কুল। এইভাবে আপনি রুট পেতে খুব সহজ। এটি দেওয়া খুব খারাপ ধারণা chown। তা ছাড়াও chmodরুট হিসাবে চালানোর কোনও কারণ আমি দেখতে পাচ্ছি না ।
নিলস

উত্তর:


13

আপনি যা জিজ্ঞাসা করছেন তা যদি অসম্ভব না হয় তবে তা কঠিন। এমনকি যদি আপনি কোনও নির্দিষ্ট ডিরেক্টরিতে ফাইলের প্রয়োগ chownএবং প্রয়োগকে সীমাবদ্ধ না করেন তবে chmodকেউ এখনও একটি প্রতীকী লিঙ্কটি পাস করতে পারে এবং তাই তারা যে কোনও জায়গায় ফাইলগুলিকে প্রভাবিত করতে পারে।

সৌভাগ্যক্রমে, সম্ভবত আপনি যা করতে চেষ্টা করছেন তা আপনার প্রকৃত সমস্যার সঠিক সমাধান নয়, এবং আরও একটি পদ্ধতি রয়েছে যা কার্যকর হয় highly

সাধারণত, ব্যবহারকারীদের অধীনে ফাইলগুলি তৈরি এবং সংশোধন করার জন্য অতিরিক্ত অনুমতি প্রয়োজন /var/wwwতাদের একটি দলে যোগ করা হয় (প্রায়শই www-data, অথবা আপনার সাইটের বিভিন্ন অংশের জন্য বিভিন্ন গ্রুপ থাকতে পারে)। আপনি গ্রুপের মালিকানা এবং সেটগিড ডিরেক্টরি ব্যবহার করতে পারেন: গ্রুপের chgrp www-data /var/www/html; chmod g+ws /var/www/htmlপ্রত্যেককে ডিরেক্টরিতে www-dataলেখার অনুমতি দেয় এবং সেই /var/www/htmlডিরেক্টরিতে তৈরি ফাইলগুলি ফাইল তৈরি করা www-dataব্যবহারকারীর প্রাথমিক গোষ্ঠীর পরিবর্তে গ্রুপের মালিকানাধীন থাকবে । তবে এটি খুব নমনীয় নয়।

আপনার সম্ভবত যা করা উচিত তা হ'ল নীচের ফাইলগুলির জন্য অ্যাক্সেস নিয়ন্ত্রণ তালিকা সেট আপ করা /var/www। প্রথমে নিশ্চিত হয়ে নিন যে এসিএলগুলি সক্ষম রয়েছে: যে ফাইল সিস্টেমটি /var/wwwচালু আছে তা অবশ্যই aclবিকল্পের সাথে মাউন্ট করা উচিত । এতে সহায়তার জন্য ডিরেক্টরিতে সমস্ত নতুন ফাইলকে একটি গোষ্ঠীতে অ্যাক্সেসযোগ্য করে দেখুন। এসিএল ইউটিলিটিগুলি ( getfaclএবং setfacl) ইনস্টল করুন । তারপরে গাছের নীচে /var/www/htmlযে ব্যবহারকারীদের থাকা উচিত তাদের অতিরিক্ত অনুমতি দিন । আপনি প্রতি ব্যবহারকারীর এসিএল সেট করতে পারেন, তবে ব্যবহারকারীদের একটি গ্রুপে ফাইল সিস্টেমের একটি অংশে একই অধিকার থাকা উচিত এবং সেই গোষ্ঠীর জন্য এসিএল সেট করা প্রায়শই সহজ। উদাহরণস্বরূপ, গ্রুপের ব্যবহারকারীদের যদি html-writersগাছের নীচে গাছটিতে পঠন-লেখার অ্যাক্সেস থাকতে পারে /var/www/html:

setfacl -d -m group:html-writers:rwx /var/www/html
setfacl -m group:html-writers:rwx /var/www/html

বিষয়ে "এই খুবই নমনীয় নয়" (অনুচ্ছেদ 3 শেষে) - কেন তাই না? এটি কি কারণ একটি নির্দিষ্ট গ্রুপে লোকদের থাকা দরকার? (অনুমতি এবং এসিএল এবং সম্পর্কিত বিষয়গুলি সম্পর্কে আমি খুব কমই জানি))
কাজম্যাগনাস

3
@ কাজম্যাগনাস এটি জটিল নয় কারণ রুটে গ্রুপগুলি পরিচালনা করতে হয় এবং ফাইলগুলি কেবল একটি গোষ্ঠীর অন্তর্ভুক্ত থাকতে পারে। এসিএল যে কোনও ব্যবহারকারীর নিজের ফাইলগুলি অ্যাক্সেস করতে পারে তা নির্বাচন করতে দেয় এবং একাধিক ব্যবহারকারী এবং গোষ্ঠী একটি এসিএলে উল্লেখ করা যায়।
গিলস 'অশুভ হওয়া বন্ধ করুন'

2

"Myuser" দ্বারা ব্যবহৃত /etc/sudoersকমান্ডটি ফাইলের সমস্ত আর্গুমেন্টের সাথে কমান্ড অ্যাডের সাহায্যে সীমাবদ্ধ করতে visudoপারেন:

## Allows myuser to chmod the html dir and chmod 755 the html2 dir
myuser  ALL=NOPASSWD:/bin/chmod [0-7][0-5][0-5] /var/www/html/*,/bin/chown myuser:mygroup /var/www/html/*,/bin/chmod 755 /var/www/html2/myapp/*.txt 

প্রতিটি ক্রিয়াকলাপের জন্য লগিং সক্ষম করুন:

Defaults logfile=/var/log/sudo.log

নমুনা আউটপুট:

[root@myhost /]# su - myuser
-sh-3.1$ sudo /bin/chmod 755 /var/www/html/index.html 
-sh-3.1$ sudo /bin/chmod 755 /var/www/html/*
-sh-3.1$ sudo /bin/chmod 777 /var/www/html2/myapp/*.txt
Sorry, user myuser is not allowed to execute '/bin/chmod 777 /var/www/html2/myapp/*.txt' as root on myhost.mydomain.
-sh-3.1$ sudo /bin/chmod 755 /var/www/html2/myapp/*.txt 
-sh-3.1$ 

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


আমি এর আগেও এটি চেষ্টা করেছি, তবে এটি ত্রুটিটি দিয়েছে: দুঃখিত, ব্যবহারকারী প্রশান্তকে prashant.xyz.com এর মূল হিসাবে '/ bin / chmod 777 / var / www / html / a' চালানোর অনুমতি নেই।
প্রশান্তব

আপনি ব্যবহারকারীর সাথে স্যুইচ করেছেন su - prashantনাকি su prashant?
টেম্বোলিনাক্স

হ্যাঁ আমি প্রশান্ত ব্যবহারকারী দ্বারা কমান্ড চালাচ্ছি am আমি ফোরামগুলি পড়ি, তারা বলে যে কমান্ডগুলি সিস্টেম-ওয়াইড চালিত। এ জাতীয় বিষয়টি নিয়ে কারও লেখা নেই।
প্রশান্তব

আমি এটিকে চালিয়েছি :)। তবে এটি স্ট্যাটিক কমান্ড হবে। আমরা কি এটি সাধারণ করে তুলতে পারি যাতে আমি / var / www / html এর অধীনে যে কোনও ফাইলে কোনও অনুমতি আবেদন করতে পারি?
প্রশান্তব

3
এটি সম্পূর্ণরূপে অনিরাপদ: sudo /bin/chmod 666 /var/www/html/../../../etc/passwdএবং যদি আপনি কোনওভাবে এটি স্থির করেন,ln -s /etc /var/www/html/foo/etc; sudo /bin/chmod 666 /var/www/html/foo/etc/passwd
গিলস'স-অশুভ হওয়া বন্ধ করুন '

1

এটি করার জন্য একটি মোটামুটি সহজ উপায় আছে, কোনও নির্দিষ্ট ফাইল বা ডিরেক্টরিতে পরিবর্তনগুলি সীমাবদ্ধ করার জন্য একটি বাশ (বা আপনার পছন্দসই শেল) স্ক্রিপ্ট তৈরি করে।

আপনার উদাহরণে এটি দেখতে এই রকম হবে:

$ vi /usr/local/bin/mychmod

#!/bin/bash

chmod 777 /var/www/index.html

তারপরে আপনি www-ডেটা / ইউএসআর / লোকাল / বিন / মাইচমডকে কার্যকর করার অনুমতি দেওয়ার জন্য sudoers ফাইলটি পরিবর্তন করবেন।

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


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