Кто такие «другие», если мы предоставляем все сервисы на нашем сервере пользователю, «другие» не существуют, верно? Например, если мы ставим 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. Вы можете почти «угадать», какие разрешения должны быть основаны на том, что вы хотите сделать с каталогом.
.php
файлы обычно не исполняемые. Проще говоря, они читаются Apache только тогда, когда вы указываете в браузере, например,http://example.com/file.php
прежде чем Apache сможет показать вывод, они должны быть интерпретированы вашей установкой PHP, но Apache позаботится об этом. Вы можете теоретически сделать исполняемый файл PHP и запустить его как скрипт - в том же духе, что и в нашемtest
файле, но это редко используется.Просто хочу добавить, что разрешение на выполнение имеет разные эффективные значения для каталогов:
Для файлов :
Для папок :
Нет, отдельного разрешения на удаление для каталогов нет.
(Получил эту информацию здесь .)
источник
Я не эксперт по Linux, но я все же пытаюсь ответить.
Каждая запись файловой системы имеет ассоциированного пользователя и группу. Полномочия пользователя обрабатываются флагами пользователя. Пользовательские разрешения пользователей, входящих в одну группу, обрабатываются флагами «группа». Все остальные пользователи обрабатываются флагами "другие".
«читать» означает, что он говорит. «выполнить» означает, что вы можете запустить файл (например, команду) или вы можете перечислить каталог.
Что касается разрешения по умолчанию, я не уверен. Я думаю, это может быть настроено как-то и, следовательно, может быть различным для каждого пользователя.
источник
Чтобы дать вам достойный ответ на вопрос 2, по крайней мере, вот сводная таблица, показывающая, что вы можете / не можете делать:
Важно помнить, что это не ПОЛЬЗОВАТЕЛЬ, считывающий файл файла в память для его выполнения, это КЕРНЕЛ, делающий это от имени ПОЛЬЗОВАТЕЛЯ.
источник
Это может быть сложно, если вы хотите исключить все остальные. Посмотрите на этот список из моего файла / etc / passwd (права доступа и тому подобное удалены для ясности):
root демон демон sys sync игры man lp mail новости прокси uucp www-список резервных копий irc gnats libuuid syslog messagebus usbmux haldaemon nobody
a {это я, и ниже вот вещи, которые я установил, прежде всего, поставленные с системой}
avahi mysql пульс rtkit saned робость дидивики
Например, удалите разрешения из lp или uucp, и вы прервете печать. удалите разрешение из bin, sys или daemon, и, вероятно, многое сломается. irc, игры, почта, новости и резервные копии, вероятно, могут быть безопасно удалены (если вы не используете их через систему, а не через браузер). остальное я оставляю на ваши навыки поисковой системы.
Это Ubuntu / Bodhi Linux, хотя, и другие системы могут иметь меньше дополнений. все эти другие, однако, должны предотвратить запуск всего от имени пользователя root. я представляю, что можно создать систему, в которой каждый файл может быть прочитан / записан / исполнен только одним из пользователей системы (бар root), но я не уверен, что его пытались.
Выполнить - это разрешение на запуск кода. Чтение - это разрешение только на просмотр (и копирование?).
источник