chmod — изменение режима доступа к файлам


Оглавление (нажмите, чтобы открыть):

chmod

(PHP 3, PHP 4, PHP 5)

chmod — Изменяет режим доступа к файлу или каталогу

Описание

Осуществляет попытку изменения режима доступа файла или каталога, переданного в параметре filename на режим, переданный в параметре mode.

Обратите внимание, что значение параметра mode не переводится автоматически в восьмеричную систему счисления, поэтому строки (такие, как, например, «g+w») не будут работать должным образом. Чтобы удостовериться в том, что режим был установлен верно, предваряйте значение, передаваемое в параметре mode, нулем (0):

Значение параметра mode состоит из трех восьмеричных чисел, определяющих уровень доступа для владельца файла, для группы, в которую входит владелец, и для других пользователей, соответственно. Число, определяющее уровень пользователя, может быть вычислено путем суммирования значений, определяющих права: 1 — доступ на выполнение, 2 — доступ на запись, 4 — доступ на чтение. Более подробно о системе прав в системах Unix вы можете узнать с помощью команд ‘man 1 chmod’ and ‘man 2 chmod’.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание: Текущим пользователем является пользователь, от имени которого выполняется PHP. Возможно, что этот пользователь будет отличаться от пользователя, под именем которого вы получаете доступ к командной оболочке или учетной записи FTP.

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

Замечание: Когда безопасный режим включён, PHP проверяет имеет ли файл или директория, с которой вы работаете, такой же UID, как и выполняемый скрипт. Кроме того, вы не можете устанавливать SUID, SGID и «липкие» биты.

См.также описание функций chown() и chgrp() .

chmod

Изменение файловых режимов (POSIX)

QNX Neutrino, Linux, Microsoft Windows

Вывести расширенную информацию; отображать выполняемые операции.

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

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

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

Для изменения битов режима полномочий дуступа к файлу пользователь утилиты chmod должен быть владельцем файла или суперпользователем root .

Опция режим может быть выражением символьного режима симв_режим или неотрицательным восьмеричным целым числом.

Символьный режим симв_режим имеет следующую форму:

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

Пользовательский, групповой и прочий доступ.

Часть оператор представляет собой один из следующих вариантов:

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

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

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

Часть копия определяет следующие неизмененные полномочия (т.е. существовавшие до выполнения утилиты chmod ):

Часть полномочия представляет собой любую комбинацию следующих опций:

Полномочие на чтение.

Полномочие на запись.

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


Полномочие на выполнение.

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

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

Назначение файла myfile исполняемым для всех:

chmod a+x myfile

Удаление полномочия группы и прочих полномочий на чтение:

chmod og-r myfile

Выполнение обеих вышеупомянутых операций в указанном порядке на трех файлах: myfile , file2 и zzz :

chmod a+x,og-r myfile file2 zzz

chmod u+r,u-w,g=o myfile

В восьмеричном режиме полномочия определяются трехзначным восьмеричным числом. Три цифры представляют полномочия пользователя, группы и прочие соответственно.

Каждое полномочие можно указать с помощью восьмеричного числа: чтение = 4 ; запись = 2 ; выполнение = 1 ; отсутствие полномочия = 0 . Восьмеричные эквиваленты получают сложением чисел, связанных с четырьмя основными полномочиями. Их использование показано в следующей таблице.

Команда chmod – изменение прав доступа

Команда chmod (change mode – сменить режим) предназначена для изменения прав доступа к файлам и каталогам в Unix-подобных операционных системах.

Синтаксис команды выглядит следующим образом:

chmod [ключи] установка_прав имя_файла

Ключи необязательны. Устанавливать права можно двумя способами: с помощью буквенного обозначения прав (rwx) и с помощью числового в восьмеричной системе счисления.

Изменение прав с помощью символьной нотации

При установке прав с помощью символов в первом аргументе ( установка_прав ) программы chmod используются три группы символов.

В первой группе указывается, кому будет предоставляться или запрещаться доступ: владельцу (u), группе (g), остальным (o) или всем (a). Можно указать как одну, так сразу несколько категорий.

Вторая группа обозначает запрещение, разрешение или назначение права и всегда состоит из одного символа: -, + или =.

В третьей группе перечисляется изменяемые права: чтение (r), запись (w), исполнение (x). Можно указывать сразу несколько прав.

На скрине в первом примере группе добавляется право на запись, что выражается как g+w. Во втором примере группе и остальным назначается право r—. В третьем случае остальным запрещается читать файл. Отметим, что один и тот же результат можно получить разными способами: как через назначение, так добавлением или удалением права.

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

chmod o-r,a-w month.txt text.txt

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

Установка прав с помощью чисел

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

7 – разрешены чтение, запись, исполнение
6 – разрешены чтение и запись
5 – разрешены чтение и исполнение
4 – разрешено только чтение
0 – ничего не разрешено

В первом аргументе chmod указываются три цифры: первая обозначает права владельца, вторая – группы, третья – остальных.

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

Установка прав для каталогов

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


В примере мы устанавливаем для каталога и вложенных в него объектов права 754. По отношению к каталогам это означает, что владелец может делать все, группа – просматривать содержимое каталога, остальные – только узнавать список объектов каталога. Обратите внимание на использование ключа -d команды ls. Он позволяет получить сведения о самом каталоге, а не его содержимом.

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

В примере команда chmod применяется в числовой нотации. При этом используется дополнительная цифра 1, которая обозначает установку t-бита. В буквенной нотации достаточно просто написать +t без указания категории пользователей. В выдаче команды ls мы видим символ t вместо икса в тройке прав всех остальных. Это не значит, что бит t заменяет бит x. Это особенность вывода информации. Буква t говорит, что право на исполнение есть. Если бы его не было, использовалась бы заглавная буква.

Курс с ответами к заданиям и дополнительными уроками:
android-приложение, pdf-версия.

АйТи бубен

Инструменты пользователя

Инструменты сайта

Примеры использования команды chmod в Linux

chmod — программа для изменения прав доступа к файлам и каталогам. Название происходит от программы ОС Unix chmod, которая, собственно, изменяет права доступа к файлам, каталогам и символическим ссылкам.

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

Популярные цифровые значения:

Права доступа в Linux/Unux

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

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

В индексном дескрипторе каждого файла записаны имя так называемого владельца файла и группы, которая имеет права на этот файл. Первоначально, при создании файла его владельцем объявляется тот пользователь, который этот файл создал. Точнее — тот пользователь, от чьего имени запущен процесс, создающий файл. Группа тоже назначается при создании файла — по идентификатору группы процесса, создающего файл.

Посмотреть права доступа на объекты можно командой ls или stat (которая выводим например права доступа сразу в символьном и цифровом виде). Утилита ls

Утилита stat

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

Для файлов: r — право на чтение из файла; w — разрешает запись в файл (в частности перезапись или изменение); x — позволяет исполнить файл.

Для каталогов, флаги r w x имеют несколько отличный смысл: r — позволяет читать только имена файлов в каталоге; x — позволяет иметь доступ к самим файлам и их атрибутам (но не именам); w имеет смысл только в сочетании с x, и позволяет (в дополнение к x) манипулировать с файлами в каталоге (создавать, удалять и переименовывать). w без x — не имеет никакого эффекта.

На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (—).

В каталоге с режимом доступа 3 (-wx) можно создавать новые, переименовывать и удалять файлы и каталоги (если вы знаете их имя); читать, изменять, запускать файл (если достаточно на него прав, и опять же — вы знаете его имя). Можно даже менять права доступа на файлы и каталоги (если вы знаете имя). Но самое интересное, что если вы сможете перейти (по cd5)) в подкаталог такого каталога (а для этого вам опять нужно знать его имя), то там у вас будет «все в ожуре» (если конечно у этого подкаталога будет нормальный режим доступа).

Никакой рекурсивный поиск/удаление тоже не сможет залезть внутрь такого каталога — ему ведь нужны названия — а их из такого каталога — никак не получить.

Но не надо думать, что такой каталог полноценно заменяет крипто-контейнер (т.е. может использоваться для хранения очень секретных данных). Да, имен объектов из такого каталога никак не получить, однако если попытаться создать объект с именем, которое уже существует, то такая операция закончится неудачей (т.е. мы получим подтверждение, что такое имя уже есть). Так же можно пытаться открыть (как файл или как каталог) объект с произвольным именем, если такого имени нет, то мы получим ошибку. Безусловно имя может быть очень длинным и шансы угадать его могут быть не велики, но не надо забывать, что права доступа могут сменить как владелец каталога так root. Да и пути доступа могут сохраниться в различных логах и файлах истории.

Права доступа Unix, SUID, SGID, Sticky биты

Содержание

Поддерживаемые версии Ubuntu
Все (теоретически)

Вступление

В 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)


Права доступа

Посмотреть права доступа на объекты можно командой ls c ключем -l («л»). Также можно добавить ключ -a, для того,чтобы были отображены скрытые объекты:

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

Для файлов: r — право на чтение из файла; w — разрешает запись в файл (в частности перезапись или изменение); x — позволяет исполнить файл.

Для каталогов, флаги r w x имеют несколько отличный смысл: r — позволяет читать только имена файлов в каталоге; x — позволяет иметь доступ к самим файлам и их атрибутам (но не именам); w имеет смысл только в сочетании с x, и позволяет (в дополнение к x) манипулировать с файлами в каталоге (создавать, удалять и переименовывать). w без x — не имеет никакого эффекта.

Рассмотрим таблицу, чтобы было понятнее:

OCT BIN Mask Права на файл Права на каталог
000 — — — отсутствие прав отсутствие прав
1 001 — — x права на выполнение доступ к файлам и их атрибутам 1)
2 010 — w — права на запись отсутствие прав
3 011 — w x права на запись и выполнение все, кроме доступа к именам файлов 2)
4 100 r — — права на чтение только чтение имен файлов
5 101 r — x права на чтение и выполнение чтение имен файлов и доступ файлам и их атрибутам 3)
6 110 r w — права на чтение и запись только чтение имен файлов
7 111 r w x полные права все права

Для администрирования часто удобнее использовать не буквенное представление прав, а цифровое, в восьмеричном представлении (оно короче). Так, например, права на файл всем и вся, соответствуют записи 777 (что аналогично символьному представлению rwxrwxrwx).

Существуют также специальные биты, такие как SUID, SGID и Sticky-бит. SUID, SGID влияют на запуск файла, а Sticky влияет на определение владельца объектов в каталоге. При их применении необходимо использовать не три восьмеричных цифры, а 4. Зачастую, в различной технической литературе права обозначаются именно 4-мя цифрами, например 0744. Многие стараются не использовать специальные биты, сетуя на безопасность (и не без основательно), но, в некоторых ситуациях без них не обойтись. Поговорим о них несколько позже.

Давайте рассмотрим пример, итак:

Для первой строки:

Восьмеричное обозначение прав для файла pro_ubuntu.zip: 0700.

Для второй строки (это каталог, о чем свидетельствует флаг «d»), по аналогии:

Восьмеричное обозначение в этом примере: 0755.

На практике для каталогов используется только три режима: 7 (rwx), 5 (r-x) и 0 (—).

В каталоге с режимом доступа 3 (-wx) можно создавать новые, переименовывать и удалять файлы и каталоги (если вы знаете их имя); читать, изменять, запускать файл (если достаточно на него прав, и опять же — вы знаете его имя). Можно даже менять права доступа на файлы и каталоги (если вы знаете имя). Но самое интересное, что если вы сможете перейти (по cd 5) ) в подкаталог такого каталога (а для этого вам опять нужно знать его имя), то там у вас будет «все в ожуре» (если конечно у этого подкаталога будет нормальный режим доступа).

Никакой рекурсивный поиск/удаление тоже не сможет залезть внутрь такого каталога — ему ведь нужны названия — а их из такого каталога — никак не получить.

Но не надо думать, что такой каталог полноценно заменяет крипто-контейнер (т.е. может использоваться для хранения очень секретных данных). Да, имен объектов из такого каталога никак не получить, однако если попытаться создать объект с именем, которое уже существует, то такая операция закончится неудачей (т.е. мы получим подтверждение, что такое имя уже есть). Так же можно пытаться открыть (как файл или как каталог) объект с произвольным именем, если такого имени нет, то мы получим ошибку. Безусловно имя может быть очень длинным и шансы угадать его могут быть не велики, но не надо забывать, что права доступа могут сменить как владелец каталога так root. Да и пути доступа могут сохраниться в различных логах и файлах истории.

Команда chmod

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

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

chmod

Опции

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

Права

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

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

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

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

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

Биты SU >

Unix отслеживает не символьные имена владельцев и групп, а их идентификаторы (UID — для пользователей и GID для групп). Эти идентификаторы хранятся в файлах /etc/passwd и /etc/group соответственно. Символьные эквиваленты идентификаторов используются только для удобства, например, при использовании команды ls, идентификаторы заменяются соответствующими символьными обозначениями.

1000 — идентификатор (GID) дополнительной группы allexserv пользователя allexserv 7)


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

Что касается процессов, то с ними связано не два идентификатора, а 4-е: реальный и эффективный пользовательский (UID), а также реальный и эффективный групповой (GID). Реальные номера применяются для учета использования системных ресурсов, а эффективные для определения прав доступа к процессам. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать ему сигналы, а также изменять приоритет.

Процесс не может явно изменить ни одного из своих четырех идентификаторов, но есть ситуации когда происходит косвенная установка новых эффективных идентификаторов процесса. Дело в том, что существуют два специальных бита: SUID (Set User ID — бит смены идентификатора пользователя) и SGID (Set Group ID — бит смены идентификатора группы). Когда пользователь или процесс запускает исполняемый файл с установленным одним из этих битов, файлу временно назначаются права его (файла) владельца или группы (в зависимости от того, какой бит задан). Таким образом, пользователь может даже запускать файлы от имени суперпользователя.

Вобщем, одним словом установка битов SUID или SGID позволит пользователям запускать исполняемые файлы от имени владельца (или группы) запускаемого файла. Например, как говорилось выше, команду chmod по умолчанию может запускать только root. Если мы установим SUID на исполняемый файл /bin/chmod, то обычный пользователь сможет использовать эту команду без использования sudo, так, что она будет выполнятся от имени пользователя root. В некоторых случаях очень удобное решение. Кстати по такому принципу работает команда passwd, c помощью которой пользователь может изменить свой пароль.

Однако, в системе FreeBSD, если скомпилировать ядро с поддержкой suiddir, а так же смонтировать раздел с этой опцией, то, все объекты создаваемые в каталоге где установлен SUID будут иметь владельца этого каталога (наследование). Реализация подобного в Linux возможна (?) на файловой системе GFS2. Данная функция считается уязвимостью.

Установить SUID и SGID можно командой chmod:

Как изменить Права Доступа в Linux

Введение

В этом руководстве вы научитесь изменять права доступа в Linux / Unix и устанавливать нового владельца файла/папки через командную строку. Существует 2 базовые команды, которые могут быть использованы для данных целей: chmod и chown.

Что вам понадобится

Перед тем, как вы начнете это руководство, вам понадобится следующее:

  • Доступ к командной строке

Шаг 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

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

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

Шаг 2 – Изменение владельца файла или папки через командную строку

chown – команда используется для смены владельца файла или папки. Самый стандартный синтаксис для этой команды:

К примеру, если у нас есть файл “demo.txt” и мы хотим изменить владельца на “jerry” и группу владельца на “clients”, нам необходима эта команда:

Как вы видите, мы отделили владельца и группу владельца символом “:” (двоеточие). Если мы хотим поменять только владельца файла, используем этот код:

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

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

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

Шаг 3 – Использование дополнительных опций с командами chmod и chown

Одна из основных опций работающая с обеими командами это -R, которая означает рекурсивный. Эта опция позволяет вам менять права доступа и владельца файла, заданной папки и ВСЕХ других файлов внутри нее.

ВАЖНО! Будьте очень осторожны с этой опцией, если вы используете ее неправильно, вы можете изменить права доступа и владельца ВСЕХ файлов в вашей системе, что приведет к ошибкам в работе и трате огромного количества времени на откат изменений.

Другие опции для “chmod” и “chown”:

  • “-f” – тихая или силовая опция. При использовании данной опции скроет большинство сообщений об ошибках.
  • “-v” – делает диагностику каждого файла затронутого командой.
  • “-c” – схожа с опцией -v, но предоставляет информацию только в случае реальных изменений.

Заключение

В этом руководстве вы научились, как изменить права доступа Linux и узнали команды для смены владельца папки или файла. Знание данных команд поможет вам в более удобном управлении вашим сервером. Если вы хотите продолжить изучение по данной теме, проверьте эти руководства:

Примеры команд Chmod в Linux

Рано или поздно в мире Linux вам придется изменить разрешение для файла или каталога. Это делается с помощью команды chmod.

В этой статье мы поделимся с вами некоторыми практическими примерами команды chmod. А также объясним некоторые популярные термины, такие как chmod 777 или chmod 755 или chmod -r.

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

Команда Chmod в Linux

Что такое CHMOD? chmod обозначает режим изменения. Эта команда используется для изменения режима доступа.

Но подождите! Разве это не предназначено для изменения разрешения? На самом деле, в первые дни Unix разрешения назывались режимом доступа. Вот почему эта конкретная команда была названа chmod.

Команда chmod имеет следующий синтаксис:

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

  • -v : выводить диагностику для каждого обработанного файла
  • -c : нравится многословно, но сообщать только при внесении изменений
  • –Reference = FILE: использовать режим FILE вместо значений MODE
  • – R : рекурсивно изменять права

Обратите внимание, что опцию -v применяйте, если были внесены изменения или ничего не нужно было делать. В сочетании с параметром -R , -v может выдавать много результатов. –Reference = FILE позволяет использовать текущий режим разрешений FILE в качестве разрешений, устанавливаемых для целевого файла. Обратите внимание, что для этого параметра требуется использовать префикс двойной тире (-), а не (-).

Примеры команд Chmod в Linux

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

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

Вы можете сделать то же самое в символическом режиме.

Если вам нужен простой способ узнать разрешение файла Linux в числовом или символьном режиме, вы можете использовать этот калькулятор chmod. Просто выберите соответствующие разрешения, и они сообщат вам разрешения как в абсолютном, так и в символическом режиме.


Изменить разрешение на все файлы в каталоге рекурсивно

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

chmod 777: все для всех

Возможно, вы слышали о chmod 777. Эта команда предоставит права на чтение, запись и выполнение владельцу, группе и общедоступным.

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

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

chmod + x или chmod a + x: выполнение для всех

Вероятно, один из наиболее часто используемых случаев chmod – дать файлу бит выполнения. Часто после загрузки исполняемого файла вам необходимо добавить это разрешение перед его использованием. Чтобы дать владельцу, группе и всем остальным разрешение на выполнение файла:

CHMOD 755: только владелец может писать, читать и выполнять для всех

Эта следующая команда установит следующее разрешение для файла: rwxr-xr-x. Только владельцу будет разрешено писать в файл. Владелец, члены группы и все остальные будут иметь разрешение на чтение и выполнение.

chmod 700: все только для владельца

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

CHMOD 666: никто не выполняет

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

CHMOD 644: каждый может читать, только владелец может писать

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

CHMOD 600: владелец может читать и писать, больше ни для кого

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

Примеры команд chmod в символическом режиме

В приведенных выше примерах мы использем битовую маску для установки нового РЕЖИМА. Это легко рассчитать. Требуется простое дополнение. Учтите следующее:

Теперь вы можете легко увидеть, откуда у нас 755, 666, 640 . Вам не нужно использовать битовую маску для установки нового разрешения. Доступен более читабельный способ. Этот второй формат выглядит так:

Хотя это может показаться сложным, это довольно просто. Сначала вы набираете chmod и нужные вам ОПЦИИ. Затем спросите себя: для кого я меняю права доступа? Пользователь, Группа, Другие. Это даст вам первый раздел команды:

На следующем шаге для завершения команды вы решаете добавить биты прав доступа (+), удалить права доступа (-) или установить разрешение ( . Последнее добавит или удалит разрешения по мере необходимости, чтобы установить разрешение по вашему запросу.

В следующем разделе вы решаете РЕЖИМ разрешения применить (+), удалить (-) или сопоставить ( . Вы можете указать любую комбинацию RWX.

В следующем примере будет применено разрешение на чтение/запись для файла для владельца. Подробная опция заставит chmod сообщать о действии.

Следующим будет установлено разрешение на запись группы в каталог и все его содержимое рекурсивно. Он будет сообщать только об изменениях.

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

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

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

Слово предупреждения!

С помощью chmod и sudo вы теперь можете изменить разрешение практически для любых файлов. Это НЕ означает, что вы должны это сделать. Разрешения за пределами вашего домашнего каталога установлены так, как они есть по вполне понятной причине. Изменение их редко является подходящим решением любых проблем.

Мы надеемся, что эти примеры команд chmod были полезны для вас. Есть вопрос или предложение? Пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.


Национальная библиотека им. Н. Э. Баумана
Bauman National Library

Персональные инструменты

Chmod (change mode)

Chmod

Создатели: Daniel Robbins, Chris Houser, Aron Griffis
Разработчики: Проект GNU
Выпущена: February 1994 ; 25 years ago ( 1994-02 )
Постоянный выпуск: 8.5 / 23 April 2010 года ; 9 years ago ( 2010-04-23 )
Состояние разработки: Active
Написана на: C, HTML and CSS
Операционная система: Unux, Linux, Ubuntu
Локализация: Многоязычный
Тип ПО: Raster graphics editor
Лицензия: GPLv3+
Веб-сайт gnu .org

Сhmod (от англ. change mode) — программа для изменения прав доступа к файлам и директориям. Название происходит от программы ОС Unix chmod, которая, собственно, изменяет права доступа к файлам, директориям и символическим ссылкам.

Содержание

Синтаксис

  • R — рекурсивное изменение прав доступа для каталогов и их содержимого;
  • f не выдавать сообщения об ошибке для файлов, чьи права не могут быть изменены;
  • v подробно описывать действие или отсутствие действия для каждого файла.

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

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

Использование команды в числовом виде

Права записываются одной строкой сразу для трёх типов пользователей:

  • владельца файла (u);
  • других пользователей, входящих в группу владельца (g);
  • всех прочих пользователей (o);

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

Пример: в числовом виде, установить права rwx-rx-rx:

Пример — значение права «755»

Владелец Группа Остальные
восьмеричное значение 7 5 5
символьная запись rwx r-x r-x
обозначение типа пользователя u g o

Таким образом, права «755» записываются в символьном виде как «rwxr-xr-x». При этом для понимания сути задания прав в Unix-системах полезно знать представление чисел в двоичной системе счисления.

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

двоичная восьмеричная символьная права на файл права на директорию
000 нет нет
001 1 —x выполнение чтение файлов и их свойств
010 2 -w- запись нет
011 3 -wx запись и выполнение всё, кроме чтения списка файлов
100 4 r— чтение чтение имён файлов
101 5 r-x чтение и выполнение доступ на чтение
110 6 rw- чтение и запись чтение имён файлов
111 7 rwx все права все права

Часть разрешений имеет смысл только в сочетании с другими. Из первых четырёх пунктов (не дающих права на чтение файла) для файлов обычно используется только «—», то есть полный запрет доступа к файлу данному типу пользователей. Для директорий из всего списка обычно применяются только 0, 5 и 7 — запрет, чтение и выполнение, и полный доступ.

Суммировав эти коды для трёх типов пользователей, можно получить числовую или символьную запись. Например, chmod 444 <имяфайла>: 400+40+4=444 — все имеют право только на чтение (идентично «r—r—r—»).

Помимо стандартных разрешений ‘rwx’, команда chmod осуществляет также управление битами SGID, SUID и T. Установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно.

Для SUID вес — 4000, а для SGID — 2000. Данные атрибуты имеют смысл при установленном соответствующем бите исполнения и обозначаются при символьной записи буквой «s»: «rwsrwxrwx» и «rwxrwsrwx» соответственно.

Пример: chmod 4555 <имяфайла>— все имеют право на чтение и выполнение, но запускаться файл на исполнение будет с правами владельца.

Установка SGID для директории приведёт к установке принадлежности каждого нового создаваемого файла к той же группе, к которой принадлежит сама директория, а не к основной группе владельца, как это происходит по умолчанию. SUID для директории не имеет смысла.
sticky bit или restricted deletion flag (t-бит) используется только с директориями. Когда t-бит для директории не установлен, файл в данной директории может удалить (переименовать) любой пользователь, имеющий доступ на запись к данному файлу. Устанавливая t-бит на директорию, мы меняем это правило таким образом, что удалить (переименовать) файл может только владелец этого файла. Следуя приведённой выше кодировке, t-бит имеет вес 1000.

Примечание: Право на запись (w) даёт пользователю возможность записывать или изменять файл, а право на запись для каталога — возможность создавать новые файлы или удалять файлы из этого каталога. Если на каталоге стоит возможность записи (w), то файл внутри этого каталога можно будет удалить, даже если право на запись для него не установлено. (В соответствии с концепцией файловой системы POSIX).

Популярные значения

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) — Каждый пользователь может читать, редактировать и запускать на выполнение
1555 (-r-xr-xr-t) — Каждый пользователь имеет право читать и запускать на выполнение; удалить файл может только владелец этого файла
2555 (-r-xr-sr-x) — Каждый пользователь имеет право читать и запускать на выполнение с правами группы(user group) владельца файла
0440 (-r—r——) — Владелец и группа имеет право чтения никто другой не имеет права выполнять никакие действия
4555 (-r-sr-xr-x) — Каждый пользователь имеет право читать и запускать на выполнение с правами владельца файла

Использование команды в символьном виде

В символьном виде использование команды chmod позволяет более гибко добавлять, устанавливать или убирать права на файл(ы) или каталоги.
$ chmod [references][operator][modes] file .


References определяют пользователей, которым будут меняться права. References определяются одной или несколькими буквами:

Reference Class Описание
u user Владелец файла
g group Пользователи, входящие в группу владельца файла
o others Остальные пользователи
a all Все пользователи (или ugo)

Operator определяет операцию, которую будет выполнять chmod:

Operator Описание
+ добавить определенные права
удалить определенные права
= установить определенные права

Modes определяет какие именно права будут установлены, добавлены или удалены:

Mode Name Описание
r read чтение файла или содержимого каталога
w write запись в файл или в каталог
x execute выполнение файла или чтение содержимого каталога
X special execute выполнение, если файл является каталогом или уже имеет право на выполнение для какого-нибудь пользователя
s setuid/gid установленные атрибуты SUID или SGID позволяют запускать файл на выполнение с правами владельца файла или группы соответственно
t sticky устанавливая t-бит на директорию, мы меняем это правило таким образом, что удалить файл может только владелец этого файла

Примеры использования команды в символьном виде

Установить права «rwxr-xr-x» (0755) для файла:

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

Установить рекурсивно права на чтение для всех пользователей:

Рекурсивно удалить атрибуты SUID и SGID:

Особенности

Значениями по умолчанию являются:

  • для файлов: 644 (-rw-r—r—)
  • для директорий: 755 (drwxr-xr-x)

Значения разные для файлов и директорий потому, что флаг «выполнения» по-разному действует на файлы и директории. Для обычных файлов «выполнение» означает открытие файлов, для исполняемых файлов — их запуск, а для каталогов — просмотр содержимого.

Например, можно сделать из командной строки:

Следующая команда выполнит рекурсивное применение правил для всех файлов в директории «/home/test», а также для всех файлов во всех поддиректориях:

Следующая команда выполнит рекурсивное применение правил для всех директорий в директории «/home/test», а также для всех директорий во всех поддиректориях:

Того же результата можно добиться и без использования find (обратите внимание на заглавную X):

chmod в php

chmod играет важную роль при программировании на языке php. Особого внимания заслуживают случаи работы с файлами, особенно при настройке движков сайтов (CMS), форумов, гостевых книг и пр. Заметим, что chmod используется языком php только в Unix-подобной операционной системе, для которой и описаны приведенные ниже примеры. Заметим, что хостинг, в основном, базируется на Unix-подобной операционной системе. В этих примерах показаны только принципы программирования в php при работе с chmod. В силу особенностей языка php права доступа в нем записывается только в числовом формате, поэтому рекомендуем символьный формат chmod предварять символом 0.

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

chmod и Cute FTP

Cute FTP является одним из наиболее популярных FTP-клиентов в операционной системе Windows, обладающий широким спектром возможностей, в частности, изменение прав доступа на удаленном сервере. Программа является условно-бесплатной (shareware) и без регистрации будет работать только 30 дней.

После запуска программы необходимо войти на FTP-сервер. Для этого удобно воспользоваться Site Manager’ом, окно которого выскакивает при первом запуске программы. Если соединение еще не создано, то необходимо его создать нажав на кнопку New, затем FTP Site. После этого необходимо в поле Label ввести название соединения (может быть произвольным), в поле Host address вводится адрес FTP-сервера без указания протокола (без ftp://) и слеша в конце. В поля Username и Password необходимо ввести учетное имя и пароль доступа соответственно. Для соединения с сервером следует нажать Connect.

Внимание. Cute FTP по умолчанию сохраняет пароли. Это небезопасно! Если не требуется сохранять пароль, то поле Password заполнять не требуется. В этом случае программа сама спросит пароль. Более подробно см. в руководстве к программе.

Если файлы расположены в табличном виде, то в столбце Attributes можно увидеть права доступа. Для включения табличного вида необходимо в меню выбрать View/View/Details. В указанном столбце все элементы содержат по 10 символов, — последние 9 из них и есть chmod в символьном формате.

Для изменения прав доступа необходимо выделить требуемые файлы, а затем вызвать контекстное меню, в котором выбрать Properties / CHMOD (горячая клавиша [Alt]+[Enter]). В появившемся окошке можно изменить права доступа на требуемые, после чего следует нажать кнопку «Применить».

chmod и Total Commander

Total Commander является одним из лучших файловых менеджеров для Windows, имеющий двухпанельный интерфейс. Среди возможностей программы выделим способность выполнять функции FTP клиента. Программа также является условно-бесплатной (shareware) и без регистрации будет работать только 30 дней.

Подключение к FTP серверу можно осуществить, выбрав в меню Net/FTP Connect (горячая клавиша [Ctrl]+[F]) либо Net/FTP New Connection. (горячая клавиша [Ctrl]+[N]). После соединения в столбце Attr последние три символа будут показывать chmod в числовом формате. Для изменения прав доступа выделите требуемые файлы, затем выберите в меню Files/Change Attributes. В появившемся окошке можно изменять права доступа.

Chmod — изменение режима доступа к файлам


Очень важно иногда назначить права доступа на определенные файлы и папки, находящиеся на веб сервере, будь то в целях безопасности или просто для корректной работы скрипта. Это действие и называется chmod (change file mode), или по-русски: изменение режима доступа к файлам. Это название берет свое начало с команды Unix — chmod, которая изменяет разрешения на файлы. Со временем «chmod» стал синонимом слова «разрешение» («permission»).

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

Создавая файл, пользователь автоматически получает самые широкие права на делание с этим файлом чего угодно, его группа — несколько меньшие права, а все остальные — совсем ничтожные. В Unix есть только три основных права — читать файл или просматривать каталог («Read»), изменять файл или папку, записывая в неё что-нибудь, или вообще её удалять («Write»). Последнее право — право на запуск файла («eXecute»).

Режим chmod может обозначаться в числовом или символьном формате. Например: 755, rwxrxrx, 644 и т.д.

Как вы уже поняли, символы r, w и x обозначают, соответственно, read, write и execute. Выставлять права на файлы таким образом можно через любой ftp-клиент, например CuteFTP.

Обратите внимание на расстановку «галочек». Первыми идут галочки в полях «Владелец»: read, write, execute (rwx); потом идут поля «Группы»: read, execute (rx); и наконец поля «Остальных»: read, execute (rx). В итоге мы получили права rwxrxrx на файл (по очереди букв и полей). То есть, владелец может читать, записывать и исполнять файл; «группа» и «остальные» имеют право на чтение и исполнение файла, но не на запись! Теперь вы должны осознавать важность установки прав на файлы и постараться обеспечить максимальную безопасность ваших скриптов и данных на сервере с помощью этого инструмента.

Обратите внимание на число 755 в поле Manual. Оказывается, каждое право имеет определенный числовой код и может быть выставленно вручную:

  • 400 — владелец имеет право на чтение;
  • 200 — владелец имеет право на запись;
  • 100 — владелец имеет право на выполнение;
  • 40 — группа имеет право на чтение;
  • 20 — группа имеет право на запись;
  • 10 — группа имеет право на выполнение;
  • 4 — остальные имеют право на чтение;
  • 2 — остальные имеют право на запись;
  • 1 — остальные имеют право на выполнение.

Сумма этих пунктов дает желаемый chmod. Например, мы хотим чтобы владелец мог делать все, а группа и остальные — только читать файл. Складываем: 400+200+100+40+4=744. То есть нам необходим chmod 744. Теперь осталось только просуммировать числа, соответствующие тем правам доступа, которые мы хотим поставить файлу, и установить их.

Примеры:

  • 400+40+4=444 — все имеют право только на чтение.
  • 400+100+10+1=611 — владелец может читать и выполнять, остальные — только выполнять.
  • 400+200+40+4=644 — означает, что вы позволяете всем его читать, но писать в этот файл может только владелец файла. Даже если вы являетесь владельцем файла и открываете его в браузере, то вы не сможете ничего в него записать, поскольку доступ через браузер делает вас анонимным пользователем.
  • 400+200+40+20+4+2=666 — означает, что все могут и читать и писать этот файл. Это необходимо, чтобы пользовател могли делать записи в гостевых книгах, форумах и т.д.
  • 400+200+100+40+10+4+1=755 — классическая команда для cgi-скритпа. CGI-скрипт — это исполняемый файл, и все должны иметь к нему доступ на чтение и выполнение. Только владелец этого файла может его изменять или удалять.

Приведем еще более удобную, таблицу расчета chmod:

Значения Owner (Владелец) Group (Группа) Public (Остальные)
Read = 4 X X X
Write = 2 X
Execute = 1 X X X
Сумма: (4 + 2 + 1) = 7 (4 + 1) = 5 (4 + 1) = 5

И в завершении кратко о том, как эти разрешения устанавливаются. Делается это с помощью любого ftp-клиента:

В Windows Commander они изменяются через пункты меню «Файл» » «Изменить аттрибуты». При этом изменяются разрешения на выделенный файл (файлы) и/или папки.

В FAR Manager разрешения выделенных файлов изменяются нажатием Ctrl+A:

В CuteFTP разрешения меняются с помощью пункта «Change file attributes» (изменить аттрибуты файла) меню, выпадающего при клике правой кнопкой мышки по имени файла.

Chmod — изменение режима доступа к файлам

НАЗВАНИЕ
chmod — изменение режима доступа к файлам

ОПИСАНИЕ
Права доступа к указанным файлам (среди которых могут быть каталоги) изменяются в соответствии с указанным режимом. Режим может быть задан в абсолютном или символьном виде.

Абсолютный вид — восьмеричное число, являющееся поразрядным ИЛИ следующих режимов: 04000 При выполнении переустановить действующий идентификатор пользователя. 020#0 При выполнении переустановить действующий идентификатор группы, если # есть 7, 5, 3 или 1; учитывать блокировку доступа, если # есть 6, 4, 2 или 0. 01000 Бит навязчивости [см. man chmod(2)]. 00400 Доступен для чтения владельцем. 00200 Доступен для записи владельцем. 00100 Доступен для выполнения (в случае каталога — для просмотра) владельцем. 00040 Доступен для чтения членами группы. 00020 Доступен для записи членами группы. 00010 Доступен для выполнения (просмотра) членами группы. 00004 Доступен для чтения прочими пользователями. 00002 Доступен для записи прочими пользователями. 00001 Доступен для выполнения (просмотра) прочими пользователями.

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

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

Для задания режима доступа в символьном виде используется следующий синтаксис:

Часть [кому] есть комбинация букв u, g и o (владелец, члены группы и прочие пользователи соответственно). Если часть кому опущена или указано a, то это эквивалентно ugo.

Операция может быть: + (добавить право), — (лишить права), = (в пределах данного класса присвоить права абсолютно, то есть добавить указанные права и отнять неуказанные).

Права — любая осмысленная комбинация следующих букв:

r Право на чтение.
w Право на запись.
x Право на выполнение (поиск в каталоге).
s При выполнении переустанавливать действующий идентификатор пользователя или группы.
t После выполнения программы сохранять сегмент команд (бит навязчивости).
l Учет блокировки доступа.

Опустить часть права можно только если операция есть = (для лишения всех прав).

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

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

Учет блокировки доступа (l) к файлу и его частям означает возможность монопольного захвата сегментов файла на время их обработки. Нельзя, однако, разрешить выполнение файла для членов группы и одновременно учитывать блокировку файла. Нельзя также разрешить переустановить при выполнении действующий идентификатор группы и учитывать блокировку файла. Таким образом, следующие команды являются некорректными: Попытка их выполнения вызовет соответствующую диагностику.

Изменить режим доступа к файлу может только его владелец или суперпользователь. Бит навязчивости может установить только суперпользователь. Чтобы добавить право переустановки идентификатора группы, надо быть членом этой группы; кроме того, для членов группы должно быть установлено право выполнения.

Для просмотра прав доступа и контроля при их изменении используется команда ls с флагом -l. Права переустановки идентификаторов пользователя и группы отмечаются буквой s на месте соответствующей буквы x: малой s, если соответствующая категория пользователей имеет право x, и большой S — если не имеет; право t отмечается на месте последней буквы x: малой t, если прочие пользователи имеют право выполнять файл, и большой T — если не имеют. Право l отмечается на месте права x для членов группы.

ПРИМЕРЫ

  1. Чтобы установить права, позволяющие владельцу читать и писать в файл, а членам группы и прочим пользователям только читать, надо сложить 0400, 0200, 0040 и 0004. Таким образом, команду можно записать двумя способами:
  2. Позволить всем выполнять файл f2:
  3. Учитывать блокировку доступа к файлу f3:
  4. Дать всем права на чтение запись и выполнение, а также на переустановку идентификатора группы при выполнении файла f4:
Мастер Йода рекомендует:  Какую структуру данных выбрать для реализации словаря
Добавить комментарий