Я создаю систему для нескольких веб-мастеров для хранения и обслуживания своих веб-сайтов. У них есть свои учетные записи Linux и домашние каталоги. Их папки public_html связаны через ln -s
команда в html-каталог веб-сервера /usr/share/nginx/html/
так что они видны в интернете.
Но пользователи могут смотреть домашние папки других пользователей. Я бы хотел запретить им смотреть папки, которые им не принадлежат.
Как его получить?
Вот информация о привилегиях пользователя.
abc@localhost:/home/gameboy$ sudo namei -mo /home/abc/public_html/info.php
[sudo] password for abc:
f: /home/abc/public_html/info.php
drwxr-xr-x root root /
drwxr-xr-x root root home
drwxr-xr-x abc abc abc
drwxr-xr-x abc abc public_html
-rw-r--r-- abc abc info.php
abc@localhost:/home/gameboy$ id abc
uid=1002(abc) gid=1002(abc) grupy=1002(abc),27(sudo)
abc@localhost:/home/gameboy$
Я вижу, что пользователь abc
является членом sudo
группа. Это означает (по крайней мере, в системах Ubuntu), что этот пользователь может выполнять команды с помощью sudo (получить root-доступ).
Если это относится ко всем пользователям, о которых вы говорите, то вы не можете запретить им доступ к чужим файлам. Пользователь может просто стать пользователем root и делать все, что он / она хочет.
Если мы пропустим этот пункт, вам необходимо установить разрешения для каждого файла / папки так, чтобы он был доступен для чтения / записи только пользователю и доступен для чтения только определенной группе, например www-data
чтобы веб-сервер имел к ним доступ (chmod 750
для папок и chmod 740
для файлов).