কীভাবে sudo ব্যবহারকারীদের নির্দিষ্ট কমান্ড চালানো থেকে বিরত রাখা যায়?


29

আমার একটি খুব সংবেদনশীল নেটওয়ার্ক সেটআপ আছে এবং আমি সত্যিই এটির সাথে গোলযোগ করতে চাই না। আমার নেটওয়ার্কটিতে এমন একাধিক ব্যবহারকারী রয়েছে যাঁরা সুডো সুবিধাযুক্ত।

আমি তাদের দৌড়ানো থেকে বিরত করতে চাই

service NetworkManager restart
service network restart

কমান্ড।

আমি কি এটি অর্জন করার কোন উপায় আছে?


আপনি কোন বিতরণ ব্যবহার করছেন? পরিষেবার নামগুলি ডিস্ট্রো সুনির্দিষ্ট এবং আমি আপনার কোনও নাম ব্যবহার করে এমন কোনও ডিস্ট্রো সম্পর্কে জানি না। মানে কি networkingআর network-manager? এছাড়াও, আপনার ব্যবহারকারীদের sudoঅ্যাক্সেস কেন ? আপনি না চাইলে তাদের উচিত নয় যে তারা সম্পূর্ণ মূল অধিকার পাবে।
টেরডন

@terdon আমি এটি সমাধান করেছি। ধন্যবাদ. আমি এটিকে উত্তর হিসাবে পোস্ট করতে পারি না কারণ আমি একজন নতুন ব্যবহারকারী
শেখর

হ্যাঁ আপনি করতে পারেন, দয়া করে। আপনি যে উত্তরটি পেয়েছেন তাও আমি জানতে চাই।
টেরডন

@ নিশ্চিত করুন তবে এর বক্তব্যটি আমার নিজের উত্তর পোস্ট করার জন্য 8 ঘন্টা অপেক্ষা করতে হবে কারণ আমার 10 টি
সুনামও নেই

1
আহ, হ্যাঁ, দুঃখিত, আপনার অবশ্যই অপেক্ষা করা দরকার। আমি সবেমাত্র upvated, আপনি এখন এই প্রতিনিধি আছে :)
টেরডন

উত্তর:


47

CmndAlias ​​ব্যবহার করা ALLকখনই নিরাপদ হবে না

সেখানে চালানোর জন্য 1000 উপায় আছে service network restartনা করে sudo service network restart। দুষ্টু ব্যবহারকারী কীভাবে চেষ্টা করতে পারে তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

$ echo "service network restart" > /tmp/hax
$ chmod a+x /tmp/hax
$ sudo /tmp/hax

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

আপনি কি সত্যিই কেউ কিছু করতে না চান তাহলে, আপনি টমাস বলেন হিসেবে, এবং তারা একটি পরিচ্ছন্ন তালিকা তৈরি করা উচিত হয় না অনুমোদিত।


একটি ব্যতিক্রম সহ একটি শ্বেতলিস্ট সেট আপ

একটি বর্জন সহ একটি ছোট শ্বেতলিস্টের উদাহরণ নীচের অংশে পাওয়া যাবে man sudoers:

 pete           HPPA = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

The user pete is allowed to change anyone's password except for root on the HPPA
machines.  Note that this assumes passwd(1) does not take multiple user names
on the command line.

(আসলে ম্যানপেজটি থেকে এই উদাহরণটি অনিরাপদ এবং মূলের পাসওয়ার্ড পরিবর্তন করতে এটি ব্যবহার করা যেতে পারে! কীভাবে নীচের মন্তব্য দেখুন))

serviceস্টাফ গ্রুপকে সমস্ত কমান্ড দেওয়ার জন্য আমরা আপনার ক্ষেত্রে এটি খাপ খাইয়ে নিতে চেষ্টা করতে পারি , তবে আপনাকে যে আদেশগুলি উদ্বিগ্ন তা বাদ দিন service network:

%staff ALL =   /usr/sbin/service *,                            \
             ! /usr/sbin/service *network*,                    \
             ! /usr/sbin/service *NetworkManager*

( ALLসেই অবস্থানটি হোস্ট_আলিয়াসকে বোঝায়, সিমেন্ড_আলিয়াস নয় - বিভ্রান্তিকর তাই না?)

ব্যবহারকারী চালানোর জন্য সক্ষম হবেন না sudo bashবা sudo teeবা sudo wgetবা sudo /path/to/malicious_script। আপনি যদি সাবধান হন তবে আপনার ব্যবহারকারীদের জন্য আরও প্রশাসক কমান্ড শ্বেত তালিকাতে রাখতে পারেন। শুধু নির্দিষ্ট করা!

দ্রষ্টব্য: আমি উপরের *শব্দের আগে যুক্ত করেছি network, কেবলমাত্র serviceভবিষ্যতে যদি কোনও ক্ষতিকারক পতাকা যোগ করা হয় । আসুন কল্পনা করুন যে --verboseভবিষ্যতে একটি পতাকা যুক্ত করা হয়েছে, তারপরে ব্যবহারকারীরা নিম্নলিখিতগুলি চালাতে সক্ষম হবেন:

$ sudo service --verbose network restart

সুতরাং আমাদের *পরিষেবার নামের আগে কোনও পতাকা গ্রাস করতে হবে। এর একটি অসুবিধা হ'ল এটি অন্যান্য পরিষেবাগুলিকে অবরুদ্ধ করতে পারে যা আপনি ব্যবহারকারীদের চলমান মনে করেন না, যেমন একটি পরিষেবা বলা হয় safe-networkবা network-monitorপ্রত্যাখ্যানও করা হয়।


ব্যবহারকারীদের গ্রুপ অনুমতি ব্যবহার করে একটি ফাইল সম্পাদনা করতে দিন

নীচে আপনার ব্যবহার করা বিভিন্ন প্রচেষ্টা জানতে পারেন rnanoমাধ্যমে sudoএকটি ফাইল বা ফাইল দিন ব্যবহারকারীদের সম্পাদনা করুন। তবে প্রকৃতপক্ষে এগুলি তাদের চেয়ে জটিল ও বিপজ্জনক।

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

### Give steve the ability to edit his nginx config:
$ chgrp steve /etc/nginx/sites-available/steves_dodgy_project
$ chmod g+rw /etc/nginx/sites-available/steves_dodgy_project

### Let all members of the staff group edit the group_website config:
$ chgrp staff /etc/nginx/sites-available/group_website
$ chmod g+rw /etc/nginx/sites-available/group_website

আপনার যদি আরও সূক্ষ্ম নিয়ন্ত্রণের প্রয়োজন হয় (উদাহরণস্বরূপ: মাত্র 3 ব্যবহারকারীর জন্য অ্যাক্সেস, তবে সমস্ত স্টাফ সদস্য নয়) আপনি addgroupকমান্ডটি ব্যবহার করে একটি নতুন গোষ্ঠী তৈরি করতে পারেন এবং এতে কয়েকজন ব্যবহারকারী যুক্ত করতে পারেন।


ব্যবহারকারীদের মাধ্যমে একটি ফাইল সম্পাদনা করুন sudo

এই উত্তরটির বাকী sudoঅংশগুলি আপনার ব্যবহারকারীদের নমনীয়তার প্রস্তাব দেওয়ার সময় আপনার কনফিগারেশনের গর্তগুলি ছেড়ে দেওয়া কত সহজ তা তদন্তে পরিণত হয়েছিল । আমি নিম্নলিখিত কোনও কাজ করার পরামর্শ দেব না!

আপনি যদি একটি নির্দিষ্ট ফাইল সম্পাদনা করতে আপনার ব্যবহারকারীদের অ্যাক্সেস দিতে চান তবে আপনি এটি ব্যবহার করে দেখতে পারেন rnano:

%staff ALL = /bin/rnano /etc/nginx/sites-available/host

rnanoকেবলমাত্র তাদের নির্দিষ্ট করা ফাইল সম্পাদনা করতে দেবে। এটি কোনও দূষিত ব্যবহারকারীকে আলাদা আলাদা আপস্টার্ট পরিষেবা (উদাহরণস্বরূপ /etc/init.d/urandom) সম্পাদনা করা থেকে বিরত রাখা এবং এটিতে একটি লাইন যুক্ত করা যা গুরুত্বপূর্ণ service network restart

দুর্ভাগ্যক্রমে আমি rvimপর্যাপ্ত পরিমাণে সীমাবদ্ধ করার কোনও উপায় পাইনি (ব্যবহারকারী এখনও ব্যবহার করে যে কোনও ফাইল খুলতে পারে :e), তাই আমরা আটকে আছি nano

দুর্ভাগ্যক্রমে ব্যবহারকারীদের একাধিক ফাইল সম্পাদনা করার অনুমতি দেওয়া আরও শক্ত ...


ব্যবহারকারীদের একাধিক ফাইল সম্পাদনা করতে দিন (তার চেয়ে আরও বেশি জটিল উপায়)

1. অনিরাপদ পন্থা

ওয়াইল্ডকার্ড সম্পর্কে সাবধান! আপনি যদি খুব বেশি নমনীয়তা (বা কোনও নমনীয়তা) সরবরাহ করেন তবে এটি শোষণ করা যেতে পারে:

%staff ALL = /bin/rnano /etc/nginx/sites-available/*                # UNSAFE!

এই ক্ষেত্রে, একটি দূষিত ব্যবহারকারী অন্য যে কোনও আপস্টার্ট পরিষেবা স্ক্রিপ্ট সম্পাদনা করতে সক্ষম হবে এবং তারপরে এটি চালাতে সক্ষম হবে:

$ sudo rnano /etc/nginx/sites-available/../../../any/file/on/the/system

(সুডো আসলে কমান্ডটি আটকাতে .এবং ..প্রসারিত করতে পারে , তবে দুর্ভাগ্যক্রমে যুক্তিগুলিতে নয়))

আমি আশা করছিলাম যে এটির মতো কিছু কার্যকর হতে পারে তবে এটি এখনও নিরাপদ নয়:

%staff ALL = /bin/rnano /etc/nginx/sites-available/[A-Za-z0-9_-]*   # UNSAFE!

যেহেতু sudoবর্তমানে কেবল গ্লোব নিদর্শন সরবরাহ করা হয়েছে, এটি *কোনও কিছুর সাথে মিলবে - এটি কোনও রেজিপ্সপ নয়!

(সম্পাদনা: আমি বিবেচনা করে দেখেছেন যদি আপনি পারে আপনার অবস্থা উপরে দিয়ে পার পেতে, কারণ সেখানে তলদেশে কোন উপ-ফোল্ডার আছে sites-available। আমরা হয়নি চাহিদা এক গৃহস্থালির কাজ ফোল্ডারের পর মিলেছে করা, এবং /..। একটি ফাইলের নাম পরে ব্যর্থ উচিত তবে এই নয় হয় কার্যকর সমাধান, কারণ rnanoসাধারণভাবে যাহাই হউক না কেন একাধিক আর্গুমেন্ট। আর গ্রহণ এই এখনও হবে অনিরাপদ একটি ফোল্ডার যা সাবফোল্ডার ছিল উপর!)

আমাদের কোনও সাবফোল্ডার না থাকলেও এবং আমরা যে কোনও লাইন যুক্ত করে তা বাদ দিই /../, *তবুও গ্লোব সরবরাহকারী নিয়মটি কাজে লাগানো যেতে পারে, কারণ rnanoএকাধিক যুক্তি গ্রহণ করে (তাদের মাধ্যমে সাইকেল চালানো <C-X>, এবং স্থানটি *সুখের সাথে বিশ্বজুড়ে গ্রহণ করা হয়েছে) ।

$ rnano /etc/nginx/sites-available/legal_file /then/any/file/on/the/system

2. খামে পুশ করা (চূড়ান্তভাবে অনিরাপদও)

সুতরাং যদি আমরা কোনও ফাঁকা স্থান যুক্ত লাইন প্রত্যাখ্যান করি বা পৌঁছানোর চেষ্টা করছি /..? তারপরে একটি চূড়ান্ত কার্যক্ষম সমাধান হতে পারে:

# I tried hard to make this safe, but in the end I failed again.
# Please don't use this unless you are really smart or really stupid.

%staff ALL =   /bin/rnano /etc/nginx/sites-available/*,    \
             ! /bin/rnano */..*,                           \
             ! /bin/rnano /etc/nginx/sites-available/,     \
             ! /bin/rnano */.,                             \
             ! /bin/rnano * *

# CONCLUSION: It is still NOT SAFE if there are any subfolders, due to
# the bug in rnano described below.

আমরা "অধীনে" ফোল্ডারে কিছু গ্রহণ কিন্তু আমরা কোনো কল প্রত্যাখ্যান rnanoযদি /..বা /.বা গৃহীত হয়, অথবা ফোল্ডার সরাসরি লক্ষ্যবস্তু হয়। (প্রযুক্তিগতভাবে /.বাদ দেওয়া /..ব্যতিক্রমকে অপ্রয়োজনীয় করে তোলে তবে আমি উভয়কেই স্পষ্টতার জন্য রেখে দিয়েছি))

আমি ফোল্ডারটি খুঁজে পেয়েছি এবং /.ব্যতিক্রমগুলি প্রয়োজনীয় ছিল কারণ অন্যথায় ব্যবহারকারী ফোল্ডারটিকেই টার্গেট করতে পারে। এখন আপনি ভাবেন rnanoযে কোনও ফোল্ডারে দেখানো হলে অবরুদ্ধ হবে তবে আপনি ভুল হবেন। আসলে আমার সংস্করণ (2.2.6-1ubuntu1) একটি হালকা সতর্কতা এবং একটি খালি ফাইল দিয়ে শুরু হবে, তারপরে <C-X>আমাকে নতুন আক্রমণকারীর ভেক্টর খোলার জন্য, যে ফাইল ফাইলটি সংরক্ষণ করতে চান তাতে ইনপুট করতে বলে ! ভাল কমপক্ষে এটি একটি বিদ্যমান ফাইল ওভাররাইট করতে অস্বীকার করেছিল (আমার এক পরীক্ষায়)। যাইহোক, যেহেতু সুডো সহ সাবফোল্ডারগুলিকে কালো তালিকাভুক্ত করার কোনও উপায় নেই, তাই আমাদের অবশ্যই সিদ্ধান্তে পৌঁছাতে হবে যে এই পদ্ধতিটি আবারও নিরাপদ নয়। দুঃখিত ব্যবহারকারীরা!

এই আবিষ্কারটি আমাকে nano"সীমাবদ্ধ" মোডের পুরোপুরি সন্দেহ করতে বাধ্য করেছে। তারা বলে যে একটি চেইন কেবল তার দুর্বলতম লিঙ্কের মতোই শক্ত। আমি sudoব্ল্যাকলিস্ট ব্ল্যাক-ম্যাজিকের সংমিশ্রণ অনুভব করতে শুরু করেছি rnanoএবং ডেইজিদের শৃঙ্খলার চেয়ে আর নিরাপদ নাও হতে পারি।

৩. নিরাপদ তবে সীমিত পন্থা

গ্লোবগুলি খুব সীমাবদ্ধ - তারা আমাদের একাধিকবার একটি অক্ষর শ্রেণীর সাথে মেলে না। আপনি পারে একাধিক ফাইল সম্পাদনাগুলি প্রস্তাব, আপনার সব ফাইলের নামের একই দৈর্ঘ্য আছে যদি (এই ক্ষেত্রে hostএকটি একক অঙ্ক দ্বারা অনুসরণ):

%staff ALL = /bin/rnano /etc/nginx/sites-available/host[0-9]       # SAFE

তবে আপনি যদি ব্যবহারকারীকে বিভিন্ন ফাইল সম্পাদনা করতে অ্যাক্সেস দিতে চান তবে আপনার প্রতিটি ফাইলের স্পষ্ট করে উল্লেখ করতে হবে:

%staff ALL = /bin/rnano /etc/nginx/sites-available/hothost    \
             /bin/rnano /etc/nginx/sites-available/coldhost   \    # SAFE
             /bin/rnano /etc/nginx/sites-available/wethost    \
             /bin/rnano /etc/nginx/sites-available/steves_dodgy_project

*কোনও বিন্দুতেএকটি ব্যবহার করার প্রলোভন করবেন না । উপরের বিভাগ 1 এবং 2 দেখুন কেন! মনে রাখবেন: একটি ছোট স্লিপ পুরো সুপারুজার অ্যাকাউন্ট এবং পুরো সিস্টেমের সাথে আপস করতে পারে।

4. আপনার নিজের যুক্তি পরীক্ষক লিখুন (সুরক্ষা এখন আপনার দায়িত্ব)

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

কিন্তু সুডোতে নমনীয়তা তৈরি করার একটি বিকল্প রয়েছে। বক পাস:

%staff ALL = /root/bin/staffedit *

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


5
এই উত্তরটি দীর্ঘ সময় নিয়েছে, তবে শেষ পর্যন্ত আমার মনে হয় আমি বুঝতে পারি যে সুডো কীভাবে কাজ করে। আমি অতীতে বিভিন্ন অনুষ্ঠানে ছেড়ে দিয়েছিলাম, ALL=(ALL:ALL) ALLশব্দার্থবিজ্ঞানের খুব অভাব খুঁজে পেয়েছি, তবে আমি সবসময় ধরে নিয়েছিলাম যে এটি কোথাও একটি শালীন যুক্তি পরীক্ষক হবে ... আমি ভুল ছিলাম। এটা সত্যিই খুব সীমাবদ্ধ। এমনকি ম্যান-পৃষ্ঠাতে প্রদত্ত পাসডাব্লুড রুট বর্জনকে একটি সাধারণ কমান্ড-লাইন আর্গুমেন্ট দিয়ে ভেঙে ফেলা যায় sudo passwd -q root। ভাল সুডো লেখকরা তাদের ওয়েবসাইটে [কিছু বিকল্প] [sudo.ws/sudo/other.html) তালিকাবদ্ধ করে। আমি আশা করি তারা ভবিষ্যতে রিজেক্সপ সমর্থন যোগ করবে।
জোয়েটউইডল

আপনি কি এখানে বিশেষভাবে rnanoআপনার বর্ণনায় ব্যবহার করেন কারণ এটি ন্যানোর এমন একটি সংস্করণ যা 'হিসাবে সংরক্ষণ করুন' ফাংশনের অভাব রয়েছে? আমি প্রোগ্রামের সাথে পরিচিত নই।
শাদুর

হ্যাঁ। যদি আমরা সুরক্ষা সম্পর্কে চিন্তা করি তবে সম্পাদককে কেবলমাত্র একটি নির্দিষ্ট ফাইলটি সম্পাদনা করতে হবে এবং শেলটি খুলতে সক্ষম হবে না। তথ্যের জন্য, $ man nanoতারপর/-R<Enter>
জোয়েটউইডল

কারেকশন: পিট উদাহরণ ভঙ্গ করার জন্য, -qপরে আসতে হবে: sudo passwd root -q। পিট উদাহরণটি বাদ দিয়ে শক্ত করা যেতে পারে *root*
জোয়েটউইল

এর sudoeditসাথে নিরাপদে ফাইল পরিবর্তন সক্ষম করার জন্য বিবেচনা করুন sudo
টোটার

5

প্রথমে sudoers ফাইলটি খুলুন sudo visudouser ALL=!/usr/sbin/serviceআইআইআরসি, উইল যুক্ত করা serviceব্যবহারকারীর জন্য আদেশটি বাতিল করে user

সূত্র: http://nixraft.com/showthread.php/15132- সুডো- এক্সক্লুড- কম্যান্ডস- এবং- অক্ষম- সুডো- সু-বাশ- শেল


এটি অন্যান্য পরিষেবাগুলিও চালানো বন্ধ করবে এবং আমি এটি চাই না। উত্তর করার জন্য ধন্যবাদ. :)
শেখর

যদিও আপনার উত্তরটি আমাকে ঠিক সহায়তা করেনি তবে এটি সমাধান সমাধানে সহায়তা করেছে আপনাকে ধন্যবাদ। তবে আপনি জানেন আপনি উত্সাহ দিতে বা আমার কার্যকরী উত্তর পোস্ট করতে আমার যথেষ্ট খ্যাতি নেই। আমি একবার হলে অবশ্যই আমার ধন্যবাদ জানাব। ধন্যবাদ.
শেখর

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

3
হোয়াইটলিস্টগুলি অনেক পরিস্থিতিতে দৃma় হয়। আসল লক্ষ্য তাদের কিছু করা থেকে বিরত রাখা নয়, বরং অন্যথায় বাধা না দিয়ে ভুল করে খারাপ কিছু করা থেকে বিরত রাখা। এই ক্ষেত্রে ব্ল্যাকলিস্টগুলি ভাল। কোনও যুক্তিসঙ্গত ব্যবহারকারী টাস্ক সম্পর্কে যেভাবে যেতে পারে সেগুলি আপনি কালো তালিকাভুক্ত করুন। তবে সুডোর মাধ্যমে ব্ল্যাকলিস্টিং যথেষ্ট না - লোকেরা 'সুডো বাশ' ব্যবহার করতে এবং করতে পারে। একটি পদ্ধতি হ'ল 'পরিষেবা' কমান্ডটি মোড়ানো হবে এবং যে ক্ষেত্রে আপনি তাদের ব্যবহার করতে চান না, তাদের অবহিত করুন। তবে আপনি কখনই কোনও ভাল শ্বেতলিস্টে বা সমস্ত খারাপ ক্রিয়াকলাপকে কোনও সাদা তালিকাতে তালিকাভুক্ত করবেন না।
বব কার্নস

1
আমি তোমার সাথে একমত বব। সম্পূর্ণ অ্যাক্সেসের অনুমতি না দিয়ে নমনীয়তার মঞ্জুরি দেওয়ার জন্য আপনাকে প্রায়শই একটি সহায়ক স্ক্রিপ্ট হিসাবে নিজের সমাধানটি রোল করতে হবে এবং কেবলমাত্র সেই স্ক্রিপ্টটিকেই সাদা তালিকাভুক্ত করতে হবে। সুডো হোয়াইটলিস্টগুলি আপনার যা প্রয়োজন তা করতে পারে তবে প্রায়শই এগুলি হয় খুব সীমাবদ্ধ বা শোষণ করা খুব সহজ।
জোয়েটউইডল

5

আমি সমাধান খুঁজে পেয়েছি।

আমি টার্মিনালটি খুললাম এবং su -তারপরে আমি visudoসম্পাদনা করতে টাইপ করেছি এর সাথে রুট ব্যবহারকারীতে পরিবর্তন করেছি ।

তারপরে শেষে আমি লাইকগুলি লিখেছি

user ALL=!/etc/init.d/NetworkManager restart
user ALL=!/etc/init.d/network restart

তারপরে আমি সংরক্ষণ ও বন্ধ করে আবারও শুরু করে দিয়েছি।

এখন যদি আমি টাইপ করছি service network restartবা service NetworkManager restartতারপরে এটি আমাকে অনুমতি দেয় না এবং ত্রুটি দেয় না

Sorry user is not allowed to execute '/sbin/service NetowkrManager restart' as root on localhost.localdomain

এবং একইভাবে service network restartকমান্ডের জন্য।


12
এটি অনভিজ্ঞ এবং অবিস্মরণীয় ব্যবহারকারীদের জন্য কাজ করবে তবে sudo বিধিনিষেধগুলি রোধ করা সহজ, (যেমন sudo cp -p /etc/init.d/network /etc/init.d/network-not-in-sudoএবং তারপরে sudo /etc/init.d/network-not-in-sudo restart)। এই কারণেই sudoers ফাইলে বাদ দেওয়ার পরিবর্তে অন্তর্ভুক্তি তৈরি করা আরও নিরাপদ, উদাহরণস্বরূপ তাদের পরিষেবাগুলির সাথে ইন্টারেক্ট করার অনুমতি রয়েছে তা উল্লেখ করুন।
টমাস

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

যদি সেলইনাক্সের সাথে এটি সম্ভব হয় তবে এটি আরও খুশি হবে। আপনাকে ধন্যবাদ আমি সেভাবে চেষ্টা করব।
শেখর

3

এর আসল উত্তর হ'ল আপনি এটিকে সত্যই আটকাতে পারবেন না। আপনি অন্য উত্তরগুলিতে বর্ণিত পদ্ধতিগুলির মাধ্যমে দুর্ঘটনাক্রমে এই কমান্ডটি চালানো থেকে কোনও অবাস্তব কাউকে আটকাতে পারেন তবে কেউ যদি সত্যিই এটি চালাতে চায় এবং sudoers তালিকায় থাকে তবে তারা এটি চালাতে পারে। উদাহরণস্বরূপ, তারা নিম্নলিখিতগুলি করতে পারে:

joe@box:~$ sudo bash root@box:~# service network restart

অথবা sudoers ফাইলে আপনার নিষেধাজ্ঞাগুলি রোধ করতে তারা ব্যবহার করতে পারে এমন অন্য মজাদার আদেশ:

sudo visudo

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


হ্যাঁ। যে কমান্ডগুলি ভিতরে থেকে শেল স্পোন করতে পারে সেগুলি এড়ানো উচিত।
বনসী স্কট

1
সমস্যাটি হ'ল এটি যে কমান্ডগুলি আপনি সুরক্ষিত করতে চান তা নয়, তবে কার্নেল অবজেক্টের অবস্থা যেমন রাউটিং টেবিল, ইন্টারফেস ইত্যাদি what কোন আদেশ (বা সিস্টেম কল) ব্যবহৃত হয় তা বিবেচনাধীন নয়। এবং আপনি এটিকে কিছু থেকে রক্ষা করতে চান তবে সমস্তই মূল ব্যবহারকারী নয়। SELinux এই ধরণের দৃশ্যের চারপাশে ডিজাইন করা হয়েছে। তবে প্রথমে, আমি কেন এই সমস্ত ব্যবহারকারীদের সুডো অ্যাক্সেস রয়েছে তার একটি পর্যালোচনা দিয়ে শুরু করব। তাদের যদি কেবল কয়েকটি নির্দিষ্ট জিনিস করার দরকার হয় তবে sudoers এ হোয়াইটলিস্টিং অপারেশনগুলি আপনার প্রয়োজন হতে পারে।
বব কার্নস

2

স্যান্ডবক্স সহ ব্যবহারকারীদের সীমাবদ্ধ করতে ফায়ার জেল ব্যবহার করুন।

https://github.com/netblue30/firejail/

আপনি সীমাবদ্ধ রাখতে চান এমন প্রতিটি ব্যবহারকারীর জন্য / ইত্যাদি / পাসডাব্লুডে বাশের পরিবর্তে শেল হিসাবে ফায়ারজেল সেট করুন। এটি ব্যবহার করা খুব সহজ এবং একটি ভাল ডকুমেন্টেশন রয়েছে।

উদাহরণ:

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