Права файлов Linux: Стратегическое руководство для администраторов Windows

Если вы уже имели дело с Windows некоторое время, то, вероятно, у вас есть опыт управления учетными записями пользователей, файловой системой NTFS и установкой разрешений. Если это так, подготовьтесь к другому миру с правами доступа к файлам в Linux! В Linux файловая система – это совершенно другое животное, которое вам нужно изучить, чтобы стать опытным администратором Linux.

Это часть II из нашей серии из четырех частей о изучении Linux с точки зрения администратора Windows! Обязательно прочтите Часть I, если еще этого не сделали.

Работа с файловой системой

Давайте сначала рассмотрим, как Linux хранит и управляет файлами через файловую систему.

Примечание: Все примеры будут использовать Linux OpenSUSE.

Больше нет букв дисков

В отличие от Windows, съемные носители и другие устройства не автоматически получают букву диска и не открываются после перезагрузки. В Windows каждый диск монтируется как буква диска: C:\, D:\ и т.д. Как же работают буквы дисков в Linux? Их просто нет!

В Linux есть папка под названием корневая папка. Эта папка находится в корне файловой системы или просто /. Косая черта – это первая косая черта, от которой идут все остальные файлы в системе. Эта косая черта является своего рода базовой C:\, хотя только если другие буквы дисков существовали бы как подпапки C:\.

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

Linux размывает границу между папками и файловыми системами. Каталог Linux /home является корнем всех пользовательских «профилей», подобно папке C:\Users в Windows. В этом случае /home – это каталог. Однако «каталоги» в Linux не обязательно должны быть фактическими каталогами. Они также могут быть разделами для хранения или даже отдельным жестким диском. Этот концепт аналогичен точкам монтирования в Windows.

Вы можете узнать больше о корневых каталогах в этой статье.

Пользователи и домашние каталоги

Если вы используете OpenSUSE, вы можете заметить папку Home на вашем рабочем столе, как показано ниже. Эта папка – это версия Linux папки C:\users\<username> или «профиля». Папка «пользователи» в Linux находится внутри /home на вашем диске установки по умолчанию.

В приведенном ниже примере пользователь называется homelab с «профилем», расположенным в /home/homelab.

Your own User (Home) Folder

В Linux (и в Windows) домашняя папка (или профиль пользователя в Windows) имеет краткое обозначение тильдой (~). Если вы видите что-то вроде "~/Documents/blah.txt, это фактически ссылается на ваш файл /home/<username>/Documents/blah.txt.

В Linux всё зависит от регистра.

Все в Linux чувствительно к регистру. Этот концепт является полным противоположностью Windows, где почти ничто не чувствительно к регистру.

Например, если у вас есть каталог под названием /home/homelab, совершенно другой каталог может быть назван /home/Homelab. Этот концепт также распространяется на команды. Выполнение cd /home/homelab отличается от CD /home/homelab (которая должна завершиться неудачей).

Для пользователей Windows этот концепт в какой-то момент может стать ловушкой. Будьте очень внимательны к регистру! Вы можете увидеть пример двух отдельных папок ниже. Единственное различие между ними – это регистр: В среде Windows это невозможно.

Being able to create two separate folders just by capitalization is not possible on Windows

Учетные записи пользователей

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

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

Вы можете просмотреть всех пользователей и группы Windows с помощью MMC “Локальные пользователи и группы”, запустив Snapin MMClusrmgr.msc.

The Windows Local User Control Panel

Идентификаторы SIDs Windows

Для уникальной идентификации пользователей и групп Windows используется что-то под названием SID. В Windows вы можете найти SID каждого пользователя и группы, запустив несколько команд PowerShell ниже.

Get-LocalUser | select name, sid
Get-LocalGroup | select name,sid
The list of users and groups on a Windows computer

Каждый SID группы Windows одинаков на всех компьютерах под управлением Windows. Встроенные пользовательские SIDы для Windows уникальны. Тот SID администратора, который вы видите на скриншоте выше, должен отличаться на каждом компьютере под управлением Windows. Любой будущий пользователь или группа, созданные в Windows, будут уникальными. Обратите внимание на группу test ниже. Если бы вы создали группу test на своем компьютере под управлением Windows, SID был бы разным.

A new “test” group at the top has a unique SID

Идентификаторы пользователей Linux

С другой стороны, Linux обрабатывает пользователей и группы аналогично, но на этот раз Linux не использует SID, а идентификаторы пользователей (UID) и идентификаторы групп (GID). Также, в отличие от Windows, пользователи и группы уникальны для компьютера, но не уникальны по всем компьютерам. Это означает, что ваш UID на компьютере A может быть точно таким же, как UID на компьютере B, даже если это не тот же самый пользователь.

И UID, и GID следуют простому числовому соглашению; каждый UID и GUID начинаются с 0 и увеличиваются на единицу в диапазоне от 1 до 999 для внутренних системных учетных записей и от 1000 и выше для пользовательских учетных записей.

Встроенный пользователь root всегда имеет UID 0 и GID 0. Также, как и скрытая учетная запись SYSTEM в Windows, учетная запись root обычно (в зависимости от дистрибутива Linux) предотвращает вход в систему.

Встроенный пользователь root подобен встроенным учетным записям SYSTEM и Administrator в Windows, как бы объединенным в одну. Даже если вы работаете в системе как администратор в Windows, все равно существуют встроенные меры безопасности, чтобы предотвратить полное уничтожение Windows.

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

Допустим, вы создали пользователя по имени homelab. UID для homelab может быть использован либо 1000, либо homelab. Пользователь автоматически станет членом внутренней группы users, на которую вы можете ссылаться с групповым идентификатором 100. Вы можете найти список этих отображений, выполнив команду getent passwd, как показано ниже:

running getent passwd inside the terminal

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

running getent group inside the terminal

Права доступа к файлам Linux

В мире Windows разрешения файловой системы – не самая веселая вещь. Установка и управление правами в NTFS иногда может превратиться в кошмар с ACE, ACL, наследованием, распространением и так далее. К счастью, в файловой системе Linux разрешения гораздо проще.

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

  • Владелец – это пользователь, владеющий файлом/папкой. У каждого файла или папки есть назначенный владелец.
  • Группа – это группа, которой принадлежит файл/папка. Это не обязательно должна быть та же группа, к которой принадлежит владелец. Каждый файл или папка может принадлежать только одной группе.
  • Другие – это… ну, другие. Это люди, не являющиеся членами владеющей группы или не являющиеся назначенным владельцем.

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

Точно так же, как в проводнике Windows, в Ubuntu вы можете увидеть эту информацию, выполнив следующие действия:

  1. Откройте свою домашнюю папку на рабочем столе.
  2. Перейдите к файлу/папке, о которой идет речь.
  3. Щелкните правой кнопкой мыши по файлу/папке и выберите Свойства.
  4. Перейдите на вкладку Разрешения.
  5. Нажмите на кнопку Дополнительные разрешения.

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

Demonstration of the advanced permissions menu in OpenSUSE

Ниже приведено, что представляет собой таблица Дополнительные разрешения.

How the file permissions look visually

Собственность файла

Как и в Windows, у каждого файла и папки есть владелец. В Windows вы можете стать владельцем файла в графическом интерфейсе или с помощью команды takeown. В Linux вы становитесь владельцем, выполнив команду chown <пользователь>:<группа> <файл/папка> в командной строке.

Как и в Windows, вам обычно требуется административное разрешение для изменения владельца файлов с помощью sudo. sudo – это аналог User Account Control (UAC) в Windows. Вместо того чтобы открывать административное окно командной строки, вы предваряете команды sudo, чтобы выполнить их с правами администратора.

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

  1. Откройте вашу домашнюю папку и перейдите в Документы
  2. Откройте командную строку, щелкнув правой кнопкой мыши —> Действия —> Открыть здесь терминал и выполните следующее:
sudo mkdir owned-by-root
sudo chmod 700 owned-by-root
Creating a root only folder

Эта папка имеет разрешения только на чтение/запись/выполнение для владельца. Поскольку вы создали папку с правами администратора, текущий владелец – root.

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

Ниже вы можете увидеть, как получить владение этой папкой.

  1. Откройте еще один терминал в той же папке (или используйте тот, который уже у вас есть)
  2. Выполните sudo chown homelab:users ./owned-by-root
Demonstration of the change ownership command in OpenSUSE

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

File permissions inside the explorer GUI

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

Числовая нотация для разрешений файлов

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

The permissions menu, as viewed remotely from a Windows machine using WinSCP

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

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

Обобщение

Это все для части II нашей серии блогов A Windows Guy in a Linux World! Обязательно следите за ходом событий с Часть III!

Source:
https://adamtheautomator.com/linux-file-permissions/