Типы пользователей и права доступа в linux

Команда chmod

Права устанавливаются командой chmod. Команда chmod поддерживает установку прав как в восьмеричном представлении, так и в символьном (маска режима доступа).

Синтаксис команды прост:

chmod <опции> <права> <объект или регулярное выражение>

Опции

Из самых полезных и часто используемых опций можно выделить одну:

-R — рекурсивное назначение прав. Т.е. назначить права всем объектам, руководствуясь регулярным выражением.

Например:

  • chmod -R 755 * — Назначение прав всем объектам текущего каталога, включая подкаталоги.
  • chmod -R 700 z* — Назначить полные права для владельца и исключить права для группы и всех остальных для всех объектов, которые начинаются именоваться на z, находящиеся в текущем каталоге и его подкаталогах.

Права

Права можно записывать как в восьмеричном представлении так и в символьном. В восьмеричном представлении, для стандартных прав, указываются 3 восьмеричные цифры (1-я для владельца, 2-я для группы, 3-я для всех остальных. См. таблицу выше).

Например:

  • chmod 744 koshka.txt — установит права для файла koshka.txt — (r w x r — — r — -);
  • chmod -R 775 sobaki — установит права на каталог sobaki и на все объекты, что внутри этого каталога, включая содержимое подкаталогов (r w x r w x r — x);
  • chmod 700 * — установит права только для владельца на все файлы и каталоги в текущем каталоге, включая подкаталоги и их объекты (rwx — — — — — -).

Другой способ назначения прав — это использование маски режима доступа (символьное представление). Помимо прав задается еще кому мы собираемся эти права выставлять:

  • u — владельцу объекта;
  • g — группе объекта;
  • o — пользователю «все остальные»;
  • a — все вышеперечисленное.

Для назначения прав используются три знака: минус, плюс или равно:

  • — — убрать указанные права с объекта;
  • + — добавить указанные права к существующим правам объекта;
  • = — заменить права объекта на указанные.

Пример:

chmod g+w koshki.txt — Добавить пользователям группы файла koshki.txt права на запись в этот файл;

chmod a=rwx sobaki.doc — Заменит существующие права на файле sobaki.doc на полные права всем;

chmod o-w test.cgi — Уберет права на запись для пользователя «Все остальные».

chmod ug=rw spisok.doc — Выставить права на чтение и запись файлу spisok.doc для владельца и группы

Обратите внимание, что если у пользователя «все остальные» были какие-либо права, они сохранятся в неизменном виде.. Использование символьного представления позволяет редактировать права файлов более гибко:

Использование символьного представления позволяет редактировать права файлов более гибко:

  • chmod u+x,g+w-x koshki.txt — Добавить владельцу файла koshki.txt права на его выполнение, пользователям группы разрешить запись и запретить выполнение и оставить права остальных пользователей без изменений;
  • chmod u=rwx,g+w,go-x sobaki.doc — Установить полные права для владельца файла, разрешить пользователям группы запись и запретить выполнение всем пользователям, кроме владельца файла.

Символьное назначение окажет неоценимую услугу, если требуется добавить права на объект к уже существующим правам.

Массовое назначение прав

Иногда, бывает, нужно массово установить права на определенный тип объектов, например, только на каталоги или только на файлы. Простое использование опции -R (рекурсия) здесь не поможет т.к. chmod будет проходить по всем объектам удовлетворяющим маске, что иногда вовсе не то, что нужно.

Итак, чтобы массово установить права на определенный тип объектов можно использовать один из вариантов (вообще, их очень много):

chmod -R 770 $(find . -type d)

где -type d — каталоги, -type f — файлы. В данном примере chmod установит, начиная от текущего каталога, права на все каталоги (включая подкаталоги) разрешения 770 (rwx rwx- — -) при этом не трогая права на другие объекты.

Более длинный вариант аналогичной операции:

find ./ -type f -exec sudo chmod 775 {} \;

где -type d — каталоги, -type f — файлы. В данном варианте chmod установит разрешения 775 на все файлы включая файлы в подкаталогах начиная от текущего.

4 ответа

46

Эта команда устанавливает идентификатор группы (setgid) в текущем каталоге, написанный как .

Это означает, что все новые файлы и подкаталоги, созданные в текущем каталоге, наследуют идентификатор группы, а не основной идентификатор пользователя, создавшего файл. Это также будет передано в новые подкаталоги, созданные в текущем каталоге.

влияет на идентификатор группы файла, но не влияет на идентификатор владельца.

Обратите внимание, что это относится только к вновь созданным файлам. Файлы, находящиеся в перемещены (), не зависят от установки setgid

Файлы, которые копируются с помощью , также не затрагиваются.

Пример

В этом случае будет принадлежать группе , но будет принадлежать группе пользователя, создающего его, что бы это ни было.

Использование точек с запятой

В отличие от или , за командой оболочки требуется только точка с запятой, если в командной строке same есть другая команда оболочки. Таким образом, рассмотрим следующую командную строку:

Конечная точка с запятой является излишней и может быть удалена:

Кроме того, если мы должны были разместить две команды на отдельных строках, то оставшаяся точка с запятой не нужна:

5

Вы можете изменить права доступа к файлам с помощью команды chmod. В Unix права доступа к файлам, которые устанавливают, у кого могут быть разные типы доступа к файлу, определяются как классами доступа, так и типами доступа. Классы доступа — это группы пользователей, каждому из которых могут быть назначены определенные типы доступа

параметры g + s следующие:

g — права, доступные для других пользователей в группе файлов

s — установить идентификатор пользователя или группы при выполнении

Вот пример использования:

(разрешить всем читать, записывать и выполнять конкретный файл и включать набор идентификаторов группы)

Чтобы установить /изменить разрешения файла, вам нужно использовать программу chmod. Конечно, только владелец файла может использовать chmod для изменения прав доступа к файлу. chmod имеет следующий синтаксис: chmod mode file (s)
Часть «mode» определяет новые разрешения для файлов, следующих за аргументами. Режим определяет, какие права пользователя должны быть изменены, а затем, какие типы доступа должны быть изменены. Скажем, например:
    chmod a-x socktest.pl

Это означает, что бит выполнения должен быть очищен (-) для всех пользователей. (владелец, группа и остальная часть мира). Разрешения начинаются с буквы, указывающей на то, на что пользователи должны повлиять на изменение, это может быть любое из следующего:

За этим следует инструкция изменения, которая состоит из + (бит набора) или — (бит очистки) и буквы, соответствующей бит, который должен быть изменен.
Давайте посмотрим несколько примеров:

$ ls -l socktest.pl
    -rwxr-xr-x 1 ник пользователей 1874 19 янв. 10:23 socktest.pl *

Странные числа …
Возможно, вы столкнулись с такими вещами, как chmod 755 somefile, и, конечно же, вам будет интересно, что это. Дело в том, что вы можете изменить весь шаблон разрешения файла за один раз, используя один номер, как в этом примере. Каждый режим имеет соответствующий кодовый номер, и, как мы увидим, существует очень простой способ выяснить, какое число соответствует любому режиму.
Каждая из трех цифр номера режима соответствует одному из трех триплетов разрешения. (u, g и o). Каждый бит разрешения в триплете соответствует значению: 4 для r, 2 для w, 1 для x. Если бит разрешения вы добавляете это значение в число триплет разрешения. Если он очищен, вы ничего не добавите. (Некоторые из вас могут заметить, что на самом деле, число для триплета — это восьмеричное значение, соответствующее трехбитовой схеме — если вы не знаете, что такое восьмеричное значение, это не имеет особого значения, просто следуйте инструкциям ) Поэтому, если у файла есть разрешения rwxr-xr-x, мы делаем следующий расчет:

Триплет для u: rwx => 4 + 2 + 1 = 7

Триплет для g: r-x => 4 + 0 + 1 = 5

Триплет для o: r-x => 4 + 0 + 1 = 5

Что делает: 755

Итак, 755 — это краткий способ сказать: «Я не против, если другие люди читают или запускают этот файл, но только я должен его модифицировать», а 777 означает «у всех есть полный доступ к этому файлу»

Результат команды ls будет зависеть от umask.

, так что если ваш umask, например, 022, результат будет примерно таким:

Шаг 1 – Как изменить права доступа в Linux через командную строку

chmod – эта команда используется для изменения прав доступа к файлу или папке. Каждый файл имеет типы пользователей, которые могут с ним взаимодействовать:

Тип Объяснение
Владелец (owner) Пользователь, создавший и владеющий данным файлом или папкой.
Группа (group) Все пользователи, члены одной группы.
Другие (other) Все другие пользователи в системе, не являющиеся ни владельцами, ни членами группы.

Команда ls -l, может быть использована для отображения прав доступа и владельца. К примеру, команда ls -l file1.txt отобразит:

-rwxr–rw- 1 user user 0 Jan 19 12:59 file1.txt

“-rwxr–rw-“ –  эта часть строки показывает права доступа

Здесь 4 главные буквы на которые вам надо обратить внимание: r,w,x,d. d означает, что тип файла — это каталог

В нашем примере, такой буквы нет (она стояла бы первой в строке), здесь вместо нее стоит символ “-“ (который в основном означает “нет”). Буква x означает разрешение на выполнение файла или папки (это разрешение необходимо для входа в папку). Буква w означает разрешение на запись файла или папки (редактирование, удаление и т.д.) И наконец последняя буква r, которая означает чтение. Если у вас есть права на чтение файла, вы можете прочесть содержимое файла, но не сможете предпринять другие действия (к примеру, вы можете прочитать код скрипта, но не сможете выполнить его).

1 – число хард связи. Проще говоря, хард связь это дополнительное имя для существующего файла.

user user – это значение показывает владельца файла и его группу.

 – это значение показывает размер файла.

Jan 19 12:59 – отображает дату последнего изменения.

file1.txt – предоставляет имя файла или папки.

Хорошо, теперь давайте вернемся к команде chmod. Это команда позволяет нам изменить права доступа к файлу или папке. Мы научим вас, как это сделать просто складывая номера. Каждое из прав доступа имеет свой собственный номер:

  • r (чтение) – 4
  • w (запись) – 2
  • x (выполнение) – 1

К примеру, если мы хотим изменить права доступа к файлу file1.txt на эти:

-rwxr–rw- 1 user user 0 Jan 19 12:59 file1.txt

Мы должны написать следующую команду

chmod 746 file1.txt

Каждый номер в этой команде представляет собой права для одного из типов пользователей (владелец, группа и другие). Первый номер 7. Теперь, используя объяснение числовых значений выше, единственный вариант для получения числа 7 — сложение чисел 4, 2 и 1, получаем 4+2+1=7. Проще говоря, это означает ВСЕ права доступа (чтение, запись, выполнение — rwx). Первый номер устанавливает права доступа для владельца файла. Второй номер 4, который означает права доступа -r (чтение), устанавливает права доступа для группы владельца. Третий номер 6, используя тот же способ, что и с первым номером, 4+2=6, дает группе другие, права на чтение (4) и запись (2) файла. Третья часть в команде (file1.txt) – это имя файла для которого мы изменяем права доступа.

Еще один пример:

chmod 777 file2.txt

эта команда даст все права для каждого типа пользователей (владелец, группа и другие).

Вот список самых наиболее распространённых прав доступа для файлов:

Значение Цифровое значение Объяснение
-rw——- 600 Владелец может читать и записывать файл.
-rw-r–r– 644 Владелец может читать и записывать файл, группа и другие могут только читать.
-rw-rw-rw- 666 Владелец, группа и другие могут читать и записывать.
-rwx—— 700 Владелец может читать, записывать и выполнять, группа и другие не имеют никаких прав доступа.
-rwx–x–x 711 Владелец может читать, записывать и выполнять, группа и другие могут только выполнять.
-rwxr-xr-x 755 Владелец может читать, записывать и выполнять, группа и другие могут читать и выполнять.
-rwxrwxrwx 777 Все типы пользователей могут читать, записывать и выполнять.

Наиболее распространенные права доступа для каталогов:

Значение Цифровое значение Объяснение
drwx—— 700 Только владелец может читать и записывать в этом каталоге.
drwxr-xr-x 755 Владелец, группа и другие могут читать каталог, но только владелец может изменять содержимое.

Существуют и другие способы изменения прав доступа в Linux, используя команду chmod. Но нашей персональной рекомендацией станет, изучение одной из этих команд и её использование (в этом случае способ с номерами). Если вы хотите узнать больше о других путях изменения прав доступа, вы можете прочитать об этом здесь.

Доступ к файлу

Доступ к файлу на чтение и запись — довольно очевидные понятия:

Пример 10. Что можно и что нельзя делать с файлом, доступ к которому ограничен

Следует заметить, что Мефодию известна операция перенаправления вывода — «», с помощью которой он создаёт файлы в своём домашнем каталоге. Добавление «» в командную строку приводит к тому, что всё, что вывелось бы на экран терминала, попадает в .

Точнее, на стандартный вывод программы, такое перенаправление не касается стандартного вывода ошибок.

Мефодий создаёт файл, проверяет, можно ли из него читать, командой cat, запрещает доступ на чтение и снова проверяет: на этот раз сообщает об отказе в доступе («Permission denied»). Тем не менее записать в этот файл, перенаправив выдачу оказывается возможным, потому что доступ на запись не закрыт. Если же закрыть доступ на запись, а доступ на чтение открыть (Мефодий сделал это в одной командной строке, разделив команды символом «»), невозможным станет изменение этого файла: попытка перенаправить вывод программы будет неуспешной, а чтение снова заработает. Сработает и удаление этого файла, хотя , на всякий случай, предупредит о том, что файл защищён от записи.

Подытожим

Для каждого файла или директории в Linux задаются права доступа. Они задаются тремя атрибутами: набором разрешений, именем владельца, именем группы.

Набор разрешений — это три блока прав доступа: права доступа для владельца файла, права доступа для группы, права доступа для всех остальных.

Разрешения записываются символами r, w, x.

Набор разрешений состоит из трех блоков и записывается в виде трех rwx, записанных друг за другом в виде одного «слова».

Если какая-либо возможность отключена (запрещена), то вместо соответствующего символа в наборе разрешений ставится прочерк (символ минус).

Основная безопасность

Большинство пользователей дают себе полные права на чтение, запись и выполнение для своего домашнего каталога. Между тем, для группы или других пользователей никаких разрешений нет. Впоследствии, некоторые пользователи по разным причинам могут иметь несколько иную настройку.

Как правило, для оптимальной безопасности вы не должны предоставлять группе или другим пользователям права на запись в ваш домашний каталог. Между тем, иногда выполнение без чтения может оказаться полезным. Это позволяет людям входить в ваш домашний каталог, но не позволяет им видеть, что там.

Обычно система запускает веб-сервер и позволяет пользователям иметь свое собственное веб-пространство. Обычная настройка заключается в том, что если вы поместите каталог в свой домашний каталог с именем public_html, то веб-сервер будет читать и отображать его содержимое. Однако веб-сервер работает от имени другого пользователя, поэтому по умолчанию он не будет иметь доступа для доступа и чтения этих файлов. Это ситуация, когда необходимо предоставить команду execute для вашего домашнего каталога, чтобы пользователь веб-сервера мог получить доступ к необходимым ресурсам.

Как дать права на папку Linux

Операционные системы Линукс позволяют давать права на каталог с помощью команды «chmod». Выполнена она может быть символьным или абсолютным видом. В первом случае присваиваются параметры r, w или x, которые определяют, можно ли тому или иному пользователю читать, просматривать или изменять данные.

Гораздо практичнее воспользоваться абсолютным способом. Он основан на команде «rw-r—». Эти символы означают то, что User способен лишь читать и изменять файл (ключи r и w соответственно). При этом участники группы, в которой он состоит. Могут лишь просматривать содержимое.

Важно! Любой другой пользователь просто не получит доступа к данным, если он не в группе. Для работы с абсолютным редактированием прав, необходимо переводить параметры в восьмеричную систему счисления

К примеру, если человек может читать файл или папку, то это «1». Если еще и редактировать, то это тоже «1».  Запуск ограничен, поэтому «0». Получается число «110». Перевод его в восьмеричную систему дает результат «6». После этого по образцу шифруют права группы и посторонних людей. Получается три цифры, которые будут использованы в команде «chmod ХХХ имя_файла», где ХХХ – цифры привилегий в восьмеричной системе, а «имя файла» – наименование папки или файла, права которых редактируются

Для работы с абсолютным редактированием прав, необходимо переводить параметры в восьмеричную систему счисления. К примеру, если человек может читать файл или папку, то это «1». Если еще и редактировать, то это тоже «1».  Запуск ограничен, поэтому «0». Получается число «110». Перевод его в восьмеричную систему дает результат «6». После этого по образцу шифруют права группы и посторонних людей. Получается три цифры, которые будут использованы в команде «chmod ХХХ имя_файла», где ХХХ – цифры привилегий в восьмеричной системе, а «имя файла» – наименование папки или файла, права которых редактируются.

Таблица перевода параметров из двоичной в восьмеричную систему

Сортировка объявлений

Вы можете отсортировать список по расширению, размеру файла или времени изменения. Эти параметры необязательно использовать с форматом длинного списка, но обычно это имеет смысл. Если вы выполняете сортировку по размеру файла, имеет смысл увидеть размеры файлов в списке. Когда вы сортируете по типу расширения, формат длинного списка не так важен.

Для сортировки по расширению используйте параметр -X (сортировка по расширению).

ls -X -1

Сначала перечисляются каталоги (без расширений), затем в алфавитном порядке следуют остальные в соответствии с расширениями.

Для сортировки по размеру файла используйте параметр -S (сортировка по размеру файла).

ls -l -h -S

Порядок сортировки от наибольшего к наименьшему.

Чтобы отсортировать список по времени изменения, используйте параметр -t (сортировать по времени изменения).

ls -l -t

Список отсортирован по времени модификации.

Если время изменения файла находится в пределах текущего года, отображается информация о месяце, дне и времени. Если дата изменения была не в текущем году, отображается информация о месяце, дне и году.

Быстрый способ получить самые новые и самые старые файлы в каталоге — использовать ls с командами head и tail.

Чтобы получить самый новый файл или каталог, используйте эту команду:

ls -t | head -1

Чтобы получить самый старый файл или каталог, используйте эту команду:

ls -t | tail -1

Смена владельца и группы

Помимо изменения прав доступа к файлам, вы можете столкнуться с ситуацией необходимости изменения владельца файла или даже всей группы. Выполнение любой из этих задач требует от вас наличие привилегий суперпользователя (root). Для этого я буду применять утилиту .

Чтобы изменить владельца файла, необходимо применить команду (сокр. от «change owner»), синтаксис которой довольно прост:

Если вы хотите сменить не только владельца, но также и группу для файла или каталога, то синтаксис будет следующим:

Если вы просто хотите изменить группу, а владельца оставить прежним, то синтаксис примет вид:

Или же используйте команду (сокр. от «change group«), специально применяемую для изменения владельца группы файла или каталога:

В качестве тренировки давайте сменим владельца и группу файла Адреса.txt на пользователя root и группу root (при этом вам могут понадобиться права суперпользователя):

Как вы можете видеть, владелец и группа файла сменились с на .

Заметьте, что мне пришлось использовать с . Это потому, что здесь задействован пользователь root, и чтобы иметь с ним дело, вам нужны права суперпользователя.

Есть ли приоритет в правах доступа к файлам?

Представим ситуацию, когда владелец не имеет никаких разрешений на доступ к файлу, группа имеет разрешение на чтение, в то время как другие пользователи имеют разрешения на чтение и запись.

Теперь, если пользователь diego попытается прочитать файл с помощью команды или , сможет ли он это сделать? Ответ — нет, потому что у него нет разрешения на чтение.

Но как же так? Ведь пользователь diego является частью группы coolgroup, а группа имеет доступ на чтение. И даже все другие пользователи имеет разрешение на чтение и запись! Это должно означать, что каждый (включая пользователя diego) может читать и изменять файл, не так ли? Неправильно!

В Linux-системах приоритет считывания прав доступа отдается сначала Владельцу, затем Группе, а уже после Остальным. Система определяет, кто инициировал процесс ( или  в нашем примере). Если пользователь, инициировавший процесс, также является Владельцем файла, то считываются биты разрешений для Владельца.

Если процесс инициировал не Владелец файла, то система проверяет Группу. Если пользователь, инициировавший процесс, находится в той же Группе, что и Группа-владелец файла, то считываются биты разрешений для Группы.

Если же инициировавший процесс пользователь не является Владельцем файла и не входит в соответствующую Группу, то для него устанавливаются биты разрешений как для Остальных пользователей.

Практические задания

  • Изучите разрешения вашего домашнего каталога, а затем посмотрите на права доступа к различным файлам в нем.
  • Войдите в каталог linuxtutorialwork и измените права доступа к некоторым файлам в нем. Попробуйте использовать как сокращенную, так и полную форму для установки разрешений. Попробуйте удалить разрешение на чтение файла, а затем попытайтесь открыть его. Или удалите разрешение на запись, а затем откройте его в Vi.
  • Поэкспериментируйте с каталогами. Создайте каталог и поместите в него несколько файлов. Попробуйте удалить различные права доступа для себя в этом каталоге и посмотреть, что вы можете, а что — нет. 
  • Посмотрите, какие разрешения установлены для файлов в других системных каталогах, таких как /etc и /bin.

Как работают права доступа

Есть 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. Вот, как восьмеричные числа выглядят в двоичной с. с.

Категории пользователей по отношению к файлу

GNU/Linux как любая Unix-подобная операционная система является многопользовательской. Это значит, что в системе могут работать одновременно или по-очереди несколько или множество пользователей. У каждого из них должно быть собственное файловое пространство, доступ к которому других пользователей ограничен.

Отсюда вытекает, что у любого файла в Linux должны быть специальные атрибуты – права на доступ. Эти атрибуты должны сообщать, кто имеет право работать с файлом.

Выделяют три категории пользователей, которым могут предоставляться права на файл:

  • Сам владелец (u – user) объекта – конкретный пользователь, чье имя числится в атрибутах файла как имя владельца этого файла. Обычно если пользователь создает файл, то он автоматически записывается как его владелец.

  • Группа (g – group), к которой принадлежит владелец файла. Когда в Linux создается пользователь, то для него создается одноименная группа. Однако средствами администрирования системы можно объединять пользователей в различные группы. При этом конкретный пользователь может входить в состав нескольких групп. Группы позволяют предоставлять права доступа к ресурсам сразу нескольким людям, но при этом ограниченному кругу лиц.

  • Все остальные (o – other) – это все те, кто не является владельцем файла и не принадлежит к группе владельца файла. То есть любой посторонний пользователь.

Права на файл могут изменять только владелец этого файла и суперпользователь.

Пример на практике

Рассмотрим следующий пример:

Здесь владелец (diego) файла Адреса.txt (который я заранее создал в папке ) имеет доступ к его «Просмотру и Изменению», в то время как другие члены его группы (её название совпадает с именем владельца — diego), а также все остальные пользователи, не входящие в эту группу, имеют доступ «Только просмотр». Поэтому они могут открыть файл, но не могут вносить в него изменения.

Чтобы изменить права доступа к файлу, пользователь может открыть выпадающее меню и для каждой категории пользователей выбрать нужное разрешение. Кроме того, вы можете сделать файл Исполняемым, позволяя ему работать как программа, установив флажок .

Примечание: Команда используется для вывода содержимого каталогов и информации о файлах. Ключ используется для вывода детальной информации о правах доступа, владельце, размере файла и пр.

Если применить команду к нашему файлу Адреса.txt, то мы будем наблюдать такой вывод:

Выходные данные содержат следующую информацию:

Рассмотрим детально:

   Тип — обозначает тип объекта. Это может быть обычный файл (), каталог () или ссылка ().

   Разрешения (права доступа) — в этом поле отображается набор разрешений для файла, о которых мы поговорим ниже.

   Жесткая ссылка — отображает количество ссылок, имеющихся у файла. По умолчанию устанавливается значение .

   Владелец — имя пользователя, который владеет файлом. Часто (но не всегда) совпадает с именем его создателя.

   Группа — группа, имеющая доступ к файлу. Одновременно владеть файлом может только одна группа.

   Размер — размер файла в байтах.

   Дата модификации — дата и время последнего изменения файла.

   Имя файла.

Информация о правах доступа к файлу сгруппирована в строку символов, перед которой стоит . При этом каждая буква задает определенное разрешение, а именно:

    (read) — разрешение на чтение/просмотр файла;

    (write) — разрешение на запись/изменение файла;

    (execute) — разрешение на выполнение файла;

    — нет набора разрешений.

Пользователи, имеющие разрешение на Чтение, могут видеть содержимое файла (или файлов в каталоге), однако они не могут изменить его (или добавить/удалить файлы в каталоге). С другой стороны, те, у кого есть права на Запись, могут редактировать (добавлять и удалять) файлы. Наконец, возможность Выполнения означает, что пользователь может запустить файл. Эта опция в основном используется для запуска скриптов.

Разрешения всегда идут именно в таком порядке, то есть . А далее, они устанавливаются для всех трех категорий пользователей в порядке Владелец, Группа и Остальные/Другие:

Итак, если вы вооружитесь вышеприведенной картинкой и посмотрите на вывод команды , то сможете сказать следующие вещи о правах доступа к файлу Адреса.txt:

Что мы видим?

   Владелец diego имеет права на чтение и запись в файл.

   Группа diego имеет права только на чтение.

   Остальным пользователям (всем, кто имеет доступ к системе) также доступно только чтение файла. Вам не нужно знать кто этот другой пользователь, потому что к другому относятся все остальные пользователи.

Теперь попробуем применить ту же самую команду , но к другому файлу:

Что мы видим?

   Владельцем файла является пользователь root, который имеет права доступа на чтение, изменение и выполнение файла ().

   Все члены группы root имеют права на чтение и выполнение файла ().

   Остальные пользователи тоже имеют права на чтение и выполнение файла ().

Замечу, что один пользователь может быть членом нескольких групп, но только основная группа пользователя может быть назначена файлу. Основную группу пользователя можно найти с помощью команды , например, . Оставьте пустым, если вы хотите получить информацию о своей собственной основной группе.

Теперь, когда вы знаете, как узнать права доступа к файлу, давайте посмотрим, каким образом можно сменить их и владельца файла.

Подводя итоги

   Linux-системы являются многопользовательскими системами, в которых применяются права доступа к файлам и каталогам.

   В Linux-системах различают три категории пользователей, а именно: Владелец, Группа и Остальные/Другие.

   Права доступа к файлам подразделяются на права Чтения/Просмотра, Записи/Изменения и Выполнения, обозначаемые буквами , и .

   Права доступа к файлу могут быть изменены командой , которая поддерживает как числовой, так и символьный режимы задания прав доступа.

   Команда может изменить владельца файла/каталога.

   Команда может изменить группу, владеющую файлом.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: