Монтаж файлової системи із спеціальним набором ідентифікатора користувача


19

Я хочу встановити пристрій /dev/sda3до каталогу /foo/bar/baz. Після монтажу каталогу повинен мати uid користувача johndoe. Так я і зробив:

sudo -u johndoe mkdir /foo/bar/baz
stat -c %U /foo/bar/baz
johndoe

і додав наступний рядок до мого /etc/fstab:

/dev/sda3 /foo/bar/baz ext4 noexec,noatime,auto,owner,nodev,nosuid,user 0 1

Коли я роблю зараз, sudo -u johndoe mount /dev/sda3команда stat -c %U /foo/bar/bazпризводить до, rootа не johndoe. Який найкращий спосіб встановити цю файлову систему ext4 з johndoeнабором uid ?

Відповіді:


20

Змусити власника на диску з файловою системою ext4 неможливо. Тільки файлові системи, які не підтримують права Linux, як жир, мають атрибут власності / групування: uid=valueі gid=value. Див . Сторінку керівництва по монтажу .

Ви повинні змінити власника на змонтованій файловій системі, як у:

sudo chown johndoe /foo/bar/baz

Якщо вам потрібно змінити дозволи рекурсивно:

sudo chown -R johndoe /foo/bar/baz

... і якщо групу потрібно також змінити johndoe:

sudo chown -R johndoe: /foo/bar/baz

2
Рекурсивно змінюється право власності, як правило, погана ідея, якщо ви можете допомогти в цьому. Після того, як ви знищили "правильне" право власності, практично не існує простого способу повернути його. IMO bindfs - це правильний спосіб вирішення цього питання (див. Мою відповідь).
Catskul

3
bindfs звучить як інший шар складності. Моя відповідь найкраще підходить для зовнішнього жорсткого диска (для резервного копіювання), який використовувався в попередній установці з іншим ідентифікатором користувача. Він не повинен використовуватися в ситуаціях, коли потрібно зберігати кілька ідентифікаторів користувачів (коренева файлова система), але в цьому випадку bindfs з -uтакож не слід використовувати, оскільки він обходить обмеження доступу з різних ідентифікаторів користувачів. --mapслід використовувати, якщо ви хочете зберегти обмеження доступу.
Лекенштейн

1
+1 для "це можливо лише на FS без дозволів" - я намагався використовувати, uidі gidце не вийшло.
mgarciaisaia

19

bindfsце відповідь. Він займе вже змонтовану файлову систему та надасть їй перегляд залежно від того, який ви бажаєте:

sudo apt-get install bindfs
mkdir ~/myUIDdiskFoo
sudo bindfs -u $(id -u) -g $(id -g) /media/diskFoo ~/myUIDdiskFoo

1
bindfs має інші режими роботи, дивіться: bindfs.org/docs/bindfs.1.html
Lekensteyn

2
Фу, він використовує FUSE.
Навін

Я хотів встановити віртуальну файлову систему 9p з різними дозволами користувачів, ніж хост ОС. Я стукав головою об стіну, намагаючись змусити її працювати. Bindfs насправді вирвав мене із прив’язки. Чудовий маленький інструмент!
Боан

6

Якщо припустити, що набір груп для файлів має відповідні дозволи, ви зможете просто дізнатися, що це ідентифікатор групи (GID) та додати себе до неї.


Щоб дізнатися ідентифікатор групи файлу, використовуйте ls -n. Приклад виводу:

drwxr-xr-x 1 1000 1000  550 Jul  9 11:08 Desktop/

Ви хочете четверте поле для GID, яке в моєму випадку є другим 1000.

sudo addgroup --gid GID foobar; sudo usermod `whoami` -aG foobar

Після запуску, ви повинні мати повне управління, де коли-небудь атрибути файлів для групи дозволяють це.

Як зазначено в іншій відповіді, що стосується дозволів користувача, якщо вам потрібно виправити групу на деяких файлах, запустіть один із них:

sudo chown -R :foobar ./
sudo chgrp -R  foobar ./

1
Зверніть увагу, якщо ви хочете переключити користувача або групу з А на В, не змінюючи право власності на файли, які не є А; ви можете використовувати як sudo chown --from A B -R ./для користувачів, так і sudo chown --from :A :B ./для груп
LateralFractal
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.