Кто такие «другие», если мы предоставляем все сервисы на нашем сервере пользователю, «другие» не существуют, верно? Например, если мы ставим Apache для пользователя, устанавливаем /var/www
chowned apache
и вводим chmod 700
его, оно должно работать, верно?
Вот как работают разрешения, объясненные очень кратко:
Первая цифра для фактического владельца файла (проверьте , кто обладание файла ls -l
и изменить его chown
)
Вторая цифра для группы файла (хотя владелец файла не должен обязательно быть в той же группе , что является владельцем файла)
Третья цифра является кто - то другой, то есть не владелец файла , и все не в группе.
Таким образом, если вам chmod
файл с размером 700 и он принадлежит apache
, даже ваш «обычный» пользователь не сможет прочитать, записать или выполнить его. Это очень ограничительно и необходимо только в редких случаях - например, когда вы хотите защитить свой закрытый ключ SSH, он получает 600
разрешения. Для Apache это может даже привести к другим проблемам, кроме того факта, что с вашей обычной учетной записью пользователя вы больше не сможете редактировать какие-либо файлы /var/www
.
Поэтому, вообще говоря, вам не нужно удалять права на чтение ( x00
) для других.
Вы можете разрешить apache
владеть /var/www
каталогом, но с 644
(возможно, только для чтения). Другой подход , который я часто использую добавление собственных пользователей и пользователя Apache на новую www-users
группу, а затем chmodding файлов /var/www
с 775
. Таким образом, вы и Apache можете писать в файлы. Смотрите здесь для получения дополнительной информации: групповые разрешения для apache
В чем разница между «выполнить» и «прочитать»?
Исполняемые файлы могут запускаться непосредственно пользователем - прямо из оболочки. Чтобы продемонстрировать это, давайте напишем короткий файл и назовем его «тест». Добавьте следующий контент:
echo "I am executable"
Сохраните файл. Теперь, в вашей оболочке, попробуйте войти ./test
. Вы получите ошибку « -bash: ./test: В доступе отказано ». Это связано с тем, что по умолчанию вновь созданные файлы не имеют разрешений на выполнение. Если вы добавите разрешение на выполнение, оно будет работать.
$ chmod +x test
$ ./test
I am executable
Теперь это был всего лишь тестовый сценарий, но, как правило, все двоичные файлы (например, скомпилированные программы) также нуждаются в наборе разрешений на выполнение, чтобы вы могли на самом деле запускать и что-то делать с ними, а не только читать.
Это, например, системные программы, в основном находящиеся в /bin
. Беги, ls -l /bin
чтобы проверить их разрешения. Как видите, они принадлежат вам root
, и вы не можете их изменить, но вы всегда можете их выполнить.
Так что это тоже функция безопасности, так как вы можете ограничить выполнение некоторых скриптов и двоичных файлов для некоторых пользователей.
Чтобы узнать больше о разрешениях Unix, прочитайте статью в Википедии . Основные разрешения, которые вы знаете как «чтение-запись-выполнение», существуют уже давно, но являются лишь частью того, что вы называете списками контроля доступа - которые предлагают гораздо больше функциональности, чем эта.
Каковы права доступа к файлам по умолчанию для всей системы после чистой установки (например, в Ubuntu)?
Они различаются в зависимости от каталога и владельца. Некоторые файлы и каталоги зарезервированы системой и принадлежат root
. Тем не менее, в большинстве случаев вы сможете читать их со своей обычной учетной записью.
Другие каталоги, такие как ваша домашняя папка, очевидно, принадлежат вашему пользователю. Возможно, имеет смысл отказать в разрешении на чтение другим пользователям на машине, если они разделены между несколькими людьми - в конце концов, вы не хотите, чтобы ваши личные материалы были раскрыты.
Наконец, некоторые файлы исполняются по умолчанию (например, в /bin
), а другие - нет (например, файлы конфигурации в /etc
).
Filesystem Hierarchy Standard определяет предполагаемое использование для каталогов , найденных в системах Linux. Вы можете почти «угадать», какие разрешения должны быть основаны на том, что вы хотите сделать с каталогом.