Linux - монтировать устройство с определенными правами пользователя

86

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

dev /var/www vboxsf rw, suid, dev, exec, auto, nouser, async, uid=1000
wowpatrick
источник
Не забудьте gui = 1000 Также, что является собственностью / правами на / var / www. Он должен принадлежать пользователю root.
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

после того, как это было установлено.

wowpatrick
источник
Я смог использовать опцию uid / gid на ext4.
CMCDragonkai
Кажется, это не работает с mount --bind, я использую файловую систему
btrfs
Разве нельзя 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 довольно информативна, см. Раздел о каталогах .

JS.
источник
18
Смена владельца всех файлов на устройстве очень инвазивна. Так как есть -oопция для монтирования, это лучший способ.
Ограниченное искупление
6
-oк сожалению, не работает для ext4, как объясняется в ответе @wowpatrick.
Дж. С.
14
chownПередача содержимого смонтированного диска другому пользователю нелепа. Вы понятия не имеете, что вы можете сломать для любых приложений на этом диске. Это может быть хорошо, если все содержимое принадлежит вашему пользователю, но это очень большой нет-нет ...
carlspring
Это устройство / dev / www, легко контролировать, какие приложения имеют к нему доступ (вероятно, только WWW-сервер, который вы можете отключить во время работы). Даже если приложение, использующее его, все еще работает, оно продолжит работу, поскольку это является точкой операции.
Дж. С.