- Ubuntu Documentation
- Права доступа в системе Linux
- Команда chmod
- Символьная форма прав доступа
- Числовая форма прав доступа
- Примеры
- Символьная форма
- Команда chown
- Команда chgroup
- Разрешения и права доступа к файлам Linux с примерами
- Владение файлами в Linux
- Пользователь
- Группа
- Другие
- Разрешения для файлов в Linux
- Общие сведения о разрешениях и правах доступа к файлам в Linux
- Изменить права доступа к файлам в Linux
- Использование chmod в абсолютном режиме
- Использование chmod в символическом режиме
- Изменение владельца файла в Linux
- Бонус Совет: Есть ли приоритет в разрешениях на файлы?
- Что еще?
Ubuntu Documentation
Candidate for Deletion
This article may not be appropriate for this wiki, and may be deleted. More info.
Содержание
Права доступа в системе Linux
Поскольку Linux (да и UNIX вообще) — многопользовательская OS, в ней существует система прав доступа к файлам, служащая для защиты файлов каждого пользователя от влияния других пользователей системы.
Права доступа подразделяются на три типа:
чтение (read)
запись (write)
выполнение (execute)
Разрешение на чтение позволяет пользователю читать содержимое файлов, а в случае каталогов — просматривать перечень имен файлов в каталоге (используя, например, команду ls). Разрешение на запись позволяет пользователю писать в файл, изменять его или удалять. Для каталогов это дает право cоздавать в каталоге новые файлы и каталоги, или удалять файлы в этом каталоге. Наконец, разрешение на выполнение позволяет пользователю выполнять файлы (как бинарные программы, так и командные файлы). Если на файле стоит атрибут Execute, то независимо от его расширения он считается программой, которую можно запустить. (Вот почему в *nix не принято ставить исполняемым файлам расширения по типу DOS’овских *.com, *.exe, *.bat. Вообще в Unix/Linux нет такого жесткого понятия расширение файла, как в Dos/Windows, и система сама определяет тип файлов независимо от их расширения, но это — уже другая история. ). Так же атрибут выполнения может стоять у shell-скриптов, CGI-скриптов, и у всего, что можно хоть как-то запустить. Разрешение на выполнение применительно к каталогам означает возможность выполнять команды вроде cd.
Эти типы прав доступа могут быть предоставлены для трех классов пользователей:
владельцы — у каждого файла в Linux’e есть один владелец.
группы — с каждым файлом связана группа пользователей этого файла.
остальные пользователи.
Владельцем файла становится юзер, который создал этот файл. Короче говоря, для файла все юзеры делятся на 3 типа: хозяин, или владелец, юзеры, состоящие в одной группе с владельцем, и все остальные юзеры. Для каждого типа — свои права. Учтите, что директории и все системные устройства в UNIX являются обычными файлами. Тот же самый /dev/fd0 — это не сам Floppy disk, а всего лишь файл, связанный с флопповодом. Поэтому, если root запретил юзеру доступ к этому файлу, тот не сможет использовать флопповод (так же обстоят дела с модемами, хардами и т.п.). Владельцем всех системных файлов является root. Он же имеет право забирать файлы у одного юзера и передавать их другому (менять владельца).
Команда chmod
Изменить права доступа к файлу может либо его владелец, либо сам root. Делается это командой chmod. Существует две формы представления прав доступа: символьная и цифровая.
Символьная форма прав доступа
Если войти в любой каталог, где есть файлы, и набрать ls -l, то появится список всех файлов в этом каталоге и права доступа в символьной форме. Строка прав доступа состоит из 10 символов. Первый символ указывает на тип файла: d — директория, — — обычный файл. Три последующих — права доступа владельца к этому файлу. Если первый символ из этих трех — r, владелец имеет право читать этот файл, а если —, то не имеет. Следующие 2 символа — w — писать и x — запускать. Если вместо них стоит —, значит, владелец этого права не имеет. Еще 3 символа — права доступа группы, еще три — права всех остальных пользователей.
drwxrwxrwx — директория, к которой все имеют любые права доступа.
-rwxr--r-- — обычный файл, владелец может делать все, а остальные — только читать.
-r-------- — обычный файл, который владелец может только читать, а остальные пользователи не видят.
Важно заметить, что права доступа, которые имеет файл, зависят также от прав доступа к каталогу, в котором этот файл находится. Например, даже если файл имеет -rwxrwxrwx, другие пользователи не смогут до него добраться, если у них не будет прав на чтение и выполнение каталога, в котором находится файл. Например, если юзер захочет ограничить доступ ко всем своим файлам, он может просто изменить права доступа своего домашнего каталога /home/user на drwx------. Таким образом, никто другой не будет иметь доступ в его каталог, а следовательно посторонним будут недоступны и все файлы. Так что, пользователь может не заботиться об индивидуальной защите своих файлов. Другими словами, чтобы иметь доступ к файлу, вы должны иметь доступ ко всем каталогам, лежащим на пути от корня к этому файлу, а также разрешение на доступ собственно к этому файлу. Обычно пользователи UNIX весьма открыты всеми своими файлами. По умолчанию файлам устанавливается защита -rw-r--r--, которая позволяет другим пользователям читать файлы, но ни коим образом их не менять. Каталогам обычно устанавливаются права доступа drwxr-xr-x, что позволяет другим пользователям ходить с правами экскурсантов по вашим каталогам, но ничего в них не трогать и не записывать.
Но многие пользователи хотят держать других подальше от своих файлов. Установив права доступа файла -rw-------, вы никому не покажете этот файл и не дадите записать в него. Также хорошо закрывает файлы защита соответствующего каталога drwx------.
С правами доступа в символьной форме chmod работает так:
Кратко, вы выбираете из all (все), user (пользователь), group (группа) или other (другие). Далее указываете, либо вы добавляете права (+), либо лишаете прав (—). И наконец, вы указываете один или несколько режимов: read, write или execute.
Числовая форма прав доступа
Теперь права доступа в числовой форме. Для некоторых эта форма может показаться более простой. Надо запомнить только следующее:
- 400 — владелец имеет право на чтение
- 200 — владелец имеет право на запись
- 100 — владелец имеет право на выполнение
- 40 — группа имеет право на чтение
- 20 — группа имеет право на запись
- 10 — группа имеет право на выполнение
- 4 — остальные имеют право на чтение
- 2 — остальные имеют право на запись
- 1 — остальные имеют право на выполнение
Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу.
Примеры
Символьная форма
Дает всем пользователям право читать файл stuff.
То же самое, что и ранее (a — по умолчанию).
Лишает права на выполнение всех, кроме владельца.
Разрешает владельцу все (read, write и execute).
Запрещает все (read, write и execute) пользователям категории другие (other).
владелец может делать все, а остальные — только читать.
все имеют право только на чтение.
владелец может читать и выполнять, остальные — только выполнять.
Классическая команда. Скрипт — это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.
Команда chown
Изменение владельца файла осуществляется командой chown, например:
Для передачи каталога надо вводить:
Команда chgroup
Изменение группы, которой принадлежит файл.
Для передачи каталога надо вводить:
FilePermissionsRu (последним исправлял пользователь ckimes 2017-09-02 05:31:46)
The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details
Источник
Разрешения и права доступа к файлам Linux с примерами
Главное меню » Операционная система Linux » Разрешения и права доступа к файлам Linux с примерами
Вот почему UNIX и, следовательно, Linux (Linux – Unix-подобная система) имеют встроенную меру безопасности. Это гарантирует, что доступ к файлу или каталогу может быть изменен только желаемыми пользователями.
К какому файлу будет обращаться пользователь, решает два фактора в Linux:
- Владение файлами
- Разрешение файла
Понимание прав собственности на файл и разрешения имеет решающее значение для пользователя Linux. Здесь мы подробно объясним эти условия.
Владение файлами в Linux
Каждый файл и каталог в Linux имеет трех типов владельцев:
Пользователь
Пользователь является владельцем файла. Когда вы создаете файл, вы становитесь владельцем файла. Собственность также может быть изменена, но мы это позже.
Группа
Каждый пользователь является частью определенной группы (групп). Группа состоит из нескольких пользователей, и это один из способов управления пользователями в многопользовательской среде.
Например, если у вас есть команда разработчиков, команда QA и команды sysadmin, обращающиеся к одной и той же системе, вы должны создать для них отдельные группы. Таким образом, вы можете эффективно управлять файлами и безопасностью системы. Это экономит время, потому что вместо того, чтобы вручную добавлять разрешения для каждого пользователя, вы можете просто добавить их в группу и изменить разрешение для группы. Вы увидите, как это сделать позже в этой статье.
Даже если вы являетесь единственным пользователем системы, вы по-прежнему будете частью многих групп. Такие дистрибутивы, как Ubuntu, также создают группу с именем, аналогичным имени пользователя.
Другие
Другие – это в основном супергруппа со всеми пользователями в системе. В принципе, любой, кто имеет доступ к системе, принадлежит этой группе.
Другими словами, «Пользователь» – это один пользователь, группа представляет собой набор пользователей, а «Другой» состоит из всех пользователей системы.
Разрешения для файлов в Linux
Каждый файл и каталог в Linux имеет три разрешения для всех трех типов владельцев:
Разрешения для файлов
- Чтение – просмотр или копирование содержимого файла
- Запись – может изменять содержимое файла
- Выполнение – может запускать файл (если его исполняемый файл)
Разрешения для каталогов
- Чтение – может перечислить все файлы и скопировать файлы из каталога
- Запись – может добавлять или удалять файлы в каталог (требуется также разрешение на выполнение)
- Выполнение – может войти в каталог
Общие сведения о разрешениях и правах доступа к файлам в Linux
Теперь, когда вы знаете основную терминологию разрешений и прав на файл, пришло время увидеть его в действии.
Если вы используете команду ls с параметром -l в файле, вы увидите такой вывод:
Позвольте нам объяснить этот результат с изображением:
Подробно весь вывод:
- File type (Тип файла) : Обозначает тип файла. d означает каталог, – означает обычный файл, l означает символическую ссылку.
- Permissions (Разрешения) : В этом поле отображается набор разрешений для файла. Я объясню это подробно в следующем разделе.
- Hard Link Count (Количество жестких ссылок) : показывает, имеет ли файл жесткие ссылки. Счет по умолчанию – один.
- User (Пользователь) : Пользователь, которому принадлежат файлы.
- Group (Группа) : Группа, у которой есть доступ к этому файлу. Одновременно может быть только одна группа.
- File Size (Размер файла) : Размер файла в байтах.
- Modification timestamp (Время модификации) : Дата и время последнего изменения файла.
- Filename (Имя файла) : Очевидно, имя файла или каталога.
Теперь, когда вы поняли вывод команды ls -l, давайте сосредоточимся на части разрешения файла.
В приведенной выше команде вы видите разрешение файла, подобное этому в девятизначном формате :
Каждая буква обозначает конкретное разрешение:
- r: разрешение на чтение
- w: разрешение на запись
- x: выполнить разрешение
- -: не установлено разрешение
Разрешения всегда находятся в порядке читать, писать и выполнять, т. е. rwx. И тогда эти разрешения устанавливаются для всех трех своего рода владельцев (см. раздел прав собственности) в порядке: Пользователь, Группа и Другое.
Эта картина лучше объяснит:
Итак, если вы посмотрите на приведенную выше картинку, вы можете сказать следующие вещи о разрешениях файлов:
- Файл имеет права на чтение, запись и выполнение для Пользователя, Но кто является владельцем этого файла? У вас есть эта информация на выходе ls -l (т.е. пользователь andreyex).
- Файл имеет права на чтение и запись для группы, но не выполняется. Какая группа? У вас есть информация о группе на выходе команды ls -l (т.е. группа andreygroup).
- Файл имеет только разрешение на чтение для других, то есть всех, у кого есть доступ к системе. Вам не нужно знать, что это за другое, потому что «другое» означает всех пользователей.
Теперь, если вы снова увидите всю команду ls -l, вы можете прочитать права на файлы и права собственности вместе.
Файл andreyex.txt принадлежит пользователю andreyex а также andreyex имеет разрешение на чтение, запись и выполнение. Все члены группы andreygroup имеют доступ на чтение и запись к этому файлу, в то время как все остальные имеют доступ только к чтению этого файла.
Один пользователь может быть членом нескольких групп, но только основная группа пользователя является владельцем группы файла, созданного пользователем. Основная группа пользователя может быть найдена с помощью идентификатора команды –gn . Оставьте имя пользователя пустым, если вы пытаетесь найти свою собственную основную группу.
Теперь, когда вы знаете, как узнать разрешения на файл, давайте посмотрим, как вы можете изменить разрешение и права собственности на файл.
Изменить права доступа к файлам в Linux
Вы можете использовать команду CHMOD для изменения разрешений на файл в Linux.
Общая информация : Разрешения назывались режимом доступа и, следовательно, CHMOD была короткая форма изменения режима доступа.
Существует два способа использования команды chmod:
- Абсолютный режим
- Символический режим
Использование chmod в абсолютном режиме
В абсолютном режиме разрешения представлены в числовой форме (точнее, восьмеричная система). В этой системе каждое разрешение файла представлено числом.
- r (чтение) = 4
- w (написать) = 2
- x (выполнить) = 1
- – (без разрешения) = 0
С помощью этих числовых значений вы можете комбинировать их, и, таким образом, один номер может использоваться для представления всего набора разрешений.
Число | разрешение |
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 следующим образом:
Если вы перечислите andreyex.txt сейчас, вы увидите, что разрешение было изменено.
Использование chmod в символическом режиме
Проблема с абсолютный режим заключается в том, что вы должны всегда предоставлять три номера для всех трех владельцев, даже если вы хотите изменить разрешение для одного владельца.
Здесь вы можете использовать символический режим с помощью команды chmod.
В символическом режиме владельцы обозначаются следующими символами:
- u = пользовательский пользователь
- g = владелец группы
- o = другое
- a = все (пользователь + группа + прочее)
Символический режим использует математические операторы для выполнения изменений разрешения:
- + для добавления разрешений
- – для удаления разрешений
- = для переопределения существующих разрешений с новым значением
Теперь, когда вы знаете, давайте посмотрим, как использовать команду chmod в символическом режиме.
В нашем предыдущем примере, если вы хотите добавить разрешение на выполнение для владельца группы, вы можете использовать команду chmod следующим образом:
Если вы сейчас просмотрите разрешения для этого файла, вы увидите, что теперь добавлено разрешение на выполнение:
Вы также можете объединить несколько изменений разрешений в одну команду. Предположим, вы хотите удалить права на чтение и запись и добавить разрешения на выполнение для других. Вы также хотите добавить разрешение на выполнение для пользователя, Вы можете сделать все это по одной команде:
Полученные разрешения будут такими:
Если вы хотите одновременно изменить разрешения для всех трех пользователей, вы можете использовать его следующим образом:
Это приведет к удалению разрешения на выполнение для всех.
Теперь, когда вы знаете, как изменить разрешение файла, давайте посмотрим, как изменить права собственности на файл.
Изменение владельца файла в Linux
Чтобы изменить право собственности на файл, вы можете использовать команду chown. Вы можете легко догадаться, что chown означает владельца изменения.
Вы можете изменить владельца пользователя файла следующим образом:
Если вы хотите изменить пользователя и группу, вы можете использовать команду cown следующим образом:
Если вы просто хотите изменить группу, вы можете использовать команду chwon таким образом:
или команду chgrp, специально используемую для изменения владельца группы файла или каталога. Вы можете догадаться, что команда chgrp означает группу изменений.
В нашем примере до сих пор, если вы хотите изменить владельца и группу пользователей на root, вы можете использовать команду chown следующим образом:
Это изменит право собственности на файл на root как для пользователя, так и для группы.
Заметьте, что нам пришлось использовать sudo с chown? Это связано с тем, что здесь задействован root, и чтобы справиться с корнем, вам нужны права суперпользователя.
Бонус Совет: Есть ли приоритет в разрешениях на файлы?
Подумайте о ситуации, когда обычный пользователь не имеет никаких разрешений, группа имеет разрешение на чтение, в то время как другие имеют права на чтение и запись.
Теперь, если пользователь andreyex пытается прочитать файл с помощью команды cat или less, сможет ли он это сделать? Ответ – нет, потому что у него нет разрешения на чтение.
Но пользователь andreyex является частью группы andreygroup, и у группы есть доступ на чтение. Другой имеет право на чтение и запись. Это должно означать, что каждый (включая пользователя andreyex) может читать и писать файл, не так ли? Неправильно!
В Linux приоритет от пользователя, а затем от группы, а затем и от другого. Система Linux проверяет, кто инициировал этот процесс (в нашем примере cat или less). Если пользователь, инициировавший этот процесс, также является владельцем пользователя, устанавливаются биты прав пользователя.
Если владелец файла не инициировал этот процесс, система Linux проверяет группу. Если пользователь, инициировавший процесс, находится в той же группе, что и группа владельца файла, установлен бит групповых разрешений.
Если этот владелец процесса даже не входит в группу в качестве владельца группы файла, тогда устанавливаются другие биты разрешения.
Что еще?
Существуют некоторые расширенные разрешения для файлов, такие как установка Sticky bit для предотвращения удаления файлов и т. д.
Надеюсь, вам понравилась статья, и теперь у вас есть лучшее понимание того, как права доступа к файлам работают в Linux.
Если у вас есть какие-либо вопросы или предложения или вы просто хотите сказать спасибо, пожалуйста, оставьте комментарий ниже. Если вам понравилась статья, пожалуйста, поделитесь ею в социальных сетях или на разных форумах. Это поможет нам и другим пользователям Linux.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Источник