Chmod 700 что это
Команда chmod Linux
Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а этой, я хочу остановиться на команде chmod, которая используется для установки прав.
Команда chmod Linux
Эта команда имеет типичный для команд linux синтаксис, сначала команда, затем опции, а в конце файл или папка, к которой ее нужно применить:
$ chmod опции права /путь/к/файлу
Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:
Также есть три категории пользователей, для которых вы можете установить эти права на файл linux:
Синтаксис настройки прав такой:
группа_пользователей действие в ид_прав
Но права можно записывать не только таким способом. Есть еще восьмеричный формат записи, он более сложен для понимания, но пишется короче и проще. Я не буду рассказывать как считать эти цифры, просто запомните какая цифра за что отвечает, так проще:
Права на папку linux такие же, как и для файла. Во время установки прав сначала укажите цифру прав для владельца, затем для группы, а потом для остальных. Например, :
Каждая из цифр не зависит от предыдущих, вы вбираете именно то, что вам нужно. Теперь давайте рассмотрим несколько опций команды, которые нам понадобятся во время работы:
Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.
Примеры использования chmod
Или можно воспользоваться цифровой записью:
Дальше разрешим только чтение всем, кроме владельца:
Или отберем все права:
Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:
Также вы можете смотреть подробную информацию про вносимые изменения, например:
Выводы
В этой небольшой статье была рассмотрена команда chmod linux. Она очень часто используется наряду с такими командами, как chown и umask для управления правами. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!
Команда Chmod в Linux (Права доступа к файлам)
Chmod Command in Linux (File Permissions)
В этом руководстве рассказывается, как использовать chmod команду для изменения прав доступа к файлам и каталогам.
В Linux доступ к файлам управляется через права доступа, атрибуты и владение файлами. Это обеспечивает доступ к файлам и каталогам только авторизованным пользователям и процессам.
Linux File Permissions
Прежде чем идти дальше, давайте объясним основную модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и ему назначены права доступа для трех разных классов пользователей:
Собственности файла можно изменить с помощью chown и chgrp команды.
Существует три типа прав доступа к файлам, которые применяются к каждому классу:
Эта концепция позволяет вам указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Права доступа к файлам можно просмотреть с помощью ls команды:
В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет права на чтение и запись ( rw- ), группа и другие пользователи имеют только права на чтение ( r— ).
Каждая из трех разрешений может состоять из следующих символов и иметь разные эффекты в зависимости от того, заданы они для файла или для каталога:
Влияние разрешений на файлы
Влияние разрешений на каталоги (папки)
С помощью chmod
Команда chmod принимает следующую общую форму:
Символьный (текстовый) метод
Синтаксис chmod команды при использовании символьного режима имеет следующий формат:
Первый набор флагов ( [ugoa…] ), флаги пользователей, определяет, для каких классов пользователей изменяются права доступа к файлу.
Второй набор флагов ( [-+=] ), флагов операций, определяет, следует ли удалять, добавлять или устанавливать разрешения:
При настройке разрешений для нескольких пользовательских классов ( [,…] ) используйте запятые (без пробелов) для разделения символьных режимов.
Ниже приведены некоторые примеры использования chmod команды в символическом режиме:
Дайте членам группы разрешение на чтение файла, но не на запись и выполнение:
Удалить разрешение на выполнение для всех пользователей:
Отвратительно удалите разрешение на запись для других пользователей:
Удалите права на чтение, запись и выполнение для всех пользователей, кроме владельца файла:
То же самое можно сделать с помощью следующей формы:
Дайте разрешение на чтение, запись и выполнение владельцу файла, разрешения на чтение для группы файла и никаких разрешений для всех остальных пользователей:
Добавьте разрешения владельца файла к разрешениям, которые имеют члены группы файла:
Добавьте липкий бит в данный каталог:
Численный метод
Синтаксис chmod команды при использовании числового метода имеет следующий формат:
При использовании числового режима вы можете установить разрешения для всех трех пользовательских классов (владелец, группа и все остальные) одновременно.
NUMBER Может быть 3 или 4-значное число.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
Число разрешений для определенного пользовательского класса представлено суммой значений разрешений для этой группы.
Чтобы узнать права доступа к файлу в числовом режиме, просто рассчитайте итоги для всех классов пользователей. Например, чтобы дать разрешение на чтение, запись и выполнение владельцу файла, разрешения на чтение и выполнение для группы файла и только разрешения на чтение для всех остальных пользователей, вы должны сделать следующее:
Когда используется 4-значный номер, первая цифра имеет следующее значение:
Следующие три цифры имеют то же значение, что и при использовании трехзначного числа.
Для вычисления числового режима вы также можете использовать другой метод (двоичный метод), но он немного сложнее. Знание того, как рассчитать числовой режим с использованием 4, 2 и 1, достаточно для большинства пользователей.
Вы можете проверить права доступа к файлу в числовой записи, используя stat команду:
Вот несколько примеров использования chmod команды в числовом режиме:
Дайте владельцу файла права на чтение и запись, а также права на чтение только для членов группы и всех остальных пользователей:
Дайте владельцу файла права на чтение, запись и выполнение, права на чтение и выполнение для членов группы и никаких разрешений для всех остальных пользователей:
Дайте разрешения на чтение, запись и выполнение, а также прикрепите бит к указанному каталогу:
Рекурсивно установите разрешения на чтение, запись и выполнение для владельца файла и никаких разрешений для всех других пользователей в данном каталоге:
Использование справочного файла
Например, следующая команда назначит права file1 на file2
Рекурсивно изменить права доступа к файлу
Например, чтобы изменить права доступа ко всем файлам и подкаталогам в /var/www каталоге, 755 вы должны использовать:
Работа с символическими ссылками
Символьные ссылки всегда имеют 777 разрешения.
По умолчанию при изменении разрешений символической ссылки chmod изменяются разрешения для файла, на который указывает ссылка.
Скорее всего, вместо изменения целевого владельца вы получите сообщение об ошибке «невозможно получить доступ к символической ссылке: отказано в доступе».
Изменение прав доступа к файлам навалом
Иногда возникают ситуации, когда вам нужно массово изменить разрешения для файлов и каталогов.
Используя числовой метод:
Используя символический метод:
Команда выполнит find поиск файлов и каталогов в папке /var/www/my_website и передаст каждый найденный файл и каталог chmod команде для установки разрешений.
Вывод
Команда chmod изменяет права доступа к файлу. Разрешения могут быть установлены с использованием символьного или числового режима.
chmod в Linux
Команда chmod используется для изменения прав доступа к файлам или каталогам.
В Linux и других Unix-подобных операционных системах для каждого файла существует набор правил, которые определяют, кто и как может получить доступ к этому файлу. Эти правила называются правами доступа к файлам или режимами файлов. Имя команды chmod означает «режим изменения» и используется для определения способа доступа к файлу.
В общем виде команды chmod выглядят так:
chmod параметры разрешения имя файла
Если параметры не указаны, chmod изменяет разрешения файла, указанного в имени файла, на разрешения, указанные в разрешениях.
Разрешения определяют права доступа для владельца файла («пользователь»), членов группы, владеющей файлом («группа»), и всех остальных («другие»). Существует два способа представления этих разрешений: с помощью символов (буквенно-цифровых символов) или восьмеричных чисел (цифры от 0 до 7).
Допустим, вы являетесь владельцем файла с именем myfile и хотите установить его разрешения так, чтобы:
Эта команда будет выглядеть вот так:
chmod u=rwx,g=rx,o=r myfile
В этом примере используется символьная запись разрешений. Буквы u, g и o обозначают «пользователь», «группа» и «другое». Знак равенства («=») означает «установить права доступа именно так», а буквы «r», «w» и «x» означают «чтение», «запись» и «выполнение» соответственно. Запятые разделяют различные классы разрешений, и между ними нет пробелов.
Вот эквивалентная команда, использующая восьмеричное обозначение разрешений:
Здесь цифры 7, 5 и 4 каждая по отдельности представляют разрешения для пользователя, группы и других в этом порядке. Каждая цифра представляет собой комбинацию чисел 4, 2, 1 и 0:
Синтаксис chmod
Параметры chmod
-f, —silent, —quiet Бесшумный режим; подавлять большинство сообщений об ошибках.
-v, —verbose Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.
—no-preserve-root Не обрабатывать ‘/’ (корневой каталог) каким-либо особым образом, который является настройкой по умолчанию.
—preserve-root Не работать рекурсивно на «/».
—reference=RFILE Установить разрешения, соответствующие разрешениям файла RFILE, игнорируя любой указанный РЕЖИМ.
-R, —recursive Менять файлы и каталоги рекурсивно.
—help Показать справочное сообщение и выйти.
—version Вывести информацию о версии и выйти.
Техническое описание
chmod изменяет режим файла каждого указанного ФАЙЛА в соответствии с MODE, который может быть либо символическим представлением вносимых изменений, либо восьмеричным числом, представляющим битовую комбинацию для битов нового режима.
Формат символического режима:
Комбинация букв u, g, o и элементов управления, которые изменят доступ пользователей к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, которых нет в файле группа (o) или все пользователи (a). Если ничего из этого не дано, эффект будет таким, как если бы был задан a, но биты, которые установлены в umask, не затрагивались.
Буквы r, w, x, X, s и t выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (x), выполнение только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X) установите идентификатор пользователя или группы при выполнении (s), флаг ограниченного удаления или фиксированный бит (t). Для каталогов параметры выполнения X и X определяют разрешение на просмотр содержимого каталога.
Вместо одной или нескольких из этих букв вы можете указать одну из букв u, g или o: разрешения, предоставленные пользователю, которому принадлежит файл (u), разрешения, предоставленные другим пользователям, которые являются членами группы файла (g) и разрешения, предоставленные пользователям, которые не входят ни в одну из двух предыдущих категорий (o).
chmod никогда не меняет права доступа к символическим ссылкам; системный вызов chmod не может изменить их разрешения. Но это не проблема, поскольку разрешения символических ссылок никогда не используются. Однако для каждой символической ссылки, указанной в командной строке, chmod изменяет права доступа к указанному файлу. Напротив, chmod игнорирует символические ссылки, встречающиеся во время рекурсивных обходов каталогов.
Биты Setuid и Setgid
chmod очищает бит set-group-ID обычного файла, если идентификатор группы файла не совпадает с эффективным идентификатором группы пользователя или одним из идентификаторов дополнительной группы пользователя, если только у пользователя нет соответствующих привилегий. Дополнительные ограничения могут привести к игнорированию битов set-user-ID и set-group-ID в MODE или RFILE. Это поведение зависит от политики и функциональности основного системного вызова chmod. В случае сомнений проверьте поведение системы.
chmod сохраняет биты set-user-ID и set-group-ID каталога, если вы не укажете иное. Вы можете установить или очистить биты с помощью символических режимов, таких как u + s и g-s, и вы можете установить (но не очистить) биты с помощью числового режима.
Флаг ограниченного удаления (или «Sticky Bit»)
Как посмотреть разрешения файла
Быстрый и простой способ составить список прав доступа к файлу с помощью опции длинного списка (-l) команды ls. Например, чтобы просмотреть разрешения для file.txt, вы можете использовать команду:
. который будет отображать вывод, который выглядит следующим образом:
Примеры использования chmod
Устанавливает для файла file.htm права «владелец может читать и писать; группа может только читать; другие могут только читать».
Рекурсивно (-R) меняет разрешения для каталога myfiles и всех его папок и файлов на режим 755. Пользователь может читать, записывать и выполнять; члены группы и другие пользователи могут читать и выполнять, но не могут писать.
Меняет разрешения для владельца example.jpg, чтобы владелец мог читать и записывать файл. Не меняет права доступа для группы или для других.
Устанавливает бит «Set-User-ID» файла comphope.txt, чтобы каждый, кто пытается получить доступ к этому файлу, сделал это так, как если бы он был владельцем файла.
Противоположность вышеупомянутой команды; снимает бит SUID
Устанавливает разрешения для file.cgi на «чтение, запись и выполнение владельцем» и «чтение и выполнение группой и всеми остальными».
Устанавливает разрешение file.txt на «чтение и запись всеми».
Выполняет то же самое, что и вышеприведенная команда, используя символическую запись.
Связанные команды
Примеры команд Chmod в Linux
Рано или поздно в мире Linux вам придется изменить разрешение для файла или каталога. Это делается с помощью команды chmod.
Прежде чем вы увидите примеры chmod, мы настоятельно рекомендуем вам изучить основы прав доступа к файлам в Linux. Использование команды chmod будет намного проще, когда вы поймете права доступа.
Команда Chmod в Linux
Что такое CHMOD? chmod обозначает режим изменения. Эта команда используется для изменения режима доступа.
Но подождите! Разве это не предназначено для изменения разрешения? На самом деле, в первые дни Unix разрешения назывались режимом доступа. Вот почему эта конкретная команда была названа chmod.
Команда chmod имеет следующий синтаксис:
Прежде чем вы увидите, как использовать chmod, вы должны знать его параметры.
Примеры команд 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 в символическом режиме
В приведенных выше примерах мы использем битовую маску для установки нового РЕЖИМА. Это легко рассчитать. Требуется простое дополнение. Учтите следующее:
Хотя это может показаться сложным, это довольно просто. Сначала вы набираете chmod и нужные вам ОПЦИИ. Затем спросите себя: для кого я меняю права доступа? Пользователь, Группа, Другие. Это даст вам первый раздел команды:
На следующем шаге для завершения команды вы решаете добавить биты прав доступа (+), удалить права доступа (-) или установить разрешение (=). Последнее добавит или удалит разрешения по мере необходимости, чтобы установить разрешение по вашему запросу.
В следующем разделе вы решаете РЕЖИМ разрешения применить (+), удалить (-) или сопоставить (=). Вы можете указать любую комбинацию RWX.
В следующем примере будет применено разрешение на чтение/запись для файла для владельца. Подробная опция заставит chmod сообщать о действии.
Следующим будет установлено разрешение на запись группы в каталог и все его содержимое рекурсивно. Он будет сообщать только об изменениях.
Вы можете объединить несколько операций, которые будут выполнены с разрешения, как в следующем примере. Он убедится, что владелец имеет права на чтение/запись/выполнение, а также добавит разрешение на запись для группы и удалит выполнение для всех остальных:
Есть больше опций и режимов, которые можно использовать с chmod, которые не описаны или не упомянуты здесь. Мы хотели сохранить это в общих чертах и, надеюсь, помочь нескольким новым пользователям Linux.
Слово предупреждения!
С помощью chmod и sudo вы теперь можете изменить разрешение практически для любых файлов. Это НЕ означает, что вы должны это сделать. Разрешения за пределами вашего домашнего каталога установлены так, как они есть по вполне понятной причине. Изменение их редко является подходящим решением любых проблем.
Мы надеемся, что эти примеры команд chmod были полезны для вас. Есть вопрос или предложение? Пожалуйста, оставьте комментарий ниже.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Права в Linux (chown, chmod, SUID, GUID, sticky bit, ACL, umask)
Всем привет. Это перевод статьи из книги RedHat RHCSA RHCE 7 RedHat Enterprise Linux 7 EX200 and EX300.
От себя: Надеюсь статья будет полезна не только начинающим, но и поможет более опытным администраторам упорядочить свои знания.
Чтобы получить доступ к файлам в Linux, используются разрешения. Эти разрешения назначаются трем объектам: файлу, группе и другому объекту (то есть всем остальным). В этой статье вы узнаете, как применять разрешения.
Статья начинается с обзора основных понятий, после чего обсуждаются специальные разрешения (Special permissions) и списки контроля доступа (ACL). В конце этой статьи рассматривается настройка прав доступа по умолчанию через umask, а также управление расширенными атрибутами пользователя.
Управление владением файлами
Прежде чем обсуждать разрешения, вы должны знать о роли владельца файла и каталога. Владение файлами и каталогами жизненно важно для работы с разрешениями. В этом разделе вы сначала узнаете, как вы можете увидеть владельца. Затем вы узнаете, как изменить владельца группы и пользователя для файлов и каталогов.
Отображение владельца файла или каталога
В Linux у каждого файла и каждого каталога есть два владельца: пользователь и группа.
Эти владельцы устанавливаются при создании файла или каталога. Пользователь, который создаёт файл становится владельцем этого файла, а первичная группа, в которую входит этот же пользователь, так же становится владельцем этого файла. Чтобы определить, есть ли у вас как у пользователя права доступа к файлу или каталогу, оболочка проверяет владение ими.
Это происходит в следующем порядке:
Вы также можете использовать find для поиска файлов, у которых определенная группа является их владельцем.
Например, следующая команда ищет все файлы, принадлежащие группе users:
Изменение владельца
Чтобы применить соответствующие разрешения, первое, что нужно учитывать, это владение. Для этого есть команда chown. Синтаксис этой команды несложен для понимания:
Например, следующая команда меняет владельца каталога /home/account на пользователя linda:
Команда chown имеет несколько опций, одна из которых особенно полезна: -R. Вы можете догадаться, что она делает, потому что эта опция доступна и для многих других команд. Это позволяет вам рекурсивно устанавливать владельца, что позволяет вам установить владельца текущего каталога и всего, что находится ниже. Следующая команда меняет владельца для каталога /home и всего, что находится под ним, на пользователя lisa:
Сейчас владельцы выглядят так:
Теперь пользователь lisa стал владельцем каталога account:
Изменение владельца группы
Есть два способа изменить владение группой. Вы можете сделать это, используя chown, но есть специальная команда с именем chgrp, которая выполняет эту работу. Если вы хотите использовать команду chown, используйте . или : перед названием группы.
Следующая команда изменяет какого-либо владельца группы /home/account на группу account:
Вы можете использовать chown для изменения владельца пользователя и/или группы несколькими способами. Вот несколько примеров:
Как и в случае с chown, вы можете использовать опцию -R с chgrp, а также рекурсивно менять владельца группы.
Понимание владельца по умолчанию
Вы могли заметить, что когда пользователь создает файл, применяется владение по умолчанию.
Пользователь, который создает файл, автоматически становится владельцем этого файла, а основная группа этого пользователя автоматически становится владельцем этого файла. Обычно это группа, которая указана в файле /etc/passwd в качестве основной группы пользователя. Однако если пользователь является членом нескольких групп, он может изменить эффективную основную группу.
Чтобы показать текущую эффективную первичную группу, пользователь может использовать команду groups:
Если текущий пользователь linda хочет изменить эффективную первичную группу, он будет использовать команду newgrp, за которой следует имя группы, которую он хочет установить в качестве новой эффективной первичной группы. После использования команды newgrp первичная группа будет активна, пока пользователь не введет команду exit или не выйдет из системы.
Ниже показано, как пользователь lisa использует эту команду, что бы первичной группой стала группа sales:
После изменения действующей основной группы все новые файлы, созданные пользователем, получат эту группу в качестве группы-владельца.Чтобы вернуться к исходной настройке первичной группы, используйте exit.
Чтобы иметь возможность использовать команду newgrp, пользователь должен быть членом той группы, которую он хочет использовать в качестве первичной. Кроме этого, групповой пароль может быть использован для группы с помощью команды gpasswd. Если пользователь использует команду newgrp, но не является членом целевой группы, оболочка запрашивает пароль группы. После того, как вы введете правильный групповой пароль, будет установлена новая эффективная первичная группа.
Управление основными правами
Система разрешений Linux была изобретена в 1970-х годах. Поскольку вычислительные потребности были ограничены в те годы, базовая система разрешений была довольно ограничена. Эта система разрешений использует три разрешения, которые можно применять к файлам и каталогам. В этом разделе вы узнаете, как использовать и изменять эти разрешения.
Понимание прав на чтение, запись и выполнение
Три основных разрешения позволяют вам читать, записывать и выполнять файлы. Эффект этих разрешений отличается при применении к файлам или каталогам. Применительно к файлу разрешение на чтение дает вам право открыть файл для чтения. Следовательно, вы можете прочитать его содержимое, но это означает, что ваш компьютер может открыть файл, чтобы что-то с ним сделать.
Программный файл, которому требуется доступ к библиотеке, должен, например, иметь доступ для чтения к этой библиотеке. Из этого следует, что разрешение на чтение — это самое основное разрешение, которое вам нужно для работы с файлами.
Применительно к каталогу чтение позволяет отображать содержимое этого каталога. Вы должны знать, что это разрешение не позволяет вам читать файлы в каталоге. Система разрешений Linux не знает наследования, и единственный способ прочитать файл — использовать разрешения на чтение для этого файла.
Как вы, вероятно, можете догадаться, разрешение на запись, если оно применяется к файлу, позволяет записывать в файл. Иначе говоря, позволяет изменять содержимое существующих файлов. Однако он не позволяет создавать или удалять новые файлы или изменять права доступа к файлу. Для этого вам нужно дать разрешение на запись каталогу, где вы хотите создать файл. В каталогах это разрешение также позволяет создавать и удалять новые подкаталоги.
Разрешение на выполнение — это то, что вам нужно для выполнения файла. Оно никогда не будет установлено по умолчанию, что делает Linux практически полностью невосприимчивым к вирусам. Только кто-то с правами записи на каталог может применять разрешение на выполнение.
Ниже обобщается использование основных разрешений:
Использование chmod
Для управления правами используется команда chmod. При использовании chmod вы можете устанавливать разрешения для пользователя (user), группы (group) и других (other). Вы можете использовать эту команду в двух режимах: относительный режим и абсолютный режим. В абсолютном режиме три цифры используются для установки основных разрешений.
При настройке разрешений рассчитайте необходимое вам значение. Если вы хотите установить чтение, запись и выполнение для пользователя, чтение и выполнение для группы, а также чтение и выполнение для других в файле /somefile, то вы используете следующую команду chmod:
Когда вы используете chmod таким способом, все текущие разрешения заменяются установленными вами разрешениями.
Если вы хотите изменить разрешения относительно текущих разрешений, вы можете использовать chmod в относительном режиме. При использовании chmod в относительном режиме вы работаете с тремя индикаторами, чтобы указать, что вы хотите сделать:
При работе в относительном режиме вы также можете использовать более сложные команды. Например, эта команда добавляет разрешение на запись в группу и удаляет чтение для других:
Верхний регистр X гарантирует, что файлы не получат разрешение на выполнение, если файл уже не установил разрешение на выполнение для некоторых объектов. Это делает X более разумным способом работы с разрешениями на выполнение; это позволит избежать установки этого разрешения на файлы, где оно не требуется.
Расширенные права
Помимо основных разрешений, о которых вы только что прочитали, в Linux также есть набор расширенных разрешений. Это не те разрешения, которые вы устанавливаете по умолчанию, но иногда они предоставляют полезное дополнение. В этом разделе вы узнаете, что они из себя представляют и как их настроить.
Понимание расширенных прав SUID, GUID и sticky bit
Есть три продвинутых разрешения. Первое из них — это разрешение на установку идентификатора пользователя (SUID). В некоторых особых случаях вы можете применить это разрешение к исполняемым файлам. По умолчанию пользователь, запускающий исполняемый файл, запускает этот файл со своими собственными разрешениями.
Для обычных пользователей это обычно означает, что использование программы ограничено. Однако в некоторых случаях пользователю требуются специальные разрешения, только для выполнения определенной задачи.
Рассмотрим, например, ситуацию, когда пользователю необходимо сменить пароль. Для этого пользователь должен записать свой новый пароль в файл /etc/shadow. Однако этот файл недоступен для записи пользователям, не имеющим прав доступа root:
Разрешение SUID может выглядеть полезным (и в некоторых случаях так оно и есть), но в то же время оно потенциально опасно. При неправильном применении вы можете случайно раздать права доступа root. Поэтому я рекомендую использовать его только с максимальной осторожностью.
Большинству администраторов никогда не придется его использовать; вы увидите его только в некоторых файлах, где операционная система должна установить его по умолчанию.
Второе специальное разрешение — это идентификатор группы (SGID). Это разрешение имеет два эффекта. При применении к исполняемому файлу, он дает пользователю, который исполняет файл, разрешения владельца группы этого файла. Таким образом, SGID может выполнить более или менее то же самое, что SUID. Однако для этой цели SGID практически не используется.
Как и в случае с разрешением SUID, SGID применяется к некоторым системным файлам в качестве настройки по умолчанию.
Когда применяется к каталогу, SGID может быть полезен, потому что вы можете использовать его для установки владельца группы по умолчанию для файлов и подкаталогов, созданных в этом каталоге. По умолчанию, когда пользователь создает файл, его эффективная первичная группа устанавливается как владелец группы для этого файла.
Это не всегда очень полезно, особенно потому, что у пользователей Red Hat/CentOS в качестве основной группы задана группа с тем же именем, что и у пользователя, и из которых пользователь является единственным участником. Таким образом, по умолчанию файлы, которые создает пользователь, будут групповыми для общего доступа.
Представьте себе ситуацию, когда пользователи linda и lori работают в бухгалтерии и являются членами группы account. По умолчанию эти пользователи являются членами частной группы, единственным членом которой они являются. Однако оба пользователя являются членами группы account, но также и в качестве параметра вторичной группы.
Ситуация по умолчанию состоит в том, что когда любой из этих пользователей создает файл, основная группа становится владельцем. Поэтому по умолчанию linda не может получить доступ к файлам, созданным lori, и наоборот. Однако, если вы создаете общий каталог группы (скажем, /groups/account) и убедитесь, что разрешение SGID применено к этому каталогу и что учет группы установлен как владелец группы для этого каталога, все файлы, созданные в этом каталоге и во всех его подкаталогах, также получают account группы как владельца группы по умолчанию.
По этой причине разрешение SGID является очень полезным разрешением для установки в каталогах общих групп.
Третий из специальных разрешений — sticky bit. Это разрешение полезно для защиты файлов от случайного удаления в среде, где несколько пользователей имеют права на запись в один и тот же каталог. Если применяется закрепленный sticky bit, пользователь может удалить файл, только если он является пользователем-владельцем файла или каталога, в котором содержится файл. По этой причине он применяется в качестве разрешения по умолчанию для каталога /tmp и может быть полезен также для каталогов общих групп.
Без sticky bit, если пользователь может создавать файлы в каталоге, он также может удалять файлы из этого каталога. В общедоступной групповой среде это может раздражать. Представьте себе пользователей linda и lori, которые оба имеют права на запись в каталог /data/account и получают эти разрешения благодаря участию в группе account. Поэтому linda может удалять файлы, созданные lori, и наоборот.
Когда вы применяете sticky bit, пользователь может удалять файлы, только если выполняется одно из следующих условий:
Применение расширенных прав
Чтобы применить SUID, SGID и sticky bit, вы также можете использовать chmod. SUID имеет числовое значение 4, SGID имеет числовое значение 2, а sticky bit имеет числовое значение 1.
Если вы хотите применить эти разрешения, вам нужно добавить четырехзначный аргумент в chmod, первая цифра которого относится к специальным разрешениям. Следующая строка, например, добавит разрешение SGID на каталог и установит rwx для пользователя и rx для группы и других:
Это довольно непрактично, если вам нужно посмотреть текущие права доступа, которые установлены, прежде чем работать с chmod в абсолютном режиме. (Вы рискуете перезаписать разрешения, если вы этого не сделаете.) Поэтому я рекомендую работать в относительном режиме, если вам нужно применить какое-либо из специальных разрешений:
Пример работы со специальными правами
В этом примере вы используете специальные разрешения, чтобы членам группы было проще обмениваться файлами в каталоге общей группы. Вы назначаете ID-бит установленного идентификатора группы, а также sticky bit, и видите, что после их установки добавляются функции, облегчающие совместную работу членов группы.
Управление ACL (setfacl, getfacl) в Linux
Даже если расширенные права, которые обсуждались выше, добавляют полезную функциональность к тому, как Linux работает с разрешениями, это не позволяет вам предоставлять разрешения более чем одному пользователю или одной группе в одном файле.
Списки контроля доступа предлагают эту функцию. Кроме того, они позволяют администраторам устанавливать разрешения по умолчанию сложным способом, при котором установленные разрешения могут различаться в разных каталогах.
Понимание ACL
Хотя подсистема ACL добавляет отличные функциональные возможности вашему серверу, у нее есть один недостаток: не все утилиты поддерживают ее. Следовательно, вы можете потерять настройки ACL при копировании или перемещении файлов, а программное обеспечение для резервного копирования может не выполнить резервное копирование настроек ACL.
Утилита tar не поддерживает ACL. Чтобы убедиться, что настройки ACL не будут потеряны при создании резервной копии, используйте star вместо tar. star работает с теми же параметрами, что и tar; он просто добавляет поддержку настроек ACL.
Отсутствие поддержки некоторыми инструментами не должно быть проблемой. Списки ACL часто применяются к каталогам как структурная мера, а не к отдельным файлам.
Поэтому их будет не много, а всего лишь несколько, примененных в умных местах файловой системы. Следовательно, восстановить исходные списки ACL, с которыми вы работали, относительно легко, даже если ваше ПО для резервного копирования их не поддерживает.
Подготовка файловой системы для ACL
Перед началом работы с ACL может потребоваться подготовить файловую систему для поддержки ACL. Поскольку метаданные файловой системы необходимо расширять, не всегда есть поддержка по умолчанию для ACL в файловой системе. Если при настройке списков ACL для файловой системы вы получаете сообщение «operation not supported», возможно, в вашей файловой системе отсутствует поддержка ACL.
Чтобы это исправить, вам нужно добавить опцию acl mount в файле /etc/fstab, чтобы файловая система была смонтирована с поддержкой ACL по умолчанию.
Изменение и просмотр настроек ACL с помощью setfacl и getfacl
Команда setfacl имеет много возможностей и опций. Один вариант особенно важен, параметр -R. Если используется, опция делает настройку ACL для всех файлов и подкаталогов, которые в настоящее время существуют в каталоге, где вы устанавливаете ACL. Рекомендуется всегда использовать эту опцию при изменении списков ACL для существующих каталогов.
Работа с ACL по умолчанию
Одним из преимуществ использования списков ACL является то, что вы можете давать разрешения нескольким пользователям или группам в каталоге. Еще одним преимуществом является то, что вы можете включить наследование, работая с ACL по умолчанию.
Установив ACL по умолчанию, вы определите разрешения, которые будут установлены для всех новых элементов, создаваемых в каталоге. Имейте в виду, что ACL по умолчанию не меняет разрешения для существующих файлов и подкаталогов. Чтобы изменить их, нужно добавить и обычный ACL!
ACL и обычные разрешения не всегда хорошо интегрированы. Проблемы могут возникнуть, если вы применили ACL по умолчанию к каталогу, после чего элементы были добавлены в этот каталог, и затем попытаетесь изменить обычные разрешения. Изменения, которые применяются к обычным разрешениям, не будут хорошо отражены в обзоре ACL. Чтобы избежать проблем, сначала установите обычные разрешения, после чего установите ACL по умолчанию (и после этого старайтесь не изменять их снова).
Пример управления расширенными правами с использованием ACL
В этом примере вы продолжите работу с каталогами /data/account и /data/sales, которые вы создали ранее. В предыдущих примерах вы гарантировали, что группа sales имеет разрешения на /data/sales, а группа account имеет разрешения на /data/account.
Сначала убедитесь, что группа account получает разрешения на чтение в каталоге /data/sales, а группа sales получает разрешения на чтение в каталоге /data/account.
Затем вы устанавливаете списки ACL по умолчанию, чтобы убедиться, что для всех новых файлов правильно установлены разрешения для всех новых элементов.
Установка прав по умолчанию с помощью umask
Выше вы узнали, как работать с ACL по умолчанию. Если вы не используете ACL, есть параметр оболочки, который определяет права по умолчанию, которые вы получите: umask (обратная маска). В этом разделе вы узнаете, как изменить разрешения по умолчанию с помощью umask.
Вы, наверное, заметили, что при создании нового файла устанавливаются некоторые разрешения по умолчанию. Эти разрешения определяются настройкой umask. Этот параметр оболочки применяется ко всем пользователям при входе в систему. В параметре umask используется числовое значение, которое вычитается из максимальных разрешений, которые могут быть автоматически установлены для файла; максимальная настройка для файлов — 666, а для каталогов — 777.
Однако некоторые исключения относятся к этому правилу. Вы можете найти полный обзор настроек umask в таблице внизу.
Из цифр, используемых в umask, как и в случае числовых аргументов для команды chmod, первая цифра относится к разрешениям пользователя, вторая цифра относится к разрешениям группы, а последняя относится к разрешениям по умолчанию, установленным для других. Значение umask по умолчанию 022 дает 644 для всех новых файлов и 755 для всех новых каталогов, созданных на вашем сервере.
Полный обзор всех числовых значений umask и их результатов в таблице ниже.
Простой способ увидеть, как работает параметр umask, выглядит следующим образом: начните с разрешений по умолчанию для файла, установленного на 666, и вычтите umask, чтобы получить действующие разрешения. Сделайте то же самое для каталога и его разрешений по умолчанию 777.
Есть два способа изменить настройку umask: для всех пользователей и для отдельных пользователей. Если вы хотите установить umask для всех пользователей, вы должны убедиться, что параметр umask учитывается при запуске файлов среды оболочки, как указано в /etc/profile. Правильный подход — создать сценарий оболочки с именем umask.sh в каталоге /etc/profile.d и указать umask, который вы хотите использовать в этом сценарии оболочки. Если в этом файле изменяется umask, он применяется ко всем пользователям после входа на сервер.
Настройки, примененные в этом файле, применяются только для отдельного пользователя; следовательно, это хороший метод, если вам нужно больше детализации. Мне лично нравится эта функция, чтобы изменить значение umask по умолчанию для пользователя root на 027, тогда как обычные пользователи работают с umask по умолчанию 022.
Работа с расширенными атрибутами пользователя
Это заключительный раздел о правах в Linux.
При работе с разрешениями всегда существует связь между объектом пользователя или группы и разрешениями, которые эти объекты пользователя или группы имеют для файла или каталога. Альтернативный метод защиты файлов на сервере Linux — работа с атрибутами.
Атрибуты выполняют свою работу независимо от пользователя, который обращается к файлу.
Как и в случае с ACL, для атрибутов файла может потребоваться включить параметр mount.
Это опция user_xattr. Если вы получаете сообщение «operation not supported» при работе с расширенными атрибутами пользователя, обязательно установите параметр mount в файле /etc/fstab.
Многие атрибуты задокументированы. Некоторые атрибуты доступны, но еще не реализованы. Не используйте их; они ничего вам не принесут.
Ниже приведены наиболее полезные атрибуты, которые вы можете применить:
A Этот атрибут гарантирует, что время доступа к файлу файла не изменяется.
Обычно каждый раз, когда файл открывается, время доступа к файлу должно быть записано в метаданные файла. Это отрицательно влияет на производительность; поэтому для файлов, к которым осуществляется регулярный доступ, атрибут A можно использовать для отключения этой функции.
a Этот атрибут позволяет добавлять, но не удалять файл.
c Если вы используете файловую систему, в которой поддерживается сжатие на уровне тома, этот атрибут файла гарантирует, что файл будет сжат при первом включении механизма сжатия.
D Этот атрибут гарантирует, что изменения в файлах записываются на диск немедленно, а не в кэширование в первую очередь. Это полезный атрибут в важных файлах базы данных, позволяющий убедиться, что они не теряются между файловым кешем и жестким диском.
d Этот атрибут гарантирует, что файл не будет сохранен в резервных копиях, где используется утилита дампа.
I Этот атрибут включает индексирование для каталога, в котором он включен. Это обеспечивает более быстрый доступ к файлам для примитивных файловых систем, таких как Ext3, которые не используют базу данных B-tree для быстрого доступа к файлам.
i Этот атрибут делает файл неизменным. Следовательно, в файл нельзя вносить изменения, что полезно для файлов, которые нуждаются в дополнительной защите.
j Этот атрибут гарантирует, что в файловой системе ext3 файл сначала записывается в журнал, а затем — в блоки данных на жестком диске.
s Перезаписать блоки, в которых файл был сохранен, на 0 с после удаления файла. Это гарантирует, что восстановление файла невозможно после того, как он был удален.
u Этот атрибут сохраняет информацию об удалении. Это позволяет разрабатывать утилиту, которая работает с этой информацией для спасения удаленных файлов.
Резюме
В этой статье вы узнали, как работать с разрешениями. Вы прочитали о трех основных разрешениях, расширенных разрешениях и о том, как применять ACL-списки в файловой системе. Вы также узнали, как использовать параметр umask для применения разрешений по умолчанию. В конце этой статьи вы узнали, как использовать расширенные пользователем атрибуты для применения дополнительного уровня безопасности файловой системы.
Если вам понравился этот перевод, то прошу написать об этом в комментариях. Будет больше мотивации делать полезные переводы.
В статье исправил некоторые опечатки и грамматические ошибки. Уменьшил некоторые громоздкие абзацы на более мелкие для удобства восприятия.
Вместо «Только кто-то с административными правами на каталог может применять разрешение на выполнение.» исправил на «Только кто-то с правами записи на каталог может применять разрешение на выполнение.», что будет более правильным.
Заменил:
Если вы не являетесь владельцем пользователя, оболочка проверит, являетесь ли вы участником группы, которая также называется группой файла.
На:
Если вы не являетесь владельцем файла, оболочка проверит, являетесь ли вы участником группы, у которой есть разрешения на этот файл. Если вы являетесь участником этой группы, вы получаете доступ к файлу с разрешениями, которые для группы установлены, и оболочка прекратит проверку.