Как предоставить доступ к папке, которая находится в папке, принадлежавшей другой группе

Ситуация:
Группа A требует доступа к /path/to/dir/foo загружать файлы через ssh или ftp, но рассматриваемый каталог: /path/to/dir/foo принадлежит группе B (если Вы хотели бы: /path рекурсивно принадлежит B), который должен остаться этот путь из соображений безопасности.


Моя попытка для решения:
Я создаю символьную ссылку на /home/A, который A владеет. Затем, я даю разрешения так A может получить доступ к символьной ссылке:

sudo ln -s /path/to/dir/foo /home/A/foo
sudo chown -h A:A /home/A/foo

Я изобразил это /path/to/dir/foo должен, по крайней мере, принадлежать группе это A часть:

sudo addgroup C
sudo useradd -G C A
sudo chown -R B:C /path/to/dir/foo
sudo chmod -R 774 /path/to/dir/foo

После выполнения всего этого я соединился через клиент FTPS как пользователь A и измененный каталог к: /home/A. К моему удивлению символьная ссылка не видима, который нечетен, потому что proFTPd настраивается для показа символьных ссылок.

Я также пытался соединиться через SFTP с тем же каталогом. На этот раз символьная ссылка была видима, но когда я пытался получить доступ к ней, я получил следующую подсказку:

Не может открыть удаленный файл '/path/to/dir/foo'.

Разрешение отклонено.
Код ошибки: 3
Сообщение об ошибке с сервера: Разрешение отклонено

Это оставляет меня с мало ни к каким альтернативам, так как это было самым легким решением, о котором я мог думать.


Отчаянная попытка:
Я дал глобальные разрешения к /path/to/dir/foo, но я все еще не мог получить доступ к символьной ссылке foo в /home/A как пользователь A. Значение: ls -l /path/to/dir/foo распечатал бы -rwxrwxrwx.


Вопрос:
Как я создаю символьную ссылку /home/A/foo который указывает на /path/to/dir/foo. Который A может получить доступ, несмотря на /path/to/dir/foo быть главным образом принадлежавшимся user:group B (/path принадлежит B) ?

2
задан 27 November 2014 в 06:48

2 ответа

Если Ваш каталог находится в ext4 файловой системе, можно использовать ACL. Лучше всего объясненный примером; мой пользователь romano и другой пользователь default.

Как romano:

[romano:~/tmp] % mkdir -p a/b/c/d
[romano:~/tmp] % cd !$
cd a/b/c/d
[romano:~/tmp/a/b/c/d] % touch f1
[romano:~/tmp/a/b/c/d] % ls -l
total 0
-rw-rw-r-- 1 romano romano 0 nov 27 17:15 f1

Очевидно, я могу записать в каталог d, это является моим..., но от default:

default@pern:/home/romano/tmp/a/b/c/d$ touch f2
touch: cannot touch ‘f2’: Permission denied

Да. Никакая символьная ссылка не изменит факт это default не может записать там.

Теперь, как romano, Я предоставляю дополнительный доступ для группировки default:

[romano:~/tmp/a/b/c/d] % setfacl -m g:default:rwx .

(чтение как: добавить rwx разрешение сгруппироваться default к току . каталог)

... И теперь, как default:

default@pern:/home/romano/tmp/a/b/c/d$ touch f2
default@pern:/home/romano/tmp/a/b/c/d$ ls -l
total 0
-rw-rw-r-- 1 romano  romano  0 nov 27 17:15 f1
-rw-rw-r-- 1 default default 0 nov 27 17:17 f2

Синтаксис ACL является небольшим convouted, но это - довольно мощный инструмент. Посмотрите man setfacl и man getfacl для полной информации и большего количества примеров.

В Вашем случае, если Вы имеете /path/to/dir/foo принадлежавший A:A, и Вы хотите, чтобы у группы B был доступ для записи к foo Вы должны:

  1. добавить +rx разрешение к каждому продвижению каталога к нему для группы B:

     setfacl -m g:B:r-x /path
     setfacl -m g:B:r-x /path/to
     setfacl -m g:B:r-x /path/to/dir
    
  2. добавить +rwx permssion группе B к каталогу:

     setfacl -m g:B:rwx /path7to7dir/foo
    

Заметьте однако, что это кажется, что у нас есть противная ошибка вокруг... См. http://debbugs.gnu.org/cgi/bugreport.cgi?bug=8527. Я не уверен в последствиях---простой случай выше обработанного хорошо, но проверьте его.

1
ответ дан 2 December 2019 в 05:10

Этот ответ основан на подсказке, которую Rmano дал в конце его ответа, даже при том, что метод списка управления доступом к файлу не работал.

Это не работало, потому что полный путь, например, /path/to/dir требует [по крайней мере 113] разрешения read+execute : sudo chmod -R g+rx /path. Это решило мою проблему, и я могу теперь получить доступ к символьной ссылке в A корневой каталог и записать в содержание файлов.

0
ответ дан 20 November 2019 в 02:09

Другие вопросы по тегам:

Похожие вопросы: