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