Как я могу поделиться каталогом с другим пользователем?

8

Я не хочу, чтобы общая папка была доступна кому-либо в системе, я хочу, чтобы она была доступна только ограниченному кругу пользователей.

Как мне это сделать?

Emanuele
источник

Ответы:

9

Взято из этого превосходного поста на форумах Ubuntu от Morbius1.

Классический способ Linux такого рода вещей выглядит примерно так:

  1. Создайте общую папку:

    sudo mkdir /home/Shared
    
  2. Создайте новую группу пользователей:

    sudo addgroup newgroup
    
  3. Измените владельца общей папки на новую группу:

    sudo chown :newgroup /home/Shared
    
  4. Добавьте желаемых пользователей в эту группу:

    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
Уоррен Хилл
источник