Привет, ребята. Я создал небольшой общий хостинг для друзей.

Я установил права доступа к файлу chmod

chmod 711 /home 
chmod 711 /home/testuser 
chmod 755 /home/testuser/public_html 
chmod o+r /home/testuser/public_html/index.htm 

Как мне остановить пользователя, подключенного к его собственному ftp, от удаления файла html.htm, а также с общедоступным каталогом, установленным в chmod 755. Я обнаружил, что он ничего не может сделать в каталоге, например, загрузить / удалить?

Дополнительная информация: Я бегал

setsebool -P httpd_enable_homedirs true
chcon -R -t httpd_sys_content_t /home/testuser/public_html

но никакого эффекта?

3 ответа3

1

Традиционные разрешения Unix означают, что если пользователь может создавать файлы в каталоге, он также может удалять файлы в нем - даже если сам файл защищен от чтения и не принадлежит им. Таким образом, вы не можете защитить html.htm (что бы это ни было), если он находится в каталоге, к которому у них должен быть доступ на запись / выполнение. Возможно, ACL могут помочь, как предполагает @vonbrand (но я не знаком с ними, и @vonbrand не обещает, что это сработает).

  1. Нет необходимости делать каталог глобально доступным для записи или глобально исполняемым, но вам нужно убедиться, что ваш демон веб-сервера имеет доступ для чтения к файлам. (Вероятно, он работает как группа www-data --but check). Поэтому убедитесь, что владелец каталога совпадает с uid, который пользователь получает при подключении, и вы можете сохранить его в режиме 750.

  2. Если вам нужно разрешить нескольким uid записывать в один и тот же каталог, вам нужно включить доступ для групповой записи (g+w). В этом случае я бы использовал группу, отличную от www-data , и предоставил бы доступ только для чтения apache как "прочее". Другими словами, режим 775.

  3. Также следите за своей umask , которая контролирует права доступа к новым файлам, созданным пользователями. Если у вас есть отдельные учетные записи, используйте umask 022 для соответствия. Если у вас есть общий каталог группы, используйте umask 002 чтобы пользователи могли редактировать файлы друг друга. (Так как они смогут удалять и заменять файлы, нет смысла их защищать).

1

К кому подключается пользователь? Как вы настроили, только владелец может писать в public_html.

Кроме того, в настоящее время он настроен так, что пользователи могут входить в /home/testuser но не читать его. Вы можете захотеть что-то вроде:

chmod 711 /home 
chmod 755 /home/testuser    
chmod 777 /home/testuser/public_html 
chmod 644 /home/testuser/public_html/index.htm  
chown root /home/testuser/public_html/index.htm  
0

Ищите ACL, которые могут решить вашу проблему. Соответствующими ручными записями являются acl(5), setfacl(1) и getfacl(1). Однако поддержка зависит от файловой системы.

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