Как сделать так, чтобы файлы и каталоги, созданные от имени пользователя root, были доступны для чтения и выполнения другому пользователю?

Как сделать так, чтобы файлы и каталоги, созданные от имени пользователя root, были доступны для чтения и выполнения другому пользователю?

Я использую рабочие пространства 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 из-за владельца и группы.

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

решение1

Выбирайте:

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 взять на себя управление разрешениями.

решение2

измените свою идентификацию пользователя на foobar после установки SSH-туннеля, введя su foobarи указав пароль foobar.

решение3

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

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

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

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

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

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

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

Связанный контент