Вопрос состоит в том, как позволить одному пользователю (но не все!) в файлы доступа другого пользователя.
У меня есть каталог /home/alice/dir
принадлежавший alice
:
$ cd /home/alice
$ ls -l
drwxr-x--- 2 alice alice 4096 Feb 10 21:24 dir
т.е. владелец alice
и группа alice
имейте чтение/доступ на выполнение.
Я хочу позволить пользователю bob
доступ к этому каталогу, но любой другой пользователь eve
не должен иметь доступа.
Что я сделал до сих пор был:
$ sudo adduser bob alice
и теперь
$ getent group alice
alice:x:1001:bob
так теперь bob
находится в группе alice
.
Однако все еще bob
не может получить доступ к каталогу:
$ whoami
bob
$ cd /home/alice
$ pwd
/home/alice
$ ls -l
drwxr-x--- 2 alice alice 4096 Feb 10 21:24 dir
$ getent group alice
alice:x:1001:bob
$ cd dir
bash: cd: test: Permission denied
Что случилось?
Пользователи были созданы с
sudo adduser alice
sudo adduser bob
sudo adduser eve
Способ сделать его, как описано в вопросе корректен.
Однако при обновлении групп, полномочий текущий процесс , включая оболочку, не обновляется. Таким образом в моем случае groups
(текущая оболочка, запущенная bob
, прежде чем, группы были изменены) и groups bob
(текущие полномочия пользователя bob
) показал различные результаты:
$whoami
bob
$ groups bob # current membership of bob
bob alice
$ groups # shell run by bob BEFORE the groups changed
bob
$ cd /home/alice/dir
bash: cd: test: Permission denied
, Таким образом, я должен был закрыть оболочку, и даже закрыть туннель (я был подключен к полю Ubuntu через туннель SSH), и откройте новую оболочку (после того, как я соединился с SSH снова), и затем я видел
$whoami
bob
$ groups bob
bob alice
$ groups # current shell run by bob AFTER the groups changed
bob alice
$ cd /home/alice/dir
$ pwd
/home/alice/dir
, Если bob
сервис, тот сервис состоит в том, чтобы быть перезапущен!