কীভাবে নন-সুপারউসারদের কোনও ফাইল সিস্টেম মাউন্ট করার অনুমতি দেওয়া যায়?


47

কিছু নির্দিষ্ট ব্যবহারকারীকে (যেমন কোনও গ্রুপের সদস্য) লিনাক্সে সুপারসারের সুবিধা ছাড়াই কোনও ফাইলসस्टम মাউন্ট করার অনুমতি দেওয়া কি সম্ভব ?

আরেকটি প্রশ্ন হতে পারে "কোন পদ্ধতিতে ফাইল সিস্টেমগুলি মাউন্ট করে কোনও সিস্টেম কোনও ক্ষতি করতে পারে?"


হতে পারেgvfs-mount-d /dev/sdX
ক্রিসওয়েডদেভ

উত্তর:


44

একটি দম্পতি আছে, তাদের বেশিরভাগ বেশিরভাগ সুরক্ষিত, অন্যেরা একেবারেই নয়।

অনিরাপদ উপায়

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

বিকল্পভাবে, কোনও ব্যবহারকারী তার নিজস্ব ফাইললিপি উপরে বা /etcতার নিজের অনুলিপি সহ তার নিজের ফাইল সিস্টেমটি মাউন্ট করতে পারে /etc/shadowঅথবা /etc/sudoersতারপরে suঅথবা এর সাথে রুট পেতে পারে sudo। অথবা সম্ভবত mount --bindএই দুটি ফাইলের মধ্যে একটির উপর বাইন্ড-মাউন্ট ( ) অথবা একটি নতুন ফাইল /etc/sudoers.d

অনুরূপ আক্রমণগুলি আরও /etc/pam.dঅনেক জায়গায় ছড়িয়ে দেওয়া যেতে পারে ।

মনে রাখবেন যে ফাইল সিস্টেমগুলি এমনকি কোনও ডিভাইসে থাকা প্রয়োজন নয়, এমন -o loopকোনও ফাইল মাউন্ট করবে যা ব্যবহারকারীর মালিকানাধীন (এবং এইরকম পরিবর্তনযোগ্য)।

বেশিরভাগ সুরক্ষিত উপায়: উদিস্কস বা অনুরূপ

ব্যবহারকারীদের অপসারণযোগ্য মিডিয়াটি মাউন্ট করার জন্য বিভিন্ন ডেস্কটপ পরিবেশ ইতিমধ্যে এটির সমাধান তৈরি করেছে। তারা /mediaকেবল একটি সাব-ডিরেক্টরিতে মাউন্ট করে এবং কার্নেল বিকল্পের মাধ্যমে সেট-ব্যবহারকারী / গ্রুপ-আইডি সমর্থন বন্ধ করে কাজ করে । এখানে বিকল্প অন্তর্ভুক্ত udisks, udisks2, pmount, usbmount,

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

#!/bin/bash
if [ $UID -ne 0 ]; then       # or `id -u`
    exec sudo -- "$0" "$@"
fi

# rest of script goes here 

একদিন নিরাপদে থাকবে: ব্যবহারকারীর নাম স্থান

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

আরও অনেকগুলি ডিস্ট্রো কার্নেল (সুরক্ষার কারণে) অবাঞ্ছিত ব্যবহারকারীদের ব্যবহারকারীর নাম স্থান ব্যবহার না করার জন্য ডিফল্ট হয়েছে; উদাহরণস্বরূপ ডেবিয়ান রয়েছে kernel.unprivileged_userns_cloneযে ডিফল্টে 0. অন্য ডিস্ট্রো অনুরূপ সেটিংস রয়েছে, যদিও প্রায়ই কিছুটা ভিন্ন নামের সাথে।

ব্যবহারকারীর নেমস্পেসগুলি সম্পর্কে আমার সবচেয়ে ভাল ডকুমেন্টেশনটি হ'ল একটি এলডাব্লুএন নিবন্ধটি অপারেশনে নেমস্পেসগুলি, অংশ 5: ব্যবহারকারীর নাম স্থান

আপাতত আমি udisks2 নিয়ে যাব।


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

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

আপনার প্রতিটি "অনেকগুলি পার্টিশন সহ অনেকগুলি অপসারণযোগ্য ড্রাইভ" থেকে অন্য উত্তর সম্পর্কে মন্তব্য করে @gkya, আমি অনুমান করি যে আপনি "উদাস বা অনুরূপ" পদ্ধতির চান।
ডারোবার্ট

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

1
@ মালান ঠিক আছে, আমি এটি আপডেট করেছি। যদি কিছু থাকে তবে আমি মনে করি এটির জন্য ব্যবহারকারীর নেমস্পেসগুলি ব্যবহার করা ভবিষ্যতে আরও বেশি হবে।
ডারোবার্ট

16

আপনি এটি করতে পারেন, তবে আপনি /etc/fstabযে ফাইল সিস্টেমটি মাউন্ট করতে চান তার সাথে মিল রেখে আপনাকে এন্ট্রিটি পরিবর্তন করতে হবে, userএই এন্ট্রিতে পতাকা যুক্ত করে । অ-সুযোগ-সুবিধার ব্যবহারকারীরা তখন এটি মাউন্ট করতে সক্ষম হবেন।

দেখুন man mountআরো বিস্তারিত জানার জন্য।


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

কুরুচিপূর্ণ কাজটি udevনতুন ডিভাইসগুলির উপস্থিতি এবং অদৃশ্য হওয়ার সাথে সাথে এন্ট্রিগুলি পরিচালনা করতে দেওয়া হতে পারে ।
জেসেটার

আমি এটি পুদিনা বা উবুন্টুতে কাজ করতে পাই না। হ্যাঁ, ডিফল্ট ব্যবহারকারীর অ্যাকাউন্টটি রুট ছাড়াই মাউন্ট করতে পারে তবে 'স্ট্যান্ডার্ড' / 'ডেস্কটপ' ব্যবহারকারীরা এটি মাউন্ট করতে পারবেন না।
জোনি কেন

6

এখানে কনফিগার করার জন্য উইকি হয় polkit জন্য নিয়ম udisks / udisks2 অনুক্রমে অ root- র দ্বারা পার্টিশন (যেমন ব্যবহারকারী) গ্রুপ মাউন্ট করতে।

নীচের কোডটি /etc/polkit-1/rules.d/50-udisks.rules এ সংরক্ষণ করুন

polkit.addRule(function(action, subject) {
  var YES = polkit.Result.YES;
  var permission = {
    // only required for udisks1:
    "org.freedesktop.udisks.filesystem-mount": YES,
    "org.freedesktop.udisks.filesystem-mount-system-internal": YES,
    "org.freedesktop.udisks.luks-unlock": YES,
    "org.freedesktop.udisks.drive-eject": YES,
    "org.freedesktop.udisks.drive-detach": YES,
    // only required for udisks2:
    "org.freedesktop.udisks2.filesystem-mount": YES,
    "org.freedesktop.udisks2.filesystem-mount-system": YES,
    "org.freedesktop.udisks2.encrypted-unlock": YES,
    "org.freedesktop.udisks2.eject-media": YES,
    "org.freedesktop.udisks2.power-off-drive": YES,
    // required for udisks2 if using udiskie from another seat (e.g. systemd):
    "org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
    "org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
    "org.freedesktop.udisks2.eject-media-other-seat": YES,
    "org.freedesktop.udisks2.power-off-drive-other-seat": YES
  };
  if (subject.isInGroup("users")) {
    return permission[action.id];
  }
});

ধরে নিন যে আপনি "ব্যবহারকারী" গ্রুপে রয়েছেন, পার্টিশন মাউন্ট করতে নিম্নলিখিত কমান্ডটি ব্যবহার করছেন (কোনও দরকার নেই sudo)।

# udisks2
udisksctl mount --block-device /dev/sda1

# udisks
udisks --mount /dev/sda1

2
যাওয়ার পথে মনে হচ্ছে তবে আমার কাজ হয়নি।
স্টাফেন গৌরিচন

5

1 এটি কোথায় কাজ করে দেখুন

এক্সুয়ান্টুতে এটি ইউএসবি ভর স্টোরেজ, হার্ড ডিস্ক পার্টিশন, সিডি / ডিভিডি এবং সম্ভবত আরও কিছু নির্ধারণ করতে বক্সের বাইরে কাজ করে।

আসুন ধরে নেওয়া যাক যে পলিসিকিট ব্যবহার করে উবুন্টু যে সমাধানটি বেছে নিয়েছেন তা যথেষ্ট সুরক্ষিত।

2 প্রাসঙ্গিক অংশ চয়ন করুন

ডিবিয়ান ৮.৩ এ এক্সএফসিইতে আমার ব্যবহারকারীকে পাসওয়ার্ড ছাড়াই থুনার থেকে ফাইল সিস্টেমগুলি মাউন্ট করতে এবং বের করার অনুমতি দেওয়া দরকার। আমার জন্য যা কাজ করেছে তা হ'ল উবুন্টু থেকে অনুমতি ফাইল চেরি-বাছাই করা।

নামের ফাইলটিতে নীচের লাইনগুলি যুক্ত হিসাবে যুক্ত করা /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pklaউচিত:

[Mounting, checking, etc. of internal drives]
Identity=unix-group:admin;unix-group:sudo
Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;
ResultActive=yes

3 লাভ!

(আমি যা করেছি তা হ'ল উবুন্টু ১ name.০৪-তে একই নামের ফাইলটি থেকে আরও কিছুটা বাছাই করা হয়েছিল এবং এটি আমার পক্ষে কাজ করেছে you আপনার যদি এটির প্রয়োজন হয় তবে এটি বেশিরভাগ https://gist.github.com/kafene/5b4aa4ebbd9229fa2e73 এর সামগ্রীর মতো লাগে )


এটি কেবল সিস্টেমের মতো ডেবিয়ানে কাজ করে, কেন জানি না / কেন / ইত্যাদি / বিধি প্রয়োগ করা কার্যকর হয়নি।
আনোয়ার

ডেবিয়ান প্রসারিত উপর কাজ করে না।
ফিলিপ লুডভিগ

1
এক্সএফসিই-তে ডেবিয়ান বাস্টার-এ কাজ করে! ধন্যবাদ!
ম্যাক্সওয়েল লাইট

3

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

আপডেট : আপনি কিভাবে মাউন্ট দ্বারা একটি সিস্টেম ক্ষতি করতে পারেন? উদাহরণস্বরূপ, আপনি একটি ফাইল সিস্টেমে একটি সেটুইড রুট শেল তৈরি করতে পারেন যা পরে আপনি রুট সুবিধাগুলি পেতে মাউন্ট এবং এক্সিকিউট করতে পারেন।


আমি এটি ভেবে দেখেছি, তবে এর জন্য কি ব্যবহারকারীর সাথে কমান্ডটি চালানো দরকার হবে না sudo? এছাড়াও, এই পদ্ধতিটি দিয়ে, কেবল পর্দার আড়ালে, ফাইল সিস্টেমটি মাউন্ট করা মূল ব্যবহারকারী নয়?

হ্যাঁ, তাদের সুডোর প্রয়োজন হবে এবং হ্যাঁ এটি রুটের নামে চলবে। প্রথম সমস্যাটি সমাধান করার জন্য, আপনি একটি র‌্যাপার স্ক্রিপ্টের mountজন্য উপনাম sudo mountবা ব্যবহার করতে পারেন।
জেসেটার

আমি যা চাই তা হ'ল রুট ব্যবহারকারীর এজেন্সি ছাড়াই ফাইল সিস্টেম মাউন্ট করা। এই এজেন্সিটিকে কোনও কিছুর মুখোশ দেওয়া মোটেও তা নয় I'm

মনে রাখবেন এমনকি userfstab এ যুক্ত করা কেবলমাত্র কাজ করে কারণ mountনির্ধারিত মূল। কার্নেলটি রুট বা CAP_SYS_ADMINসক্ষমতার জন্য যাচাই করে নিচ্ছে যাতে আপনি মূলের সাথে জড়িত না।
জেসেস্টার

আপনি কনফিগার করতে পারেন, কিভাবে? এই সাহায্য করে না।
নুজোলিলো

0

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

অন্যান্য 2 টি প্রশ্নের সংক্ষিপ্তসার আমি এটি বলব:

  • fstabএ মাউন্ট জন্য মহান বুট সময় স্থায়ী স্টোরেজ। আপনি ইউএসবি ড্রাইভগুলি প্লাগ ইন করতে বা মাঝেমধ্যে কিছু নেটওয়ার্ক শেয়ার মাউন্ট করতে চাইলে এটি দুর্দান্ত হয় না।

  • sudo mountআপনি যদি উবুন্টু * সিস্টেমে থাকেন তবে ঠিক আছে। তবুও আপনাকে একটি পাসওয়ার্ড টাইপ করতে হবে।

  • udev উবুন্টু * সিস্টেমে ইউএসবি স্টিক, ক্যামেরা এবং ফ্ল্যাশ কার্ডের মতো মাউন্টিং জিনিসগুলির যত্ন নেবে (তবে ডেবিয়ান, স্ল্যাকওয়ার ইত্যাদির মতো কম ব্যবহারকারী বান্ধব ডিস্ট্রোগুলিতে নয়)

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

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

এর চেয়ে আরও বড় বিষয় sudoersহ'ল আপনি ডিভাইসগুলি এবং স্বচ্ছভাবে ভাগ করতে পারবেন - এমনকি যদি আপনি এটির জন্য পাসওয়ার্ড নাও দিয়ে থাকেন তবে (সে সম্পর্কে অতিরিক্ত সতর্কতা অবলম্বন করুন)।

আমি একটি নিয়ন্ত্রণ পরিবেশে সাধারণত যা করি তা হ'ল আমি sudoersনির্দিষ্ট গ্রুপের ব্যবহারকারীদের নেটওয়ার্ক শেয়ার স্বচ্ছভাবে মাউন্ট করার জন্য ফাইল ব্যবহার করি । সুতরাং আমি কমান্ডগুলি mount.nfsএবং mount.cifssudoers ফাইলে যুক্ত করে যা "নেটওয়ার্ক ফাইল সার্ভার থেকে ব্যবহারকারীর হোম ফোল্ডারটি মাউন্ট করুন, যখন ব্যবহারকারী কোনও ক্লায়েন্ট টার্মিনালে লগইন করে" এবং এই জাতীয় স্টাড হিসাবে কাজ করে।


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

আমি এগুলি একসাথে ব্যবহার করি; ক্লায়েন্ট পিসির লোকেশন থেকে ফাইলসভার থেকে autofsমাউন্ট করার জন্য কীভাবে এটি নিজে ব্যবহার করতে পারি তা আমি বুঝতে পারি না । /home/$USER/home/$USER/fromFS/
নাস

0

guestmount libguestfs কৌতুক

sudo apt-get install libguestfs-tools

# Workarounds for Ubuntu 18.04 bugs.
# https://serverfault.com/questions/246835/convert-directory-to-qemu-kvm-virtual-disk-image/916697#916697
sudo rm -rf /var/cache/.guestfs-*
echo dash | sudo tee /usr/lib/x86_64-linux-gnu/guestfs/supermin.d/zz-dash-packages
sudo chmod +r /boot/vmlinuz-*

# Create a test image.
mkdir sysroot
dd if=/dev/urandom of=sysroot/myfile bs=1024 count=1024
virt-make-fs --format=raw --type=ext2 sysroot sysroot.ext2

# Mount it, have fun, unmount!
mkdir -p mnt
# /dev/sda becuase we have a raw filesystem.
guestmount -a sysroot.ext2.qcow2 -m /dev/sda mnt
cmp sysroot/myfile mnt/myfile
guestunmount mnt

উপর নির্ভর করে:

  • ফাইল সিস্টেমে ইউজারল্যান্ড বাস্তবায়ন
  • ফিউজ

দস্তাবেজ: http://libguestfs.org/guestmount.1.html

উবুন্টু 18.04 এ পরীক্ষিত, libguestfs-tools 1: 1.36.13-1ubuntu3।

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