У меня есть папка public_html для пользователя. Меняю разрешения по инструкции на сайте:
chmod 701 /home/*
chmod 705 /home/*/public_html
chmod 604 /home/*/public_html/*.html
chmod 705 /home/*/public_html/cgi-bin
и файлы уже в public_html
затем будут видны в Интернете.
Если пользователь загружает новые файлы в public_html
папка, то ее не видно.
Я также побежал chcon -R -t httpd_user_content_t home/*/public_html
.
Что мне не хватает, чтобы пользователь мог загружать свои файлы и видеть их в Интернете?
Как упоминалось в staticsan, это похоже на установку случая, которую исправит umask. Если вам нужен более тонкий контроль над разрешениями, не делая так, чтобы КАЖДЫЙ файл, который создают пользователи, получал доступ к миру, вы можете использовать списки управления доступом к файлам, чтобы установить значение по умолчанию для каталогов public_html для других чтения + выполнения с
setfacl --set d:o:rx /home*/public_html
Независимо от того, что установлено в umask, если пользователь может писать в этот каталог, значения по умолчанию для файла всегда будут o + r (x для каталогов). Ваш вывод ls -l будет выглядеть примерно так:
drwxrwxr-x + 3 пользователя пользователь 4096 02.12.2009 21:30 public_html /
Плюс в конце разрешений показывает, что есть ACL, который вы можете просмотреть, используя
getfacl public_html
Существует компромисс, поскольку теперь разрешения неочевидны, и вам нужно getfacl, чтобы увидеть более подробную информацию, но вы получаете больше контроля над тем, где именно вы хотите, чтобы разрешения были отличными от глобальных по умолчанию.
Вам нужно проверить их umask
настройка как это контролирует разрешения, которые получают вновь созданные файлы. Большинство дистрибутивов устанавливают маску на 022
который предоставит файлы для группового чтения и общего чтения, но другие дистрибутивы имеют более строгую маску, которая устанавливает только права владельца.