Как работают права доступа
Есть 3 вида разрешений. Они определяют права пользователя на 3 действия: чтение, запись и выполнение. В Linux эти действия обозначаются вот так:
- r — read (чтение) — право просматривать содержимое файла;
- w — write (запись) — право изменять содержимое файла;
- x — execute (выполнение) — право запускать файл, если это программа или скрипт.
У каждого файла есть 3 группы пользователей, для которых можно устанавливать права доступа.
- owner (владелец) — отдельный человек, который владеет файлом. Обычно это тот, кто создал файл, но владельцем можно сделать и кого-то другого.
- group (группа) — пользователи с общими заданными правами.
- others (другие) — все остальные пользователи, не относящиеся к группе и не являющиеся владельцами.
Как узнать разрешения файла
Чтобы посмотреть права доступа к файлу, нужно вызвать команду с опцией . Эта опция отвечает за вывода списка в длинном формате.
1. : ls -l /home/karpaff/linuxtutorialwork/chick.png2. -rwxr----x 1 harry users 2.7K Jan 4 07:32 /home/karpaff/linuxtutorialwork/chick.png3. :
В приведенном выше примере первые 10 символов вывода показывают разрешения файла.
Первый символ определяет тип файла. Если первый символ — прочерк , то это обычный файл. Если первый символ , то это каталог.
Следующие 3 символа показывают разрешения для владельца. Буква означает наличие разрешения, а прочерк — его отсутствие. В нашем примере у владельца есть все разрешения (чтение, запись и выполнение).
Следующие 3 символа показывают разрешения для группы. В этом примере у членов группы есть разрешение на чтение, но нет разрешений на запись и выполнение
Обратите внимание, порядок записи разрешений всегда такой: чтение, запись, выполнение.
Последние 3 символа показывают разрешения для всех остальных пользователей. В этом примере у них есть только разрешение на выполнение.
Как изменить права доступа
Для изменения прав доступа к файлу или каталога используется команда (от англ. change mode). Эта команда меняет биты режима файла — если совсем просто, это индикатор разрешений.
Аргументы команды , отвечающие за разрешение, состоят из 3 компонентов:
- Для кого мы меняем разрешение? Обозначается первыми буквами слов: — user (пользователь, он же владелец), group (группа), others (другие), all (все).
- Мы предоставляет или отзываем разрешения? Обозначается плюсом , если предоставляем, минусом , если отзываем.
- Какое разрешение мы хотим изменить? Чтение (r), запись (w), выполнение (x).
Разберем на примере. Давайте дадим группе разрешение на выполнение, а затем отзовем разрешение на запись для владельца.
1. : ls -l chick.png2. -rwxr ---- x 1 harry users 2.7K 4 янв 07:32 chick.png3. :4. : chmod g + x chick.png5. : ls -l chick.png6. -rwxr-x - x 1 harry users 2.7K 4 янв 07:32 chick.png7. :8. : chmod uw chick.png9. : ls -l chick.png10. -r-xr-x - x 1 harry users 2.7K 4 янв 07:32 chick.png11. :
Права доступа необязательно выдавать индивидуально. Можно назначить сразу несколько разрешений.
1. : ls -l chick.png2. -rwxr ---- x 1 harry users 2.7K Jan 4 07:32 chick.png3. :4. : chmod g + wx chick.png5. : ls -l chick.png6. -rwxrwx - x 1 harry users 2.7K Jan 4 07:32 chick.png7. :8. : chmod go-x chick.png9. : ls -l chick.png10. -rwxrw ---- 1 harry users 2,7K Jan 4 07:32 chick.png11. :
Может показаться странным, что владелец файла может сам себя лишить прав. Но бывают случаи, когда такая возможность очень полезна. Допустим, у вас есть файл с данными, которые мы не хотели бы случайно изменить.
Да, вы можете лишать себя каких-то разрешений, но у вас всегда остается возможность выдавать права. Всегда сможете вернуть себе отозванное разрешение.
Короткая форма записи прав
Для разрешений можно установить сокращенные формы записи. С их помощью выдавать разрешения будет быстрее. Сокращения полезны, когда нужно регулярно применять набор разрешений для определенных файлов.
Вспомним восьмеричную систему
Чтобы понять, как работает этот сокращенный метод, давайте освежим знания по системам счисления.
Мы используем десятичную систему счисления, в которой 10 цифр: от 0 до 9. Еще есть восьмеричная система счисления, в которой используется 8 цифр: от 0 до 7.
Разрешений — 3 вида, каждый кодируется 1 (разрешение есть) или 0 (разрешения нет). Поэтому для кодирования всех разрешений требуется 23 = 8 комбинаций. Соответственно, для записи каждого разрешения используется восьмеричная система счислений. Числа восьмеричной системы счисления можно представить в двоичной системе, в которой всего две цифры: 0 и 1. Вот, как восьмеричные числа выглядят в двоичной с. с.
Если ключ реестра отсутствует
Если вы не нашли этот раздел реестра , добавьте его самостоятельно. Чтобы добавить раздел реестра, создайте новое значение DWORD Display1_DownScalingSupported в каждом расположении раздела реестра.
-
Для первого ключа перейдите в реестр и перейдите к:
На Lenovo S10-3T ключ находится в одном из следующих двух мест:
ИЛИ ЖЕ
-
Перейдите в Edit и выберите New > DWORD (32-bit) Value .
-
На правой панели измените имя New Value # 1 на Display1_DownScalingSupported и нажмите Enter .
-
Выберите Display1_DownScalingSupported и нажмите Enter . В открывшемся окне установите значение данных на 1 .
-
Повторите предыдущие шаги для каждого из следующих местоположений, если они существуют (могут присутствовать не все из них), и измените все значения на 1 .
-
Перезагрузите компьютер.
-
Перейдите к настройкам дисплея и в разделе « Разрешение» измените настройку на более высокое разрешение.
Как изменить права файла в Linux
Чтобы изменить права на файл в linux вы можете использовать утилиту chmod. Она позволяет менять все флаги, включая специальные. Рассмотрим ее синтаксис:
$ chmod опции категориядействиефлаг файл
Опции сейчас нас интересовать не будут, разве что только одна. С помощью опции -R вы можете заставить программу применять изменения ко всем файлам и каталогам рекурсивно.
Категория указывает для какой группы пользователей нужно применять права, как вы помните доступно только три категории:
- u — владелец файла;
- g — группа файла;
- o — другие пользователи.
Действие может быть одно из двух, либо добавить — знак «+», либо убрать — знак — «-«. Что касается самих прав доступа, то они аналогичны выводу утилиты ls: r — чтение, w — запись, x — выполнение, s — suid/sgid, в зависимости от категории, для которой вы его устанавливаете, t — устанавливает sticky-bit. Например, всем пользователям полный доступ к файлу test5:
Или заберем все права у группы и остальных пользователей:
Дадим группе право на чтение и выполнение:
Остальным пользователям только чтение:
Для файла test6 установим SUID:
А для test7 — SGID:
Посмотрим что получилось:
Как видите, изменить права на файл в Linux очень просто. К тому же вы можете изменить основные права с помощью файлового менеджера.
Работа с символическими ссылками
Символьные ссылки всегда имеют разрешения.
По умолчанию при изменении разрешений символической ссылки изменяются разрешения для файла, на который указывает ссылка.
Скорее всего, вместо изменения целевого владельца вы получите сообщение об ошибке «невозможно получить доступ к символической ссылке: отказано в доступе».
Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Эта опция указана в . значит включен и отключен. Рекомендуется не отключать защиту символической ссылки.
Права доступа/Разрешения
Каждый файл и каталог в Linux имеет следующие три типы разрешений для всех трех вышеописанных категорий пользователей:
Чтение/Просмотр (Read) — дает право открывать и читать файл. Разрешение на чтение каталога дает возможность просматривать его содержимое.
Запись/Изменение (Write) — дает право изменять содержимое файла. Разрешение на запись в каталог дает право добавлять, удалять и переименовывать файлы, хранящиеся в каталоге. Рассмотрим сценарий, в котором у вас есть разрешение на запись в файл, но нет разрешения на запись в каталог, где хранится файл. Вы сможете изменить содержимое файла, но вы не сможете переименовать, переместить или удалить файл из каталога.
Выполнение (eXecute) — в Linux вы не сможете запустить программу, если не задано разрешение на выполнение, но вы все равно сможете видеть/изменять программный код (при условии, что установлены разрешения на чтение и запись), но не запускать его.
Специальные права доступа к файлам в Linux
Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.
- SUID — если этот бит установлен, то при выполнении программы, id пользователя, от которого она запущена заменяется на id владельца файла. Фактически, это позволяет обычным пользователям запускать программы от имени суперпользователя;
- SGID — этот флаг работает аналогичным образом, только разница в том, что пользователь считается членом группы, с которой связан файл, а не групп, к которым он действительно принадлежит. Если SGID флаг установлен на каталог, все файлы, созданные в нем, будут связаны с группой каталога, а не пользователя. Такое поведение используется для организации общих папок;
- Sticky-bit — этот бит тоже используется для создания общих папок. Если он установлен, то пользователи могут только создавать, читать и выполнять файлы, но не могут удалять файлы, принадлежащие другим пользователям.
Теперь давайте рассмотрим как посмотреть и изменить права на файлы в Linux.
Следующие 9 символов обозначают права доступа.
Данные 9 символов состоят из трех групп:
- Первая группа из трех символов обозначает права доступа владельца файла или директории (u — user).
- Вторая группа из трех символов обозначает права доступа на файл или директорию для системной группы (g — group).
- Третья группа из трех символов обозначает права доступа на файл или директорию для всех остальных (o — other).
У этих трёх групп одинаковая комбинация символов, то есть:
Что же они обозначают?
Очень легко запомнить:
r | read, то есть, право доступа на чтение файла или директории. |
w | write, то есть, право на изменение и удаление файла или директории. |
x | eXecute, то есть, право на запуск файла как программы или вход в директорию. |
Всегда располагаются в таком порядке:
Если вместо какого-то символа идёт тире (минус), к примеру:
то это значит, что отсутствуют права на изменение и удаление файла или директории.
Или так:
то это обозначает, что отсутствуют права на изменение и запуск файла или директории. Доступен только просмотр.
Таким образом, из нашего примера:
это сообщение обозначает, что является директорией, у владельца и у группы есть полные права доступа — на чтение, изменение, удаление, запуск (вход внутрь каталога), у всех остальных есть только права на чтение и запуск(вход внутрь каталога).
Как видите, ничего сложного нет.
Определение владельца и группы файла или директории.
Но у Вас может возникнуть закономерный вопрос о том, а как же узнать, кто именно является владельцем файла и какая группа?
Те же самые команды из первого пункта:
Как видно на скриншоте:
- в третей колонке идет имя владельца файла;
- в четвертой колонке идет название группы.
Следовательно, если пользователь не владелец файла, но входит в группу, то у него будут права на файл или директорию этой самой группы.
Права доступа к файлам в Linux
Базовая модель разрешений Linux работает, связывая каждый системный файл с владельцем и группой и назначая права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Другие (все остальные).
Собственности файла можно изменить с помощью и команды.
К каждому классу пользователей применяются три типа прав доступа к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет вам контролировать, какие пользователи могут читать файл, записывать в файл или выполнять файл.
Чтобы просмотреть права доступа к файлу, используйте команду:
Первый символ указывает тип файла. Это может быть обычный файл ( ), каталог ( ), символическая ссылка ( ) или другие специальные типы файлов. Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных.
В приведенном выше примере ( ) означает, что владелец файла имеет права на чтение и запись ( ), а группа и другие пользователи имеют только права на чтение ( ).
Права доступа к файлам имеют разное значение в зависимости от типа файла.
Каждый из трех триплетов разрешений может состоять из следующих символов и иметь разные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
Разрешение | Метка | Значение в файле |
---|---|---|
ЧтениеRead | Файл не читается. Вы не можете просматривать содержимое файла. | |
Файл доступен для чтения. | ||
ЗаписьWrite | Файл не может быть изменен или изменен. | |
Файл можно изменить или модифицировать. | ||
ВыполнениеExecute | Файл не может быть выполнен. | |
Файл можно запустить. | ||
Если он находится в триплете, он устанавливает бит. Если он находится в триплете, он устанавливает бит. Это также означает, что флаг установлен. Когда для исполняемого файла установлены флаги или , файл выполняется с правами владельца и / или группы. |
||
То же , но флаг не установлен. Этот флаг редко используется для файлов. | ||
Если он находится в триплете, он устанавливает бит. Это также означает, что флаг установлен. Этот флаг бесполезен для файлов. |
||
То же, но флаг не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
Каталоги — это особые типы файлов, которые могут содержать другие файлы и каталоги.
Разрешение | Метка | Значение в каталоге |
---|---|---|
ЧтениеRead | Содержимое каталога не может быть отображено. | |
Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью .) |
||
ЗаписьWrite | Содержимое каталога не может быть изменено. | |
Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) |
||
ВыполнениеExecute | Каталог не может быть изменен на. | |
По каталогу можно перемещаться с помощью . | ||
Если он находится в триплете, он устанавливает бит. Если он находится в триплете, он устанавливает бит. Это также означает, что флаг установлен. Когда для каталога установлен флаг, новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. не влияет на каталоги. | ||
То же , но флаг не установлен. Этот флаг бесполезен для каталогов. | ||
Если он находится в триплете, он устанавливает бит. Это также означает, что флаг установлен. Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь могут удалять или переименовывать файлы в каталоге. |
||
То же , но флаг не установлен. Этот флаг бесполезен для каталогов. |
Подытожим
Для каждого файла или директории в Linux задаются права доступа. Они задаются тремя атрибутами: набором разрешений, именем владельца, именем группы.
Набор разрешений — это три блока прав доступа: права доступа для владельца файла, права доступа для группы, права доступа для всех остальных.
Разрешения записываются символами r, w, x.
Набор разрешений состоит из трех блоков и записывается в виде трех rwx, записанных друг за другом в виде одного «слова».
Если какая-либо возможность отключена (запрещена), то вместо соответствующего символа в наборе разрешений ставится прочерк (символ минус).
Символьная ссылка (Symbolic link)
Символьная ссылка (сокр. «symlink» от англ «symbolic link«), в отличие от жесткой ссылки, указывает не на индексный номер файла, а на его имя (путь). В каком-то роде символьная ссылка является аналогом ярлыка в Windows-системах.
Символьную ссылку можно создать с помощью той же команды , добавив к ней опцию :
При этом будет создан новый (!) объект файловой системы с именем symlink1, указывающий на существующий файл file1:
Буква в группе прав доступа к файлу сигнализирует нам о том, что этот файл является символьной ссылкой на другой файл, что также отражено в имени файла — .
Сравним индексные номера file1, hardlink1, hardlink2 и symlink1:
Видно, что индексный номер symlink1 отличается от других номеров, так как для файловой системы это уже два независимых объекта. Также заметно и различие в наборе прав.
Смена владельца и группы
Помимо изменения прав доступа к файлам, вы можете столкнуться с ситуацией необходимости изменения владельца файла или даже всей группы. Выполнение любой из этих задач требует от вас наличие привилегий суперпользователя (root). Для этого я буду применять утилиту .
Чтобы изменить владельца файла, необходимо применить команду (сокр. от «change owner»), синтаксис которой довольно прост:
Если вы хотите сменить не только владельца, но также и группу для файла или каталога, то синтаксис будет следующим:
Если вы просто хотите изменить группу, а владельца оставить прежним, то синтаксис примет вид:
Или же используйте команду (сокр. от «change group«), специально применяемую для изменения владельца группы файла или каталога:
В качестве тренировки давайте сменим владельца и группу файла Адреса.txt на пользователя root и группу root (при этом вам могут понадобиться права суперпользователя):
Как вы можете видеть, владелец и группа файла сменились с на .
Заметьте, что мне пришлось использовать с . Это потому, что здесь задействован пользователь root, и чтобы иметь с ним дело, вам нужны права суперпользователя.
Вступление
В Unix каждому файлу соответствует набор прав доступа, представленный в виде 9-ти битов режима. Он определяет, какие пользователи имеют право читать файл, записывать в него данные или выполнять его. Вместе с другими тремя битами, влияющими на запуск исполняемых файлов, этот набор образует код режима доступа к файлу. Двенадцать битов режима хранятся в 16-битовом поле индексного дескриптора вместе с 4-мя дополнительными битами, определяющими тип файла. Последние 4 бита устанавливаются при создании файлов и не подлежат изменению.
Биты режима (далее права) могут изменяться либо владельцем файла, либо суперпользователем с помощью команды chmod.
Существует три пути управления доступом к файлу или каталогу. Было определено, что каждый файл должен иметь владельца (owner), группового владельца (group owner), а также может потребоваться доступ для всех остальных пользователей (everyone). Эти названия обычно приводятся как пользователь/группа/остальные (user/group/others) или коротко ugo. Реализация управления доступом к файлам и каталогам в Unix позволяет или запрещает доступ по трем флагам: флаг чтения (Read), флаг записи (Write), флаг выполнения (eXecute). Они представляются следующим образом:
flag | user | group | other |
---|---|---|---|
# | rwx | rwx | rwx |
Флаг типа (flag) может быть одним из следующих:
Флаг | Описание |
---|---|
— | Отсутствие флага |
l — лат. «л» | Символическая ссылка (symbolic link) |
d | Директория (directory) |
b | Блочное устройство (block device) |
c | Символьное устройство (character device) |
p | Канал, устройство fifo (fifo device) |
s | Unix сокет (unix domain socket) |
Что такое ссылка на файл в Linux
Ссылка на файл в Linux — это указатель на файл. Если проводить аналогию с Windows, то ссылки чем-то похожи на ярлыки. То есть вы создаете ссылку, которая указывает на какой-либо файл или директорию, и можете разместить эту ссылку в другом каталоге. Обращаясь к такой ссылке, вы будете обращаться к настоящему файлу или каталогу.
Ссылки в Linux бывают двух типов: символические и жесткие. Не смотря на то, что оба типа называются ссылками, они имеют существенные отличия друг от друга
Поэтому очень важно понимать, как создавать и использовать тот или иной тип ссылок
Что такое символические ссылки
Символическая ссылка (symbolic link) — это специальный файл, который является ссылкой на другой файл или каталог (их еще называют целевым файлом, целевым каталогом).
Символические ссылки также называют символьными, мягкими ссылками (soft links) или сим-ссылками (sym-link).
Важно понимать, что символическая ссылка не содержит в себе внутри копии самого файла, на которую она указывает. Она является всего лишь указателем на файл
Не смотря на это, символическая ссылка обладает собственными правами доступа, так как сама является небольшим файлом, который содержит путь до целевого файла.
Возвращаясь к аналогии с ярлыками в Windows, символические ссылки это своего рода ярлыки на файлы. Можно создавать несколько символических ссылок на один файл и эти ссылки могут иметь разные имена.
Связь между символической ссылкой и файлом, на который она указывает, является «мягкой». Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.
Если удалить файл, на который указывает ссылка, то сама ссылка не обновляется и остается на диске. При этом она указывает на уже несуществующий файл. Аналогично, если переименовать или переместить целевой файл, то ссылка не обновляется автоматически.
При создании символических ссылок можно указывать относительный путь до целевого файла. В таком случае ссылка считает, что относительный путь указан относительно каталога, в котором создана сама ссылка (но не относительно каталога, из которого она была создана).
Схематично отношение между файлом, символической ссылкой и данными, которые хранятся в файле, можно показать следующим образом:
Что такое жесткие ссылки
Жесткая ссылка (hard link) является своего рода синонимом для существующего файла. Когда вы создаете жесткую ссылку, создается дополнительный указатель на существующий файл, но не копия файла.
Жесткие ссылки выглядят в файловой структуре как еще один файл. Если вы создаете жесткую ссылку в том же каталоге, где находится целевой файл, то они должны иметь разные имена. Жесткая ссылка на файл должна находится в той же файловой системе, где и другие жесткие ссылки на этот файл.
В Linux каждый файл имеет уникальный идентификатор — индексный дескриптор (inode). Это число, которое однозначно идентифицирует файл в файловой системе. Жесткая ссылка и файл, для которой она создавалась имеют одинаковые inode. Поэтому жесткая ссылка имеет те же права доступа, владельца и время последней модификации, что и целевой файл. Различаются только имена файлов. Фактически жесткая ссылка это еще одно имя для файла.
Жесткие ссылки нельзя создавать для директорий.
Жесткая ссылка не может указывать на несуществующий файл.
Жесткие ссылки появились раньше, чем символические, но сейчас уже устаревают. В повседневной работе жесткие ссылки используются редко.
Схематично отношение между исходным файлом, жесткой ссылкой и данными можно показать следующей схемой:
Отличия символических ссылок от жестких
Кратко подведем итог, написанного выше.
Символическая ссылка:
- Указывает на целевой файл или каталог. Фактически является небольшим файлом, содержащим путь до целевого файла.
- Не содержит внутри себя содержимого самого файла. Содержит путь к целевому файлу.
- Имеет собственные права доступа, которые не распространяются на целевой файл.
- Удаление / переименование / перемещение целевого файла не обновляет автоматически ссылку. Ссылка начинает указывать на несуществующий файл, становится неработающей.
- Изменение прав доступа у целевого файла не обновляет права доступа у ссылки.
- Может быть создана для директории.
- Ссылка и целевой файл имеют разные файловые индексы (inode) в файловой системе.
- Может указывать на несуществующий файл.
- Символическая ссылка может использовать относительный путь до целевого файла.
Жесткая ссылка:
- Является своего рода еще одним именем на файл.
- Не может указывать на директорию.
- Нельзя создавать жесткие ссылки между файлами разных файловых систем.
- Не может указывать на несуществующий файл.
- Жесткая ссылка и файл, для которого она создавалась, имеют одинаковые индексы (inode) в файловой системе.
Команда chmod
Команда chmod предназначена для изменения прав доступа файлов и директорий в Linux. Название команды произошло от словосочетания «change mode».
Синтаксис команды chmod следующий:
Разрешения можно задавать двумя способами:
- Числом
- Символами
Запись прав доступа числом
Пример:
В данном формате права доступа задаются не символами rwx, как описано выше, а трехзначным числом. Каждая цифра числа означает определенный набор прав доступа.
- Первая цифра используется для указания прав доступа для пользователя.
- Вторая цифра для группы.
- Третья для всех остальных.
В таблице ниже приводятся все возможные комбинации разрешений rwx и соответсвующие им числа (которые используются в команде chmod):
Число | Разрешения | Символьное обозначение |
---|---|---|
разрешения отсутствуют | — | |
1 | x — запуск | —x |
2 | w — изменение | -w- |
3 | x+w — запуск+изменение | -wx |
4 | r — чтение | r— |
5 | r+x — чтение+запуск | r-x |
6 | r+w — чтение+изменение | rw- |
7 | r+w+x — чтение+изменение+запуск | rwx |
Рассмотрим использование команды chmod с записью прав доступа числом на примере. Установим для файла права доступа 764:
Это означает (см. таблицу выше), что для файла myfile мы устанавливаем права доступа 764, которые означают:
- 7 — права для владельца-пользователя. Владелец файла может читать, изменять и запускать файл (r+w+x).
- 6 — права для группы. Пользователи, которые принадлежат группе могут читать и изменять файл (r+w).
- 4 — права для всех остальных. Все остальные могут только читать файл (r).
Если записать 764 с помощью символов (см. таблицу), то мы получим: «rwxrw-r-».
В таблице ниже приведены некоторые часто используемые значения числовых значений прав доступа:
Числовоеобозначение | «rwx»-обозначение | Описание |
---|---|---|
400 | -r——— | Владелец файла может только читать файл. Для всех остальных все действия с файлом запрещены. |
644 | -rw-r—r— | Все пользователи могут читать файл. Владелец может изменять файл. |
660 | -rw-rw—- | Владелец и группа могут читать и изменять файл. Для всех остальных все действия с файлом запрещены. |
664 | -rw-rw-r— | Все могут читать файл. Владелец и группа могут изменять. |
666 | -rw-rw-rw- | Все могут читать и изменять файл. |
700 | -rwx—— | Владелец может читать, изменять и запускать файл. Для всех остальных все действия с файлом запрещены. |
744 | -rwxr—r— | Все могут читать файл. Владелец может также изменять и запускать файл. |
755 | -rwxr-xr-x | Все могут читать и запускать файл. Владелец может также изменять файл. |
777 | -rwxrwxrwx | Все пользователи могут читать, изменять и редактировать файл. |
Запись прав доступа символами
Примеры:
Как вы можете видеть, в данном формате права доступа задаются символами rwx, но в синтаксисе используются и другие вспомогательные символы, например, математические операции «+» и «—» и такие символы как, например, «g» или «u».
Общий синтаксис можно записать примерно так:
Обозначения для владельцев файла следующие:
Обозначение | Описание |
---|---|
u | Владелец-пользователь. |
g | Группа. |
o | Все остальные. |
a | Вообще все. |
Математические операции означают следующее:
Оператор | Описание |
---|---|
+ | Добавляет к текущим правам доступа новое разрешение. |
— | Удаляет из текущих прав доступа определенное разрешение. |
= | Устанавливает полностью новые разрешения (предыдущие перезаписываются новыми). |
В одной команде можно перечислять владельцев и их разрешения через запятую (см. пример ниже).
Рассмотрим примеры:
-
В данном случае мы не используем обозначения для владельцев, а значит разрешения устанавливаются для всех пользователей. «+x» означает — установить разрешение на запуск (x) файла для всех пользователей. Это эквивалентно выполнению команды: chmod a+x myfile1.
-
Здесь используется обозначение g и символ равенства «=». Это означает, что для группы мы устанавливаем права доступа на чтение и запись файла (rw).
-
Для владельца файла (u) мы удаляем разрешение на изменение (w) файла.
-
Разрешаем владельцу (u) и группе (g) запускать файл (x).
-
Это как раз тот случай, когда мы перечисляем владельцев через запятую и устанавливаем для них разрешения. Для владельца файла (u) мы разрешаем запуск файла, для группы (g) мы запрещаем изменять файл, для всех остальных (o) мы запрещаем читать файл.
Рекурсивное изменение прав доступа
Если необходимо изменить права доступа на все файлы в директории, включая вложенные директории, то для этого существует опция -R, что означает рекурсивное изменение прав доступа для директорий и их содержимого. Например, изменим права доступа у всех файлов в директории Mydir:
И еще один момент. Если пользователь не является владельцем файла, но ему нужно изменить права доступа у данного файла, то команду chmod необходимо выполнять с использованием sudo, например:
su
Если не передавать параметров, то будет пытаться принять личину суперпользователя. Однако вы можете указать конкретного пользователя в системе.
Аргумент говорит о том, что данное изменение следует считать первичным входом в систему. В этом случае будет применяться больше настроек Bash, которые указаны у пользователя, от имени которого мы хотим работать.
При работе от имени суперпользователя надо быть предельно аккуратным: ОС уже не следит за вашими действиями и не будет пытаться предотвратить потенциально пагубные действия.
Что делать?
- Думать
- Запускать по 1 команде от имени суперпользователя
С помощью этого можно добиться следующим образом:
Минусы такого подхода:
- Каждый раз вводим пароль.
- Команда записывается как строка, поэтому нет никаких подсказок от Bash ( не работает).