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 взаимодействовать с записями базы данных.