Изучите все, что вам нужно знать о разрешениях файлов в Linux. Также узнайте, как изменить права доступа и собственности к файлам.
По дизайну Linux – многопользовательская операционная система. В корпоративной системе было бы несколько пользователей, обращающихся к одной и той же системе. Но если любой пользователь может получить доступ и изменить все файлы, принадлежащие другим пользователям или системным файлам, это, безусловно, будет угрозой безопасности.
Вот почему UNIX и, следовательно, Linux (Linux – Unix-подобная система) имеют встроенную меру безопасности. Это гарантирует, что доступ к файлу или каталогу может быть изменен только желаемыми пользователями.
К какому файлу будет обращаться пользователь, решает два фактора в Linux:
Понимание прав собственности на файл и разрешения имеет решающее значение для пользователя Linux. Здесь мы подробно объясним эти условия.
Каждый файл и каталог в Linux имеет трех типов владельцев:
Пользователь является владельцем файла. Когда вы создаете файл, вы становитесь владельцем файла. Собственность также может быть изменена, но мы это позже.
Каждый пользователь является частью определенной группы (групп). Группа состоит из нескольких пользователей, и это один из способов управления пользователями в многопользовательской среде.
Например, если у вас есть команда разработчиков, команда QA и команды sysadmin, обращающиеся к одной и той же системе, вы должны создать для них отдельные группы. Таким образом, вы можете эффективно управлять файлами и безопасностью системы. Это экономит время, потому что вместо того, чтобы вручную добавлять разрешения для каждого пользователя, вы можете просто добавить их в группу и изменить разрешение для группы. Вы увидите, как это сделать позже в этой статье.
Даже если вы являетесь единственным пользователем системы, вы по-прежнему будете частью многих групп. Такие дистрибутивы, как Ubuntu, также создают группу с именем, аналогичным имени пользователя.
Другие – это в основном супергруппа со всеми пользователями в системе. В принципе, любой, кто имеет доступ к системе, принадлежит этой группе.
Другими словами, «Пользователь» – это один пользователь, группа представляет собой набор пользователей, а «Другой» состоит из всех пользователей системы.
Каждый файл и каталог в Linux имеет три разрешения для всех трех типов владельцев:
Разрешения для файлов
Разрешения для каталогов
Теперь, когда вы знаете основную терминологию разрешений и прав на файл, пришло время увидеть его в действии.
Если вы используете команду ls с параметром -l в файле, вы увидите такой вывод:
-rwxrw-r-- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt
Позвольте нам объяснить этот результат с изображением:
Подробно весь вывод:
Теперь, когда вы поняли вывод команды ls -l, давайте сосредоточимся на части разрешения файла.
В приведенной выше команде вы видите разрешение файла, подобное этому в девятизначном формате :
rwxrw-r--
Каждая буква обозначает конкретное разрешение:
Разрешения всегда находятся в порядке читать, писать и выполнять, т. е. rwx. И тогда эти разрешения устанавливаются для всех трех своего рода владельцев (см. раздел прав собственности) в порядке: Пользователь, Группа и Другое.
Эта картина лучше объяснит:
Итак, если вы посмотрите на приведенную выше картинку, вы можете сказать следующие вещи о разрешениях файлов:
Теперь, если вы снова увидите всю команду ls -l, вы можете прочитать права на файлы и права собственности вместе.
-rwxrw-r-- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt
Файл andreyex.txt принадлежит пользователю andreyex а также andreyex имеет разрешение на чтение, запись и выполнение. Все члены группы andreygroup имеют доступ на чтение и запись к этому файлу, в то время как все остальные имеют доступ только к чтению этого файла.
Один пользователь может быть членом нескольких групп, но только основная группа пользователя является владельцем группы файла, созданного пользователем. Основная группа пользователя может быть найдена с помощью идентификатора команды –gn <username>. Оставьте имя пользователя пустым, если вы пытаетесь найти свою собственную основную группу.
Теперь, когда вы знаете, как узнать разрешения на файл, давайте посмотрим, как вы можете изменить разрешение и права собственности на файл.
Вы можете использовать команду CHMOD для изменения разрешений на файл в Linux.
Общая информация : Разрешения назывались режимом доступа и, следовательно, CHMOD была короткая форма изменения режима доступа.
Существует два способа использования команды chmod:
В абсолютном режиме разрешения представлены в числовой форме (точнее, восьмеричная система). В этой системе каждое разрешение файла представлено числом.
С помощью этих числовых значений вы можете комбинировать их, и, таким образом, один номер может использоваться для представления всего набора разрешений.
Число | разрешение |
0 | – |
1 | -x |
2 | -w- |
3 (т.е. 2 + 1) | -wx |
4 | r- |
5 (т.е. 4 + 1) | г-х |
6 (т.е. 4 + 2) | rw- |
7 (т.е. 4 + 2 + 1) | rwx |
Можете ли вы догадаться о разрешении файла в цифрах в файле andreyex.txt в нашем примере? Это пишут, это 754.
Теперь, когда вы знаете, какой номер представляет это разрешение, давайте посмотрим, как изменить разрешение файла с помощью этих знаний.
Предположим, вы хотите изменить разрешение файла на andreyex.txt, чтобы каждый мог читать и писать, но никто не может его выполнить? В этом случае вы можете использовать команду chmod следующим образом:
chmod 666 andreyex.txt
Если вы перечислите andreyex.txt сейчас, вы увидите, что разрешение было изменено.
-rw-rw-rw- 1 andreyex andreyex 457 Aug 18 16:20 andreyex.txt
Проблема с абсолютный режим заключается в том, что вы должны всегда предоставлять три номера для всех трех владельцев, даже если вы хотите изменить разрешение для одного владельца.
Здесь вы можете использовать символический режим с помощью команды chmod.
В символическом режиме владельцы обозначаются следующими символами:
Символический режим использует математические операторы для выполнения изменений разрешения:
Теперь, когда вы знаете, давайте посмотрим, как использовать команду chmod в символическом режиме.
В нашем предыдущем примере, если вы хотите добавить разрешение на выполнение для владельца группы, вы можете использовать команду chmod следующим образом:
chmod g+x andreyex.txt
Если вы сейчас просмотрите разрешения для этого файла, вы увидите, что теперь добавлено разрешение на выполнение:
-rw-rwxrw- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt
Вы также можете объединить несколько изменений разрешений в одну команду. Предположим, вы хотите удалить права на чтение и запись и добавить разрешения на выполнение для других. Вы также хотите добавить разрешение на выполнение для пользователя, Вы можете сделать все это по одной команде:
chmod o-rw+x,u+x andreyex.txt
Полученные разрешения будут такими:
-rwxrwx--x 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt
Если вы хотите одновременно изменить разрешения для всех трех пользователей, вы можете использовать его следующим образом:
chmod a-x andreyex.txt
Это приведет к удалению разрешения на выполнение для всех.
-rw-rw---- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt
Теперь, когда вы знаете, как изменить разрешение файла, давайте посмотрим, как изменить права собственности на файл.
Чтобы изменить право собственности на файл, вы можете использовать команду chown. Вы можете легко догадаться, что chown означает владельца изменения.
Вы можете изменить владельца пользователя файла следующим образом:
chown <new_user_name> <filename>
Если вы хотите изменить пользователя и группу, вы можете использовать команду cown следующим образом:
chown <new_user_name>:<new_user_group> <filename>
Если вы просто хотите изменить группу, вы можете использовать команду chwon таким образом:
chown :<new_user_group> <filename>
или команду chgrp, специально используемую для изменения владельца группы файла или каталога. Вы можете догадаться, что команда chgrp означает группу изменений.
chgrp <new_user_group> <filename>
В нашем примере до сих пор, если вы хотите изменить владельца и группу пользователей на root, вы можете использовать команду chown следующим образом:
sudo chown root:root andreyex.txt
Это изменит право собственности на файл на root как для пользователя, так и для группы.
-rw-rw---- 1 root root 457 Aug 18 16:20 andreyex.txt
Заметьте, что нам пришлось использовать sudo с chown? Это связано с тем, что здесь задействован root, и чтобы справиться с корнем, вам нужны права суперпользователя.
Подумайте о ситуации, когда обычный пользователь не имеет никаких разрешений, группа имеет разрешение на чтение, в то время как другие имеют права на чтение и запись.
----r--rw- 1 andreyex andreygroup 457 Aug 18 16:20 andreyex.txt
Теперь, если пользователь andreyex пытается прочитать файл с помощью команды cat или less, сможет ли он это сделать? Ответ – нет, потому что у него нет разрешения на чтение.
Но пользователь andreyex является частью группы andreygroup, и у группы есть доступ на чтение. Другой имеет право на чтение и запись. Это должно означать, что каждый (включая пользователя andreyex) может читать и писать файл, не так ли? Неправильно!
В Linux приоритет от пользователя, а затем от группы, а затем и от другого. Система Linux проверяет, кто инициировал этот процесс (в нашем примере cat или less). Если пользователь, инициировавший этот процесс, также является владельцем пользователя, устанавливаются биты прав пользователя.
Если владелец файла не инициировал этот процесс, система Linux проверяет группу. Если пользователь, инициировавший процесс, находится в той же группе, что и группа владельца файла, установлен бит групповых разрешений.
Если этот владелец процесса даже не входит в группу в качестве владельца группы файла, тогда устанавливаются другие биты разрешения.
Существуют некоторые расширенные разрешения для файлов, такие как установка Sticky bit для предотвращения удаления файлов и т. д.
Надеюсь, вам понравилась статья, и теперь у вас есть лучшее понимание того, как права доступа к файлам работают в Linux.
Если у вас есть какие-либо вопросы или предложения или вы просто хотите сказать спасибо, пожалуйста, оставьте комментарий ниже. Если вам понравилась статья, пожалуйста, поделитесь ею в социальных сетях или на разных форумах. Это поможет нам и другим пользователям Linux.
Спасибо, одно из лучших объяснений
Отличная статья, отличный сайт, забираю его в закладки)
Действительно очень доходчиво… Спасибо. Сайт идет в закладки.