Настроить общую папку для пользователей на сервере Linux

У меня есть папка / mnt / disk / folder .

  1. Я хочу, чтобы user1 и user2 имели полный рекурсивный доступ для чтения и записи к любым текущим и будущим каталогам и файлам.

  2. Я хочу создать символическую ссылку на папку / home / user1 / data / и / home / user2 / data / с сохранением прав доступа.

Вот что я сделал:

Сделать каталог

mkdir / mnt / disk / folder

Символьная ссылка на каталог

ln -s /mnt/disk/folder /home/user1/data
ln -s /mnt/disk/folder /home/user2/data

Создать группу для совместного использования

sudo groupadd sharing

Добавить пользователей в эту группу

sudo usermod -a -G sharing user1
sudo usermod -a -G sharing user2

Отобразить все существующие файлы (в данном случае не все), чтобы они принадлежали к группе

sudo chgrp -R sharing / mnt / disk / folder

Сделать все существующие файлы (не в в данном случае) группа-чтение-запись

sudo chmod g + rw -R / mnt / disk / folder

Убедитесь, что все вновь созданные файлы и каталоги будут принадлежать группе

chgrp sharing /mnt/disk/folder
chmod g+s /mnt/disk/folder

Если вы вошли в систему как user1 выполняет mkdir / home / user1 / data / folder / 123 , он работает. Как и cd 123 и > test.txt .

Если затем войти в систему как user2 и перейти к / home / user1 / data / folder / , то там будут данные, созданные user1 , и оба пользователи могут создавать, редактировать и удалять каталоги и файлы.

Однако я запускаю сервер JupyterHub, где user1 и user2 получают доступ к своим каталогам через интерфейс браузера jupyter. При создании и редактировании здесь разрешения НЕ работают.

1
задан 27 October 2019 в 23:34
1 ответ

Часть 2: Символическая ссылка

Вторая часть проста: символические ссылки всегда поддерживают разрешения в том смысле, в котором вы ожидаете. Таким образом, создайте их просто с помощью ln -s :

ln -s /mnt/disk/folder /home/user1/data
ln -s /mnt/disk/folder /home/user2/data

(в случае, если вы используете приложения, которые не работают правильно с символической ссылкой, рассмотрите возможность использования привязки).

Часть 1: Правильные права доступа

Это «более сложная» часть, потому что она зависит (по крайней мере частично) от сотрудничества пользователей. Базовый подход UNIX к подобной проблеме состоит в том, чтобы сделать обоих пользователей ( user1 и user2 ) частью одной и той же группы (например, dataaccess ). Затем все существующие данные необходимо указать, чтобы они принадлежали к этой группе, например. с помощью такой команды:

chgrp -R dataaccess /mnt/disk/folder

Наконец, все файлы в каталоге должны быть доступны для группового чтения-записи, что может, например, достигается с помощью chmod g + rw -R / mnt / disk / folder для существующих файлов.

После установления доступа к существующим файлам в игру вступает взаимодействие пользователя: все вновь созданные файлы и каталоги должны принадлежать к группе и иметь установленный бит g + rw . Правильная установка разрешений может быть достигнута путем настройки подходящей umask для обоих пользователей.

Последний шаг - убедиться, что вновь созданные файлы и каталоги принадлежат правильной группе. Пользователи могут сделать это вручную, вызвав подходящие команды chgrp после того, как они создали файлы, или автоматически с помощью бита setgid, см. Этот вопрос: https://askubuntu.com/questions/51951 /set-default-group-for-user-when-they-create-new-files .

Если вы не можете полагаться на то, что пользователи будут создавать файлы, к которым только они имеют доступ, вы можете установить автоматическое разрешение механизм расширения с помощью cronjob или inotify.

Другой «подход кувалды», который сопровождается множеством проблемных побочных эффектов, - это использование файловой системы, которая не поддерживает разрешения и, таким образом, всегда будет иметь (настраиваемые во время монтирования) разрешения на доступ. На ум приходит FAT32, но мы настоятельно рекомендуем вместо этого использовать описанное выше решение для очистки!

2
ответ дан 3 December 2019 в 20:05

Теги

Похожие вопросы