4

Как разрешить одному пользователю - но не всем - доступ к файлам другого пользователя в Ubuntu?

У меня есть каталог /home/alice/dir принадлежащий alice:

$ cd /home/alice
$ ls -l
drwxr-x---  2 alice alice       4096 Feb 10 21:24 dir

т.е. владелец alice и группа alice имеют доступ на чтение / выполнение. Конечно, /home и /home/alice доступны для чтения / исполнения для всех (drwxr-xr-x), что является конфигурацией по умолчанию для Ubuntu.

Я хочу разрешить пользователю 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
$ groups bob
bob : bob alice
$ cd dir
bash: cd: test: Permission denied

В чем дело?

Пользователи были созданы с

sudo adduser alice
sudo adduser bob
sudo adduser eve

Убунту 14.04. Я думаю, что ACL не используются, и я не хочу их использовать - я думаю, что то, что я хочу, должно быть вполне достижимо без ACL.

1 ответ1

3

Способ, как описано в вопросе, является правильным:

$ sudo adduser bob alice

Однако вы не увидите изменения сразу: все запущенные в настоящее время процессы и службы должны быть перезапущены, чтобы они могли увидеть изменения.

Это связано с тем, что при обновлении групп разрешения текущих запущенных процессов и служб, включая вашу оболочку, не обновляются. Поэтому в моем случае 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 box через 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 - сервис, такой как apache2 (работает под пользовательскими www-data), этот сервис необходимо перезапустить!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .