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


Ситуация:
группа 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
  Сообщение об ошибке с сервера: Permission denied

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


Отчаянная попытка:
Я предоставил глобальные разрешения для /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 в основном принадлежащих пользователю: group B (/path принадлежит B)?


2
2017-11-27 13:43


происхождения


«/ path / to / dir / foo принадлежит группе B, которая должна оставаться таким образом по соображениям безопасности». Я понимаю ваши проблемы, но самым простым способом было бы создать группу C с пользователем A и пользователями из группы B в ней и открыть ./foo для группы C. На сегодняшний день самый простой способ. «К моему удивлению, символическая ссылка не видна, что нечетно» объясняется «сообщением об ошибке с сервера: Permission denied»;) - Rinzwind
@Rinzwind Не так ли, как то, что я пробовал? Кроме того, я не добавил пользователя B группировать C, - Nikita


ответы:


Если ваш каталог находится в файловой системе 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 немного испорчен, но это довольно мощный инструмент. Видеть 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
2017-11-27 16:25



Кажется, он не работает на моем конце. Я даже изменил право собственности на default или A, если вы будете. setfacl добавляет аргумент + ls -l с которым я не знаком, но кроме этого, это ничего не меняет для меня. - Nikita


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

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


0
2017-12-04 10:04