Debian - как запретить глобальный доступ на чтение для всех файлов?

В моем debian все файлы, даже системные, имеют разрешения rw-r - r--, так что это означает, что все пользователи могут просматривать ЛЮБОЙ файл, даже некоторую конфигурацию системы или файлы базы данных и так далее.

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

3 ответа

Решение

Я не думаю, что отказ в доступе ко всем системным файлам для всех пользователей - это хорошая идея. Некоторые из этих файлов необходимы для работы в системе. Но есть несколько способов ограничить определенных пользователей. Например, если вы хотите отказать пользователю joe доступ к чему-либо в /etc, вы могли бы использовать ACLs (управляется командами setfacl/getfacl), например так:

setfacl -Rm u:joe:--- /etc

Другие идеи заключаются в том, чтобы использовать политику selinux или держать пользователей в chroot. Я думаю chmod 700 в системных каталогах это плохая идея, потому что она запрещает доступ различным системным пользователям, таким как nobody, ftp или же mail, которые используются некоторыми системными службами.

В моем debian все файлы, даже системные, имеют разрешения rw-r -r--, так что это означает, что все пользователи могут просматривать ЛЮБОЙ файл, даже некоторую конфигурацию системы или файлы базы данных и так далее.

Если вы не поиграли с разрешениями, они абсолютно безупречны. Пожалуйста, не меняйте их, особенно не в этой окружности.

Системные (конфигурационные) файлы предназначены и сохраняются для прочтения всеми. В некоторых случаях они должны быть читаемы (/etc/bash.bashrc или же /etc/default) и в других случаях они уже защищены (/etc/shadow).

Файлы базы данных, которые в Debian находятся в /var/lib также защищены.

drwx------ 10 mysql   mysql   4.0K Feb 26 12:49 /var/lib/mysql

Вы можете предположить, что для большинства программ из репозиториев Debian разрешения безопасны, как и они. Есть исключения, конечно. Веб-хостинг является одним из них, где вам обычно приходится вносить большие изменения в настройки корневого документа и файлов сокетов PHP-FPM.

Если вы не совсем знаете, какое значение имеет изменение разрешений для папок "по умолчанию", вам следует отказаться от этого.

Единственное место, где разрешения по умолчанию действительно слишком либеральны, находится в пределах /homeкаталог, по крайней мере, на мой взгляд.

Интересным аспектом разрешений Linux является то, что разрешение по умолчанию обычно составляет 777 (-rwxrwxrwx), а затем umask используется для автоматического удаления разрешений, так что при создании новых каталогов или файлов вновь созданный каталог или файл не 777, а вместо этого это что-то вроде 644 (-rw-r- r--) или 666 (-rw-rw-rw-). Если вы хотите удалить разрешение на чтение по умолчанию для всех файлов / каталогов, вы можете настроить umask. Однако изменение umask, вероятно, не является решением стоящей перед вами задачи.

Я думаю, что решение было бы контролировать доступ с помощью chmod и chown или setfacl и getfacl. Например, допустим, что только root должен иметь доступ к /var/private. Вы можете использовать следующие команды, чтобы только root мог читать, записывать и получать доступ к каталогу и файлам в каталоге.

Установите root как владельца и владельца группы /var/private:

chown -R root:root /var/private

Вы также можете установить разрешение для каталога, чтобы только root имел доступ к каталогу (-rwx------):

chmod 0700 /var/private

Затем вы можете рекурсивно установить разрешение для всех файлов в каталоге, чтобы только root мог читать, записывать и выполнять файлы в каталоге (-rwx-----):

chmod 0700 -R /var/private/* 

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

Другие вопросы по тегам