Назад | Перейти на главную страницу

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

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

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

В моем 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каталог, по крайней мере, на мой взгляд.

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

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

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

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