কিছু নির্দিষ্ট ব্যবহারকারীকে (যেমন কোনও গ্রুপের সদস্য) লিনাক্সে সুপারসারের সুবিধা ছাড়াই কোনও ফাইলসस्टम মাউন্ট করার অনুমতি দেওয়া কি সম্ভব ?
আরেকটি প্রশ্ন হতে পারে "কোন পদ্ধতিতে ফাইল সিস্টেমগুলি মাউন্ট করে কোনও সিস্টেম কোনও ক্ষতি করতে পারে?"
কিছু নির্দিষ্ট ব্যবহারকারীকে (যেমন কোনও গ্রুপের সদস্য) লিনাক্সে সুপারসারের সুবিধা ছাড়াই কোনও ফাইলসस्टम মাউন্ট করার অনুমতি দেওয়া কি সম্ভব ?
আরেকটি প্রশ্ন হতে পারে "কোন পদ্ধতিতে ফাইল সিস্টেমগুলি মাউন্ট করে কোনও সিস্টেম কোনও ক্ষতি করতে পারে?"
উত্তর:
একটি দম্পতি আছে, তাদের বেশিরভাগ বেশিরভাগ সুরক্ষিত, অন্যেরা একেবারেই নয়।
যেকোনো ব্যবহার চলুক 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
রুটের মতো ফাইল সিস্টেমগুলিতে মাউন্ট করতে সক্ষম হবেন তা নিরাপদ ? আপনি যে লিঙ্কটি যুক্ত করেছেন সেই নেমস্পেসগুলি নথিটি পড়ব এবং অন্তত একটি অনুশীলন হিসাবে এই মাউন্ট গ্রুপ জিনিসটি প্রয়োগ করার চেষ্টা করব।
mount
কমান্ড চালানোর অনুমতি দেন তবে তা রুট দেওয়ার মতোই।
আপনি এটি করতে পারেন, তবে আপনি /etc/fstab
যে ফাইল সিস্টেমটি মাউন্ট করতে চান তার সাথে মিল রেখে আপনাকে এন্ট্রিটি পরিবর্তন করতে হবে, user
এই এন্ট্রিতে পতাকা যুক্ত করে । অ-সুযোগ-সুবিধার ব্যবহারকারীরা তখন এটি মাউন্ট করতে সক্ষম হবেন।
দেখুন man mount
আরো বিস্তারিত জানার জন্য।
vfs.usermount
) নির্ধারণ করে ফাইল-সিস্টেমগুলি মাউন্ট করার অনুমতি দিতে পারে । আমি স্টিচ চাই যে অনুরূপ। আমি প্রত্যেকটিতে অনেকগুলি পার্টিশন সহ অনেকগুলি অপসারণযোগ্য ড্রাইভ ব্যবহার করি এবং এগুলির প্রত্যেকের জন্য স্টেস্টএবতে একটি ডজন বা দুটি এন্ট্রি যুক্ত করা জটিল।
udev
নতুন ডিভাইসগুলির উপস্থিতি এবং অদৃশ্য হওয়ার সাথে সাথে এন্ট্রিগুলি পরিচালনা করতে দেওয়া হতে পারে ।
এখানে কনফিগার করার জন্য উইকি হয় 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
এক্সুয়ান্টুতে এটি ইউএসবি ভর স্টোরেজ, হার্ড ডিস্ক পার্টিশন, সিডি / ডিভিডি এবং সম্ভবত আরও কিছু নির্ধারণ করতে বক্সের বাইরে কাজ করে।
আসুন ধরে নেওয়া যাক যে পলিসিকিট ব্যবহার করে উবুন্টু যে সমাধানটি বেছে নিয়েছেন তা যথেষ্ট সুরক্ষিত।
ডিবিয়ান ৮.৩ এ এক্সএফসিইতে আমার ব্যবহারকারীকে পাসওয়ার্ড ছাড়াই থুনার থেকে ফাইল সিস্টেমগুলি মাউন্ট করতে এবং বের করার অনুমতি দেওয়া দরকার। আমার জন্য যা কাজ করেছে তা হ'ল উবুন্টু থেকে অনুমতি ফাইল চেরি-বাছাই করা।
নামের ফাইলটিতে নীচের লাইনগুলি যুক্ত হিসাবে যুক্ত করা /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
(আমি যা করেছি তা হ'ল উবুন্টু ১ name.০৪-তে একই নামের ফাইলটি থেকে আরও কিছুটা বাছাই করা হয়েছিল এবং এটি আমার পক্ষে কাজ করেছে you আপনার যদি এটির প্রয়োজন হয় তবে এটি বেশিরভাগ https://gist.github.com/kafene/5b4aa4ebbd9229fa2e73 এর সামগ্রীর মতো লাগে )
sudo
ব্যবহারকারীদের একটি সেটকে mount
কমান্ড চালানোর অনুমতি দেওয়ার জন্য আপনি কনফিগার করতে পারেন ।
আপডেট : আপনি কিভাবে মাউন্ট দ্বারা একটি সিস্টেম ক্ষতি করতে পারেন? উদাহরণস্বরূপ, আপনি একটি ফাইল সিস্টেমে একটি সেটুইড রুট শেল তৈরি করতে পারেন যা পরে আপনি রুট সুবিধাগুলি পেতে মাউন্ট এবং এক্সিকিউট করতে পারেন।
sudo
? এছাড়াও, এই পদ্ধতিটি দিয়ে, কেবল পর্দার আড়ালে, ফাইল সিস্টেমটি মাউন্ট করা মূল ব্যবহারকারী নয়?
mount
জন্য উপনাম sudo mount
বা ব্যবহার করতে পারেন।
user
fstab এ যুক্ত করা কেবলমাত্র কাজ করে কারণ mount
নির্ধারিত মূল। কার্নেলটি রুট বা CAP_SYS_ADMIN
সক্ষমতার জন্য যাচাই করে নিচ্ছে যাতে আপনি মূলের সাথে জড়িত না।
বন্ধনীতে আপনার প্রশ্নের উত্তর দেওয়ার জন্য, যেহেতু একটি ফাইল সিস্টেম ফাইলগুলির জন্য একটি স্থানধারক, তাই কোনও ব্যবহারকারী সম্ভবত সেই ফাইল সিস্টেমটিতে ক্ষতিকারক ক্রিয়াকলাপগুলি পরিচালনা করতে পারে যেমন ফাইলগুলি মুছুন।
অন্যান্য 2 টি প্রশ্নের সংক্ষিপ্তসার আমি এটি বলব:
fstab
এ মাউন্ট জন্য মহান বুট সময় স্থায়ী স্টোরেজ। আপনি ইউএসবি ড্রাইভগুলি প্লাগ ইন করতে বা মাঝেমধ্যে কিছু নেটওয়ার্ক শেয়ার মাউন্ট করতে চাইলে এটি দুর্দান্ত হয় না।
sudo mount
আপনি যদি উবুন্টু * সিস্টেমে থাকেন তবে ঠিক আছে। তবুও আপনাকে একটি পাসওয়ার্ড টাইপ করতে হবে।
udev
উবুন্টু * সিস্টেমে ইউএসবি স্টিক, ক্যামেরা এবং ফ্ল্যাশ কার্ডের মতো মাউন্টিং জিনিসগুলির যত্ন নেবে (তবে ডেবিয়ান, স্ল্যাকওয়ার ইত্যাদির মতো কম ব্যবহারকারী বান্ধব ডিস্ট্রোগুলিতে নয়)
আমি এটিকে যুক্ত করব, icallyতিহাসিকভাবে, কিছু ব্যবহারকারীকে (বা গোষ্ঠীগুলি) জিনিসপত্র করার ক্ষমতা দেওয়ার ইউনিক্স উপায় sudoers
ফাইলটির মাধ্যমে ।
এটি ব্যবহার করার জন্য অনেক গাইড রয়েছে তাই আমি কোনও বিশেষ পরামর্শ দেব না। আমি বলব যে আমি এটি সম্পর্কে জানতে লিনাক্স ডকুমেন্টেশন প্রকল্পের ওয়েবসাইটটি ব্যবহার করেছি।
এর চেয়ে আরও বড় বিষয় sudoers
হ'ল আপনি ডিভাইসগুলি এবং স্বচ্ছভাবে ভাগ করতে পারবেন - এমনকি যদি আপনি এটির জন্য পাসওয়ার্ড নাও দিয়ে থাকেন তবে (সে সম্পর্কে অতিরিক্ত সতর্কতা অবলম্বন করুন)।
আমি একটি নিয়ন্ত্রণ পরিবেশে সাধারণত যা করি তা হ'ল আমি sudoers
নির্দিষ্ট গ্রুপের ব্যবহারকারীদের নেটওয়ার্ক শেয়ার স্বচ্ছভাবে মাউন্ট করার জন্য ফাইল ব্যবহার করি । সুতরাং আমি কমান্ডগুলি mount.nfs
এবং mount.cifs
sudoers ফাইলে যুক্ত করে যা "নেটওয়ার্ক ফাইল সার্ভার থেকে ব্যবহারকারীর হোম ফোল্ডারটি মাউন্ট করুন, যখন ব্যবহারকারী কোনও ক্লায়েন্ট টার্মিনালে লগইন করে" এবং এই জাতীয় স্টাড হিসাবে কাজ করে।
autofs
মাউন্ট করার জন্য কীভাবে এটি নিজে ব্যবহার করতে পারি তা আমি বুঝতে পারি না । /home/$USER
/home/$USER/fromFS/
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।
gvfs-mount
-d /dev/sdX