Ответы:
Взято из этого превосходного поста на форумах 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