Skip to content

Пользователи и разрешения

Управление пользователями

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

Файл /etc/passwd

Простой текстовый файл /etc/passwd содержит соответствия имен пользователей идентификаторам ID.

  • Имя пользователя (Username): Это первое поле в каждой строке файла /etc/passwd. Оно представляет собой уникальное имя пользователя.
  • Зашифрованный пароль (Password): В прошлом здесь хранился зашифрованный пароль пользователя. Однако в современных системах обычно используется символ x, а сам пароль хранится в файле /etc/shadow.
  • UID (User ID): Это уникальный идентификатор пользователя в системе. Каждому пользователю присваивается уникальный числовой идентификатор, который используется системой для идентификации пользователя.
  • GID (Group ID): Это идентификатор группы, к которой принадлежит пользователь. Группы также имеют свои уникальные числовые идентификаторы.
  • GECOS (General Electric Comprehensive Operating System): Это поле содержит различные информационные данные о пользователе, такие как его полное имя, контактная информация и прочее. Обычно это разделено на несколько подполей.
  • Домашний каталог (Home directory): Это путь к домашнему каталогу пользователя, где он может сохранять свои файлы и настройки.
  • Командная оболочка (Shell): Это путь к исполняемому файлу командной оболочки, которая будет использоваться по умолчанию при входе пользователя в систему.

Синтаксис файла /etc/passwd является довольно строгим и не допускает приме­нения комментариев или пустых строк.

Особые пользователи

В файле /etc/passwd можно найти несколько особых пользователей. Пользователь superuser (корневой) всегда обладает идентификаторами UID 0 и GID 0. У некоторых пользователей, таких как демоны, нет привилегий на вход в систему. Пользователь nobody («никто») является непривилегированным. Не­которые процессы запускаются как пользователь nobody, поскольку такой пользо­ватель не может записывать что-либо в систему.

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

Управление пользователями и паролями

  • useradd: Команда для создания нового пользователя. Пример: sudo useradd -m username
  • adduser: Интерактивный сценарий создания нового пользователя, который предлагает вводить информацию о пользователе по шагам. Пример: sudo adduser username
  • userdel: Команда для удаления существующего пользователя. Пример: sudo userdel username
  • usermod: Команда для изменения атрибутов существующего пользователя, таких как имя, домашний каталог, группа и другие. Пример: sudo usermod -l newusername oldusername
  • passwd: Команда для изменения пароля пользователя. Пример: sudo passwd username
  • chpasswd: Команда для массового изменения паролей из файла. Пример: sudo chpasswd < passwords.txt
  • chage: Команда для управления параметрами устаревания пароля пользователя. Пример: sudo chage -M 30 username (установить максимальный срок действия пароля в 30 дней).
  • passwd: Файл /etc/passwd содержит информацию о пользователях, а файл /etc/shadowсодержит зашифрованные пароли пользователей и другие связанные с безопасностью атрибуты.
  • groupadd, groupdel, groupmod: Команды для управления группами пользователей.
  • sudoers: Файл /etc/sudoers содержит конфигурацию sudo, который определяет, какие пользователи и группы имеют право выполнять команды с привилегиями root с использованием sudo.
  • pam: PAM (Pluggable Authentication Modules) является модульной архитектурой для аутентификации пользователей в Unix-подобных системах, позволяющая настраивать и настраивать механизмы аутентификации, включая пароли, токены и другие аутентификационные методы.

Идентификация и аутентификация пользователей

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

Когда дело доходит до идентификации пользователя, ядро системы Linux знает только численный идентификатор пользователя для процесса и владения файлами. Ядро знает о правилах авторизации, относящихся к тому, как запускать исполня­емые файлы setuid и как совершать системные вызовы из семейства setuid(), чтобы выполнить переход от одного пользователя к другому. Однако ядро ничего не знает об аутентификации: именах пользователей, паролях и т. п. Практически все, что относится к аутентификации, происходит в пространстве пользователя. Как пользовательские процессы получают доступ к соответствию между идентификаторами пользователей и паролями.

Начнем с предельно упрощенного случая, при котором пользовательский процесс желает узнать свое имя пользователя (имя, которое соответствует эффективному идентификатору пользователя). В традици­ онной системе Unix процесс мог бы выполнить для этого что-либо подобное.

  1. Процесс спрашивает у ядра свой эффективный идентификатор пользователя с помощью системного вызова geteuid().
  2. Процесс открывает файл /etc/passwd и начинает его чтение с самого начала.
  3. Процесс читает строки в файле /etc/passwd. Если читать больше нечего, попыт­ка поиска имени пользователя завершается неудачей.
  4. Процесс выполняет анализ строки по полям (вытаскивая все, что находится между двоеточиями). Третье поле является идентификатором пользователя в те­кущей строке.
  5. Процесс сравнивает идентификатор, полученный на четвертом шаге, с тем, который был получен на первом шаге. Если они совпадают, первое поле, най­денное на четвертом шаге, является искомым именем пользователя; процесс может прекратить поиски и воспользоваться данным именем.
  6. Процесс переходит к следующей строке файла /etc/passwd и возвращается к третьему шагу.

Процедура довольно длинная, а в реальности она обычно гораздо более сложная.

Стандарт PAM

Чтобы обеспечить гибкость при аутентификации пользователей, в 1995 году корпо­рация Sun Microsystems предложила новый стандарт под названием PAM (Pluggable Authentication Modules, подключаемые модули аутентификации) — систему совмест­но используемых библиотек для аутентификации. Для аутентификации пользователя приложение «вручает» пользователя утилите PAM, чтобы определить, может ли пользователь успешно идентифицировать себя. Таким образом сравни­тельно легко добавить поддержку дополнительных методов, таких как двухфактор­ная аутентификация или ключи на материальных носителях. В дополнение к под­держке механизма аутентификации стандарт PAM также обеспечивает ограниченную степень контроля авторизации для служб (если, например, вы желаете, чтобы у не­которых пользователей не было службы cron)

Поскольку существуют различные типы аутентификации, стандарт PAM ис­пользует несколько динамически загружаемых модулей аутентификации. Каждый модуль выполняет специальную задачу; например, модуль pam_unix.so проверяет пароль пользователя. Занятие это довольно сложное. Программный интерфейс непростой, и неясно, действительно ли стандарт PAM справляется со всеми существующими пробле­мами. Однако поддержка стандарта PAM присутствует практически в каждой команде, для которой требуется аутентификация в системе Linux, и большинство версий системы используют этот стандарт. Поскольку он работает поверх интер­фейса API для аутентификации, существующего в Unix, интеграция поддержки в клиент требует незначительной (а то и совсем никакой не требует) дополнитель­ной работы.


Разрешения доступа и права

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

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

Каждый тип пользователя может иметь разные права на файлы и директории:

  • Владелец (owner): Этот пользователь создал файл или директорию. Владелец может иметь разрешения на чтение, запись и выполнение.
  • Группа (group): Это группа, в которой находится владелец файла. Группа может иметь свои собственные разрешения на чтение, запись и выполнение.
  • Остальные (others): Это все остальные пользователи, не владеющие файлом и не входящие в группу. Они также могут иметь свои собственные разрешения на чтение, запись и выполнение.

Права. Каждое разрешение доступа имеет соответствующее право:

  • Чтение (read): Позволяет просматривать содержимое файла или директории.
  • Запись (write): Позволяет изменять содержимое файла или директории, включая создание, удаление и переименование.
  • Выполнение (execute): Позволяет выполнять файлы (если это исполняемые файлы) или просматривать содержимое директории.

Управление владением файлами

В Linux у каждого файла и каталога есть два владельца: пользователь и группа.

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

Это происходит в следующем порядке:

  1. Оболочка проверяет, являетесь ли вы владельцем файла, к которому вы хотите получить доступ. Если вы являетесь этим владельцем, вы получаете разрешения и оболочка прекращает проверку.
  2. Если вы не являетесь владельцем файла, оболочка проверит, являетесь ли вы участником группы, у которой есть разрешения на этот файл. Если вы являетесь участником этой группы, вы получаете доступ к файлу с разрешениями, которые для группы установлены, и оболочка прекратит проверку.
  3. Если вы не являетесь ни пользователем, ни владельцем группы, вы получаете права других пользователей (Other).

Чтобы увидеть текущие назначения владельца, вы можете использовать команду ls -l. Эта команда показывает пользователя и группу-владельца.

Изменение владельца chown

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

Синтаксис команды chown
chown [опции] [новый_владелец][:новая_группа] файлы_или_директории
chown
# Например, следующая команда меняет владельца каталога `/home/account` на пользователя `ivan`:
chown ivan /home/account

Команда chown имеет несколько опций, одна из которых особенно полезна: -R. Это позволяет вам рекурсивно устанавливать владельца, что позволяет вам установить владельца текущего каталога и всего, что находится ниже.

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

Есть два способа изменить владение группой. Вы можете сделать это, используя chown, но есть специальная команда с именем chgrp, которая выполняет эту работу. Если вы хотите использовать команду chown, используйте . или : перед названием группы.

chown for group
# Следующая команда изменяет какого-либо владельца группы `/home/account` на группу mygroup:
chown .mygroup /home/account

Понимание владельца по умолчанию

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

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


Управление основными правами

Понимание прав на чтение, запись и выполнение

Три основных разрешения позволяют читать, записывать и выполнять файлы. Эффект этих разрешений отличается при применении к файлам или каталогам.

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

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

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

Разрешение на запись, если оно применяется к файлу, позволяет записывать в файл. Иначе говоря, позволяет изменять содержимое существующих файлов. Однако он не позволяет создавать или удалять новые файлы или изменять права доступа к файлу. Для этого нужно дать разрешение на запись каталогу, где вы хотите создать файл. В каталогах это разрешение также позволяет создавать и удалять новые подкаталоги.

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

Таблица с основными разрешениями:

Права Применимо к файлам Применимо к каталогам
Read Прочитать содержимое файла Отобразить список содержимого каталога
Write Изменить содержимое файла Разрешить управлять правами на файлы
Execute Запустить файл как программу Переход в каталог

chmod

Для управления правами используется команда chmod. При использовании chmod можно устанавливать разрешения для пользователя (user), группы (group) и других (other). Вы можете использовать эту команду в двух режимах: относительный режим и абсолютный режим.

Числовая нотация

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

Права Цифровое представление
Read 4
Write 2
Execute 1

При настройке разрешений рассчитайте необходимое вам значение. Если вы хотите установить чтение, запись и выполнение для пользователя, чтение и выполнение для группы, а также чтение и выполнение для других в файле /somefile, то вы используете следующую команду chmod 755 /somefile

Каждому пользовательскому типу (владелец, группа, остальные) присваивается своя числовая комбинация разрешений. Например, чтобы предоставить владельцу чтение и запись (4 + 2 = 6), а группе и остальным - только чтение (4), числовая комбинация будет 644.

Примечание: В числовой нотации сумма чисел не должна превышать 7, поскольку каждый пользовательский тип может иметь максимум права 4 (чтение) + 2 (запись) + 1 (выполнение) = 7.

chmod

К примеру:

  • 3 (2+1) устанавливается доступ на запись и выполнение;
  • 5 (4+1) устанавливается доступ на чтение и выполнение;
  • 6 (4+2) устанавливается доступ чтение и запись;
  • 7 (4+2+1) устанавливается доступ на чтение, запись и выполнение.

Всего существует восемь вариантов сочетаний:

  • 0 – полный запрет
  • 1 – выполнение
  • 2 – запись
  • 3 – запись, выполнение
  • 4 – чтение
  • 5 – чтение, выполнение
  • 6 – чтение, запись
  • 7 – чтение, запись, выполнение

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

Символьная нотация

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

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

  1. Сначала вы указываете, для кого вы хотите изменить разрешения. Для этого вы можете выбрать между пользователем (u), группой (g) и другими (o).
  2. Затем вы используете оператор для добавления или удаления разрешений из текущего режима или устанавливаете их абсолютно.
  3. В конце вы используете r, w и x, чтобы указать, какие разрешения вы хотите установить.

Символы, используемые в символьной нотации:

  • u (user): Владелец файла.
  • g (group): Группа, к которой принадлежит файл.
  • o (other): Остальные пользователи.
  • a (all): Все пользователи.
  • + (плюс): Добавление права.
  • - (минус): Удаление права.
  • = (равно): Установка точных прав.
  • r (read): Право на чтение.
  • w (write): Право на запись.
  • x (execute): Право на выполнение.

При изменении разрешений в относительном режиме вы можете пропустить часть «кому», чтобы добавить или удалить разрешение для всех объектов. Например, эта команда добавляет разрешение на выполнение для всех пользователей: chmod +x somefile

Эта команда добавляет разрешение на запись в группу и удаляет чтение для других: chmod g+w,o-r somefile

При использовании chmod -R o+rx /data вы устанавливаете разрешение на выполнение для всех каталогов, а также для файлов в каталоге /data.

Чтобы установить разрешение на выполнение только для каталогов, а не для файлов, используйте chmod -R o+ rX /data.

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

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

  • chmod 644 файл.txt Предоставить владельцу чтение и запись, группе и остальным только чтение
  • chmod 755 файл.txt Предоставить владельцу чтение, запись и выполнение, группе и остальным только чтение
  • chmod u=rw,go= файл.txt Предоставить владельцу чтение и запись, а группе и остальным - ничего
  • chmod u+x,go= файл.txt Предоставить владельцу выполнение, а группе и остальным - ничего
  • chmod +x файл.txt Добавить выполнение для всех пользователей к файлу
  • chmod go-wx директория Убрать права записи и выполнения для группы и остальных пользователей к директории
  • chmod u=rwx,go=r файл.txt Предоставить владельцу полный доступ, а группе и остальным - только чтение, к файлу
  • chmod u=rw,g=r,o= файл.txt Установить права точно для файла (владелец: чтение, запись; группа: чтение; остальные: ничего)
  • chmod g+x исполняемый_файл Добавить право выполнения только для группы к исполняемому файлу
  • chmod -R 777 директория Предоставить полный доступ для всех пользователей к директории (не рекомендуется для секретных данных)
  • chmod 711 директория Установить директории так, чтобы пользователь мог только входить в них, но не видеть содержимое

Сравнительная таблица цифровой и символьной нотации:

Права Цифры Буквы
Полный запрет 0 -
Чтение 4 r--
Запись 2 -w-
Выполнение 1 --x
Чтение и запись 6 rw-
Чтение и выполнение 5 r-X
Чтение, запись, выполнение 7 Rwx

Расширенные права

Расширенные права, такие как SUID, GUID и "sticky bit", представляют собой дополнительные биты прав доступа в файловой системе Linux, которые добавляют специальные функциональности для выполнения определенных задач. Эти биты могут быть установлены на исполняемых файлах и директориях и изменяют поведение системы при доступе к ним.

  • SUID (Set User ID): Когда бит SUID установлен на исполняемом файле, процесс, запущенный этим файлом, временно получает права владельца файла во время выполнения. Например, если обычный пользователь запускает исполняемый файл с установленным SUID битом, то во время выполнения этот процесс будет иметь временные права суперпользователя (root). SUID используется, например, для выполнения определенных системных команд, к которым требуется доступ с повышенными привилегиями.
  • GUID (Set Group ID): Аналогично SUID, бит GUID устанавливается на исполняемом файле и применяется к группе, а не к пользователю. Когда бит GUID установлен на файле, процесс, запущенный этим файлом, временно получает права группы файла во время выполнения. Это может быть полезным, например, когда несколько пользователей работают в групповых проектах и им требуется совместное выполнение файлов с общими правами группы.
  • Sticky Bit: Sticky bit обычно устанавливается на директории. Когда он установлен на директории, только владелец файла может удалять или перемещать файлы в этой директории, даже если другие пользователи имеют права на запись в этой директории. Sticky bit часто используется для директорий, которые используются для временных файлов, таких как /tmp, чтобы предотвратить случайное удаление или изменение файлов другими пользователями.

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

  • chmod u+s исполняемый_файл Установка SUID бита на исполняемом файле
  • chmod g+s исполняемый_файл Установка GUID бита на исполняемом файле
  • chmod +t директория Установка sticky bit на директории

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

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

Права Цифры Буквы Файлы Каталоги
SUID 4 u+s Пользователь выполняет файл с разрешениями владельца файла Нет смысла применять
GUID 2 g+s Пользователь выполняет файл с разрешениями владельца группы Файлы, созданные в каталоге, получают одного и того же владельца группы
sticky bit 1 +t Нет смысла применять Пользователь может удалять только свои файлы

Расширенные атрибуты пользователей

Расширенные атрибуты пользователей (user extended attributes) - это дополнительная информация, которая может быть связана с файлами и директориями в файловой системе 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 Этот атрибут сохраняет информацию об удалении. Это позволяет разрабатывать утилиту, которая работает с этой информацией для спасения удаленных файлов.

Если вы хотите применить атрибуты, вы можете использовать команду chattr. Например, используйте chattr +s somefile, чтобы применить атрибуты к somefile. Нужно удалить атрибут? Тогда используйте chattr -s somefile, и он будет удален. Чтобы получить обзор всех атрибутов, которые в настоящее время применяются, используйте команду lsattr.


umask

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

При создании нового файла устанавливаются некоторые разрешения по умолчанию. Эти разрешения определяются настройкой umask. Этот параметр оболочки применяется ко всем пользователям при входе в систему. В параметре umask используется числовое значение, которое вычитается из максимальных разрешений, которые могут быть автоматически установлены для файла; максимальная настройка для файлов — 666, а для каталогов — 777.

Из цифр, используемых в umask, как и в случае числовых аргументов для команды chmod, первая цифра относится к разрешениям пользователя, вторая цифра относится к разрешениям группы, а последняя относится к разрешениям по умолчанию, установленным для других. Значение umask по умолчанию 022 дает 644 для всех новых файлов и 755 для всех новых каталогов, созданных на вашем сервере.

Полный обзор всех числовых значений umask и их результатов:

Значение Применение к файлам Применение к каталогам
0 Чтение и запись Что угодно
1 Чтение и запись Чтение и запись
2 Чтение Чтение и выполнение
3 Чтение Чтение
4 Запись Запись и выполнение
5 Запись Запись
6 Ничего Запись
7 Ничего Ничего

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

Есть два способа изменить настройку umask: для всех пользователей и для отдельных пользователей. Если вы хотите установить umask для всех пользователей, вы должны убедиться, что параметр umask учитывается при запуске файлов среды оболочки, как указано в /etc/profile. Правильный подход — создать сценарий оболочки с именем umask.sh в каталоге /etc/profile.d и указать umask, который вы хотите использовать в этом сценарии оболочки. Если в этом файле изменяется umask, он применяется ко всем пользователям после входа на сервер.

Альтернативой настройке umask через /etc/profile и связанные файлы, где он применяется ко всем пользователям, входящим в систему, является изменение настроек umask в файле с именем .profile, который создается в домашнем каталоге каждого пользователя.

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


ACL Списки контроля доступа

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

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

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

Утилита tar не поддерживает ACL. Чтобы убедиться, что настройки ACL не будут потеряны при создании резервной копии, используйте star вместо tar. star работает с теми же параметрами, что и tar; он просто добавляет поддержку настроек ACL.

Вы также можете создать резервную копию ACL с помощью getfacl, которую можно восстановить с помощью команды setfacl. Чтобы создать резервную копию, используйте getfacl -R /directory > file.acls. Чтобы восстановить настройки из файла резервной копии, используйте setfacl --restore=file.acl.

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

Перед началом работы с ACL может потребоваться подготовить файловую систему для поддержки ACL. Поскольку метаданные файловой системы необходимо расширять, не всегда есть поддержка по умолчанию для ACL в файловой системе. Если при настройке списков ACL для файловой системы вы получаете сообщение «operation not supported», возможно, в вашей файловой системе отсутствует поддержка ACL.

Чтобы это исправить, вам нужно добавить опцию acl mount в файле /etc/fstab, чтобы файловая система была смонтирована с поддержкой ACL по умолчанию.

Изменение и просмотр настроек ACL с помощью setfacl и getfacl

Чтобы установить ACL, вам нужна команда setfacl. Чтобы увидеть текущие настройки ACL, вам нужен getfacl. Команда ls -l не показывает никаких существующих ACL; он просто показывает + после списка разрешений, который указывает, что списки ACL применяются и к файлу.

Перед настройкой списков ACL всегда полезно показать текущие настройки ACL с помощью getfacl.

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

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

Это важно знать. Если вы хотите использовать ACL для настройки доступа нескольких пользователей или групп к одному и тому же каталогу, вы должны установить ACL дважды. Сначала используйте setfacl -R -m, чтобы изменить ACL для текущих файлов. Затем используйте setfacl -m d:, чтобы позаботиться обо всех новых элементах, которые также будут созданы.

Чтобы установить ACL по умолчанию, вам просто нужно добавить опцию d после опции -m (порядок имеет значение!). Поэтому используйте setfacl -m d:g:sales:rx /data, если вы хотите, чтобы группа sales имела доступ на чтение и выполнение всего, что когда-либо будет создано в каталоге /data.

При использовании списков ACL по умолчанию также может быть полезно установить ACL для других. Обычно это не имеет особого смысла, потому что вы также можете изменить разрешения для других, используя chmod. Однако, что вы не можете сделать с помощью chmod, это указать права, которые должны быть предоставлены другим пользователям для каждого нового файла, который когда-либо будет создан. Если вы хотите, чтобы другие не получали никаких разрешений на что-либо, созданное в /data, например, используйте setfacl -m d:o::- /data.

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