Причина, по которой каждому пользователю запрещено читать другие пользовательские файлы, состоит в том, что у некоторых пользователей есть свои собственные файлы config.php, которые содержат конфиденциальную информацию, в то время как некоторым пользователям не нравится, что другие могут видеть структуру файлов и исходный код своего контента. системы управления, поэтому я пытаюсь создать систему, в которой пользователь имеет доступ к своему домашнему каталогу в качестве папки верхнего уровня. Т.е. не умеет 'cd /' и видеть чужие файлы и системные папки. Я думаю, из комментариев, что это не так просто.
В отличие от постановки задачи в самом вопросе, это на самом деле вполне решаемая проблема. Ниже приведена одна возможность, как это решить.
Во-первых, сделайте каждый домашний каталог доступным только его владельцу и никому другому. Другими словами, режим 0700.
Во-вторых, установите umask пользователей на 0077. Это означает, что по умолчанию файлы будут создаваться с битами разрешений группы и мира, установленными на ноль, что разрешает доступ только владельцу.
Если конкретный файл должен быть доступен какому-то другому процессу (это файл .php, может, веб-сервер?), Предоставьте этому процессу свое собственное членство в группе, установите для этой группы принадлежность группы к домашним каталогам и установите режим до 0710. Бит "выполнить" в каталоге разрешает доступ, если известно конкретное имя подкаталога или файла, к которому требуется доступ, но не разрешает перечисление содержимого каталога (это "чтение" в каталоге).
Любые подкаталоги в домашних каталогах пользователей, которые должны быть доступны для того же процесса, могут иметь относительно разрешающие биты разрешений для мира. (Например, файлы 0644 и каталоги 0755 или 0751.)
Если желательно, предоставьте пользователям "общую" область, возможно, за пределами их домашних каталогов, которая имеет более разрешительный набор разрешений. Может быть, для каждого пользователя есть /home /$ USER и /share /$ USER, где каталог в /share имеет разрешения 0755 и принадлежит соответствующему пользователю. Возможно, добавьте символическую ссылку в домашний каталог пользователя, указывающую на его "общий" каталог, и скажите им, что общие файлы других пользователей находятся в /share /$ USER. Если вы идете по этому маршруту, вы можете использовать вместо этого umask 0022, который по умолчанию будет использоваться файлами только для чтения не владельцами. Обязательно сообщите пользователям, что файлы, которые они хранят в /share, доступны для чтения всем пользователям системы.