Linux - змонтуйте пристрій із конкретними правами користувача


86

Як я можу встановити при запуску пристрій із певними правами користувача? У мене все ще є проблеми з з'ясуванням. Я хотів би встановити поділ з uid=1000і gid=1000. Мій поточний запис у /etc/fstab/файл виглядає приблизно так:

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000

Не забувайте gui = 1000. Також, яке право власності / права на / var / www. Він повинен належати корінь.
skub

1
@skub: Власник /var/www/root. dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000 gui=1000не працювало так добре (Ubuntu видалив запис після невдалого перезавантаження).
wowpatrick

2
Ваше джерело кріплення "dev" ??
Джеймс Т Снелл

@wowpatrick - ваш пристрій монтування повинен бути чимось на зразок / dev / sda1, він не повинен бути "dev".
skub

1
@skub: Це спільна папка VirtualBox, тому / dev - це правильно. Я зрозумів це до цього часу, sudo mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/wwwпрацює просто чудово.
wowpatrick

Відповіді:


119

Щоб змонтувати пристрій з певними правами, ви можете використовувати -o Optionдирективу під час монтажу пристрою. Щоб встановити описаний вами пристрій, запустіть:

 mount -t deviceFileFormat -o umask=filePermissions,gid=ownerGroupID,uid=ownerID /device /mountpoint

Наприклад, монтування спільної папки VirtualBox /var/wwwз www-dataвласником виглядатиме так:

mount -t vboxsf -o umask=0022,gid=33,uid=33 dev /var/www

Якщо ви хочете встановити пристрій під час запуску, ви можете додати у свій /etc/fstabфайл наступний запис :

 /device /mountpoint deviceFileFormat umask=filePermissions,gid=ownerGroupID,uid=ownerUserID

Знову ж таки, на тому ж прикладі запис у /etc/fstabфайл виглядатиме так:

dev /var/www vboxsf umask=0022,gid=33,uid=33

Для файлових систем, які не підтримують монтаж як певний користувач (наприклад, ext4), вищесказане призведе до помилки

Unrecognized mount option "uid=33" or missing value

щоб змінити власника кріплення ext4, просто запустіть

chown username /mountpoint

після його монтажу.


Мені вдалося скористатися опцією uid / gid на ext4.
CMCDragonkai

Здається, це не працює з mount --bind, я використовую файлову систему btrfs
meffect

Чи не повинен umask umask=0077замість того, umask=0022щоб дати дозвіл тільки власникові читати чи писати? Здається, я umask=0022дам дозволу на читання іншим, якщо я правильно прочитаю. Я хочу, щоб тільки користувач, який монтує диск, повинен мати дозвіл на читання або запис.
Міан Асбат Ахмад

3

Для файлової системи на зразок ext3 або ext4 після цього

    chown -R username:group /mountpoint

щоб змінити власника існуючих на даний момент файлів, ви можете встановити біт ідентифікатора групи для створення нових файлів, створених для певної групи (не працює для ідентифікатора користувача під Linux):

    find /mountpoint -type d -exec chmod g+ws {} \;

Запис у Вікіпедії про setuid та setgid є досить інформативним, дивіться розділ про каталоги .


17
Зміна власності на всі файли на пристрої дуже інвазивна. Оскільки є -oваріант для кріплення, це кращий спосіб.
обмежене спокутування

6
-oна жаль, не працює для ext4, як пояснено у відповіді @wowpatrick.
js.

14
chownВикористання вмісту змонтованого диска іншому користувачеві смішно. Ви не маєте поняття, що ви можете зламати для будь-яких додатків на цьому диску. Це може бути добре, якщо весь вміст належить вашому користувачеві, але це дуже великий ні-ні ...
carlspring

Пристрій, про який йдеться, / dev / www, легко контролювати, які програми мають доступ до нього (можливо, лише сервер WWW, який ви можете вимкнути під час роботи). Навіть якщо додаток, що використовує його, все ще працює, він буде продовжувати працювати, оскільки це суть операції.
js.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.