2

Я использую рабочие пространства SSH Cloud9IDE, и по ряду причин нам необходимо создать этот туннель SSH в качестве пользователя root. На самом деле это не проблема, однако файлы и каталоги, которые мы создаем с его помощью, на самом деле живут в папке пользователя (в данном случае, скажем, пользователь "foobar", поэтому файлы создаются в /home /foobar /public_html / DEV).

Проблема в том, что, поскольку пользователь "root" фактически создает файлы, переход к этим файлам в браузере возвращает 404, поскольку сервер использует пользователя "foobar" для обслуживания страниц.

Мне нужен способ гарантировать, что даже если файлы были созданы пользователем root, пользователь foobar должен иметь возможность читать и выполнять их, как если бы этот пользователь их создал.

Я попытался использовать setfacl -Rdm с группой, включающей root и foobar, и это привело к тому, что foobar больше не мог обслуживать файлы в своем каталоге.

Например:

-rw-r--r--  1 foobar  foobar    125 May 15 11:26 die.html
-rw-r--r--  1 root    root      127 May 15 12:20 dies.html

В этом случае файл «die.html» обслуживается правильно, но «dies.html» приводит к 404 из-за владельца и группы.

Есть мысли о том, как решить эту проблему? Повторюсь: мне нужно, чтобы это происходило со всеми будущими файлами, а не просто с файлами, которые существуют в настоящее время.

3 ответа3

0

Создайте новую группу, скажем devs, и поместите всех пользователей, которым нужен доступ для чтения / записи к вашим файлам, в эту группу. А затем измените группу этого каталога на devs.

С помощью этой команды:

chgrp -R devs /home/foobar/public_html/dev

После этого установите бит setgid в этом каталоге с помощью этой команды:

chmod -R g+s /home/foobar/public_html/dev

С этого момента все файлы, созданные в этом каталоге, будут принадлежать разработчикам группы, и все пользователи в этой группе будут иметь доступ на чтение / запись к файлам (зависит от разрешений).

Если вы хотите узнать, что такое setgid, проверьте эту ссылку.

0

Сделайте ваш выбор:

chown foobar:foobar *

chown foobar:foobar dies.html

chown foobar *

chown foobar dies.html

Итак, чтобы все созданные файлы принадлежали foobar, вот что вам нужно сделать:

запустите crontab -e и введите это:

* * * * * while true; do chown foobar:foobar -R /home/foobar/public_html/dev/* & sleep 1; done

Сохраните его, и пусть cron получит разрешения

0

Измените свою личность на foobar после установки ssh туннеля, введя su foobar и введите пароль foobar.

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