Я не хочу, чтобы общая папка была доступна кому-либо в системе, я хочу, чтобы она была доступна только ограниченному кругу пользователей.
Как мне это сделать?
источник
Я не хочу, чтобы общая папка была доступна кому-либо в системе, я хочу, чтобы она была доступна только ограниченному кругу пользователей.
Как мне это сделать?
Взято из этого превосходного поста на форумах Ubuntu от Morbius1.
Классический способ Linux такого рода вещей выглядит примерно так:
Создайте общую папку:
sudo mkdir /home/Shared
Создайте новую группу пользователей:
sudo addgroup newgroup
Измените владельца общей папки на новую группу:
sudo chown :newgroup /home/Shared
Добавьте желаемых пользователей в эту группу:
sudo adduser user1 newgroup
Повторите для всех пользователей.
Теперь у вас есть несколько решений о том, что вы хотите, чтобы эти пользователи могли делать:
[a] Все пользователи группы могут добавлять и удалять из папки и могут читать, но не записывать файлы друг друга:
sudo chmod 0770 /home/Shared
[b] То же, что и выше, но только владелец файла может удалить его:
sudo chmod 1770 /home/Shared
[c] Все пользователи группы могут добавлять и удалять из папки и могут читать и записывать файлы друг друга:
sudo chmod 2770 /home/Shared
[d] То же, что и [c], за исключением того, что только владелец файла может удалить его:
sudo chmod 3770 /home/Shared
В 1
первой позиции команды chmod находится бит, который предотвращает удаление файла кому-либо, кроме владельца.
В 2
первой позиции команды chmod находится бит setgid, который заставляет все новые или скопированные файлы иметь группу из этой папки.
В 3
первой позиции команды chmod находится комбинация 1
битов sticky ( ) и setgid ( +2
).
Во всем этом есть одна оговорка, касающаяся бита setgid. Все новые файлы, созданные в этой папке, и любые файлы, скопированные в эту папку, фактически наследуют группу этой папки. Но не файлы перемещены в эту папку. Перемещенные файлы сохраняют право собственности, откуда бы они ни были перемещены. Один из способов обойти эту проблему - использовать bindfs.
Наконец, если вы хотите, чтобы другие пользователи, находящиеся вне группы, могли видеть файлы, но не меняли их, измените конечный 0 в chmod
команде на 5, например:
sudo chmod 0775 /home/Shared