Раздел 10 — Пользователи, права и защита ОС

Кто может войти в систему и что ему разрешено: учётные записи, группы и права на файлы в Windows и Linux

Прогресс курса Раздел 10 из 12

Что вы освоите в этом разделе

6 академических часов: 2 теории, 4 практики. Пользователей и группы создавайте только в своей ВМ, с понятными именами; в конце работы удалите их. Оснастки lusrmgr.msc и secpol.msc есть в выпусках Windows Pro и для образования, в Домашней — только PowerShell.
01

Кто ты и что тебе можно

Защита в ОС строится на трёх шагах:

ШагВопросКак
ИдентификацияКто ты?Имя учётной записи
АутентификацияДокажиПароль, PIN, отпечаток, смарт-карта, ключ SSH
АвторизацияЧто тебе можно?Права на файлы, членство в группах, политики

После входа ОС выдаёт процессам пользователя маркер доступа — «пропуск», где записаны пользователь и его группы. При каждой попытке открыть файл ядро сверяет пропуск со списком прав файла. Поэтому новое членство в группе начинает действовать только после повторного входа: старый пропуск уже выдан.

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

02

Учётные записи Windows и SID

Учётные записи Windows бывают локальные (живут на этом компьютере), учётные записи Майкрософт (вход через интернет-аккаунт) и доменные (хранятся на сервере Active Directory, вход на любой компьютер организации). В курсе — локальные.

Внутри Windows пользователей и группы различают не по имени, а по SID (security identifier) — уникальному номеру:

PS> whoami
PC-01\student
PS> whoami /user
Сведения о пользователе
----------------

Пользователь       SID
================== ============================================
PC-01\student S-1-5-21-80783211-4193847507-1556117297-1002
PS> whoami /groups /fo csv | ConvertFrom-Csv | Where-Object Группа -match "^BUILTIN|^Обязательная метка" | Select-Object Группа, SID
Группа                                          SID
------                                          ---
BUILTIN\Администраторы                          S-1-5-32-544
BUILTIN\Пользователи                            S-1-5-32-545
Обязательная метка\Высокий обязательный уровень S-1-16-12288

SID пользователя: S-1-5-21-… — идентификатор этого компьютера (одинаков у всех его локальных учётных записей), а последнее число (RID) — номер записи. У встроенных записей RID постоянные:

PS> Get-LocalUser -Name Администратор, Гость | Select-Object Name, Enabled, SID
Name          Enabled SID
----          ------- ---
Администратор   False S-1-5-21-80783211-4193847507-1556117297-500
Гость           False S-1-5-21-80783211-4193847507-1556117297-501
PS> Get-LocalGroup -Name Администраторы, Пользователи | Select-Object Name, SID
Name           SID
----           ---
Администраторы S-1-5-32-544
Пользователи   S-1-5-32-545

Администратор — всегда 500, Гость — 501, обычные пользователи — от 1000. У встроенных групп SID одинаковы на всех компьютерах мира: Администраторы — S-1-5-32-544, Пользователи — S-1-5-32-545. Встроенные Администратор и Гость в Windows 11 отключены (Enabled False): администратором работает пользователь, созданный при установке и включённый в группу Администраторы.

Почему важен SID: права на файлы записаны по SID. Переименуйте пользователя — права сохранятся. Удалите и создайте заново с тем же именем — это будет другой SID, и все прежние права потеряются: в списке прав останется «неизвестная учётная запись» с голым SID.

03

Пользователи и группы

Права выдают группам, а не людям: пришёл новый бухгалтер — добавили в группу «Бухгалтерия», ушёл — убрали; права на десятки папок менять не нужно. Создадим двух сотрудников и группу бухгалтерии:

PS> $pw = Read-Host "Пароль" -AsSecureString
PS> New-LocalUser os-ivan -Password $pw -FullName "Иван Петров" -Description "бухгалтерия" | Out-Null
PS> New-LocalUser os-petr -Password $pw -FullName "Пётр Сидоров" -Description "склад" | Out-Null
PS> New-LocalGroup os-buh -Description "Бухгалтерия" | Out-Null
PS> Add-LocalGroupMember os-buh -Member os-ivan
PS> Get-LocalGroupMember os-buh
ObjectClass  Name            PrincipalSource
-----------  ----            ---------------
Пользователь PC-01\os-ivan Local
PS> Get-LocalUser os-* | Select-Object Name, FullName, SID
Name    FullName     SID
----    --------     ---
os-ivan Иван Петров  S-1-5-21-80783211-4193847507-1556117297-1014
os-petr Пётр Сидоров S-1-5-21-80783211-4193847507-1556117297-1015

Read-Host -AsSecureString спрашивает пароль, не показывая его на экране и не оставляя в истории команд. В графике то же делают Win+R → lusrmgr.msc (Локальные пользователи и группы) или Параметры → Учётные записи → Другие пользователи. В cmd — net user и net localgroup.

04

Права NTFS

У каждого файла и папки NTFS есть список управления доступом — ACL. Каждая запись в нём (ACE) — «кому, что, разрешить или запретить». Основные права и их обозначения в icacls:

ПравоicaclsЧто даёт
Полный доступFВсё, включая смену прав и владельца
ИзменениеMЧитать, писать, создавать, удалять
Чтение и выполнениеRXОткрывать файлы, запускать программы, смотреть папки
ЧтениеRОткрывать файлы и смотреть содержимое папок
ЗаписьWСоздавать файлы, дописывать

Права наследуются: новая папка получает права родительской. Флажки наследования в icacls: (I) — запись унаследована, (OI) — перейдёт к файлам внутри, (CI) — к вложенным папкам, (IO) — действует только на вложенные, не на саму папку. Новая папка buh:

PS> icacls buh
buh BUILTIN\Администраторы:(I)(OI)(CI)(F)
    NT AUTHORITY\СИСТЕМА:(I)(OI)(CI)(F)
    BUILTIN\Пользователи:(I)(OI)(CI)(RX)
    NT AUTHORITY\Прошедшие проверку:(I)(M)
    NT AUTHORITY\Прошедшие проверку:(I)(OI)(CI)(IO)(M)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

Все записи унаследованные. Пользователи могут читать, «Прошедшие проверку» (любой вошедший) — даже изменять. Для папки бухгалтерии это не годится. Отключим наследование (/inheritance:r — убрать унаследованные записи) и выдадим права явно: администраторам — полный доступ, группе бухгалтерии — изменение:

PS> icacls buh /inheritance:r
обработанный файл: buh
Успешно обработано 1 файлов; не удалось обработать 0 файлов
PS> icacls buh /grant "Администраторы:(OI)(CI)F" "os-buh:(OI)(CI)M"
обработанный файл: buh
Успешно обработано 1 файлов; не удалось обработать 0 файлов
PS> icacls buh
buh PC-01\os-buh:(OI)(CI)(M)
    BUILTIN\Администраторы:(OI)(CI)(F)

Успешно обработано 1 файлов; не удалось обработать 0 файлов

Теперь проверим, как это работает, — войдём от имени каждого сотрудника. На своей ВМ это делают через Пуск → выход → вход другим пользователем или командой runas /user:os-ivan powershell, которая открывает окно PowerShell от имени другого пользователя:

PS> # от имени os-ivan
PS> Set-Content buh\отчёт.txt "баланс за октябрь"; Get-Content buh\отчёт.txt
баланс за октябрь
PS> # от имени os-petr
PS> Get-Content buh\отчёт.txt
Get-Content : Отказано в доступе
Get-Content : Не удается найти путь "C:\Users\student\os\buh\отчёт.txt", так как он не существует.
PS> # от имени os-petr
PS> Set-Content buh\склад.txt "остатки"
Set-Content : Отказано в доступе по пути "C:\Users\student\os\buh\склад.txt".

Иван (член os-buh) создал и прочитал файл. Пётр не может ни прочитать, ни создать: у него нет прав даже на просмотр папки. Вторая строка ошибки у Петра — следствие первой: не видя папку, PowerShell не может найти в ней файл.

Как Windows считает права:

  1. Права суммируются по всем группам пользователя.
  2. Запрет сильнее разрешения: явная запись «запретить» проверяется раньше.
  3. Явные записи важнее унаследованных.

Запреты коварны. Запретим Ивану запись в отчёт — казалось бы, читать он сможет:

PS> icacls buh\отчёт.txt /deny "os-ivan:(W)"
обработанный файл: buh\отчёт.txt
Успешно обработано 1 файлов; не удалось обработать 0 файлов
PS> icacls buh\отчёт.txt
buh\отчёт.txt PC-01\os-ivan:(DENY)(W)
              PC-01\os-buh:(I)(M)
              BUILTIN\Администраторы:(I)(F)

Успешно обработано 1 файлов; не удалось обработать 0 файлов
PS> # от имени os-ivan
PS> Get-Content buh\отчёт.txt
Get-Content : Отказано в доступе по пути "C:\Users\student\os\buh\отчёт.txt".
PS> # от имени os-ivan
PS> Add-Content buh\отчёт.txt "исправление"
Add-Content : Отказано в доступе по пути "C:\Users\student\os\buh\отчёт.txt".

Иван потерял и чтение! Право W в icacls — это набор, в который входит служебное право SYNCHRONIZE, а без него Windows не открывает файл вообще. Правильно — запретить только запись данных (WD) и дозапись (AD):

PS> icacls buh\отчёт.txt /remove:d os-ivan
обработанный файл: buh\отчёт.txt
Успешно обработано 1 файлов; не удалось обработать 0 файлов
PS> icacls buh\отчёт.txt /deny "os-ivan:(WD,AD)"
обработанный файл: buh\отчёт.txt
Успешно обработано 1 файлов; не удалось обработать 0 файлов
PS> # от имени os-ivan
PS> Get-Content buh\отчёт.txt
баланс за октябрь
PS> # от имени os-ivan
PS> Add-Content buh\отчёт.txt "исправление"
Add-Content : Отказано в доступе по пути "C:\Users\student\os\buh\отчёт.txt".

Вывод: запреты используют редко и точечно, а доступ строят на разрешениях для групп. Что получится у конкретного человека, показывает Свойства папки → Безопасность → Дополнительно → Действующие разрешения.

Для сетевой папки действуют два набора прав: разрешения общего ресурса и права NTFS. Итоговые — более строгие из двух. Обычная практика: на общем ресурсе «Прошедшие проверку — изменение», а точная настройка — правами NTFS.
05

UAC и уровни целостности

Контроль учётных записей (UAC) — даже администратор работает с урезанным пропуском, как обычный пользователь. Когда программе нужны права администратора, Windows спрашивает подтверждение, и только тогда программа получает полный пропуск. Так вредоносная программа, запущенная из браузера, не получит права администратора молча.

В пропуске это видно по уровню целостности: обычные программы работают на среднем уровне, повышенные — на высоком. В выводе whoami /groups выше — «Высокий обязательный уровень»: команды курса выполнялись в терминале администратора. Процесс среднего уровня не может изменить процесс или объект высокого, даже если пользователь тот же.

PS> Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System | Select-Object EnableLUA, ConsentPromptBehaviorAdmin
EnableLUA ConsentPromptBehaviorAdmin
--------- --------------------------
        1                          5

EnableLUA = 1 — UAC включён; ConsentPromptBehaviorAdmin = 5 — значение по умолчанию: спрашивать согласия администратора для программ, кроме подписанных компонентов Windows. Настройка — Панель управления → Учётные записи пользователей → Изменить параметры контроля учётных записей. Отключать UAC нельзя: вместе с ним пропадает защита.

06

Политики паролей и блокировки

Требования к паролям задают локальные политики безопасности: Win+R → secpol.msc → Политики учётных записей. Посмотреть их можно командой net accounts:

PS> net accounts
Принудительный выход по истечении времени через:             Никогда
Минимальный срок действия пароля (дней):                     0
Максимальный срок действия пароля (дней):                    42
Минимальная длина пароля:                                    0
Хранение неповторяющихся паролей:                            Нет
Блокировка после ошибок ввода пароля:                        10
Длительность блокировки (минут):                             10
Сброс счетчика блокировок через (минут):                     10
Роль компьютера:                                             РАБОЧАЯ СТАНЦИЯ
Команда выполнена успешно.

Минимальная длина пароля 0 — пароль может быть пустым или «1». Это значение по умолчанию у локальных записей, и в организации его меняют первым делом: длина от 12 символов, блокировка после 5–10 неудачных попыток, чтобы пароль нельзя было подобрать перебором. Изменить можно в secpol.msc или командой net accounts /minpwlen:12 в терминале администратора. В домене те же политики задаются централизованно групповыми политиками.

Шифрование диска. Права NTFS защищают файлы, пока работает Windows. Если вынуть диск и подключить к другому компьютеру, права не помогут — их просто никто не проверит. От этого защищает полное шифрование тома BitLocker (Windows Pro): ключ хранится в микросхеме TPM, и без загрузки «своей» Windows диск не прочитать. Обязательно сохраните ключ восстановления — без него при замене платы или сбое TPM данные потеряны навсегда. Состояние — manage-bde -status. В Linux то же делает LUKS: его предлагает установщик Debian при разметке («Авто — использовать весь диск с зашифрованным LVM»).

07

Пользователи и права в Linux

В Linux пользователь — номер UID, группа — GID. Администратор — пользователь root с UID 0: ему разрешено всё. Обычные пользователи выполняют команды администратора через sudo, если они в группе sudo:

$ id
uid=1000(student) gid=1000(student) группы=1000(student),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),101(netdev),108(docker)
$ grep -E "^(root|padmin):" /etc/passwd
root:x:0:0:root:/root:/bin/bash
student:x:1000:1000:student,,,:/home/student:/bin/bash
$ getent group sudo
sudo:x:27:student
$ ls -l /etc/passwd /etc/shadow
-rw-r--r-- 1 root root   1632 окт 14 22:20 /etc/passwd
-rw-r----- 1 root shadow  916 окт 14 22:20 /etc/shadow

Строка /etc/passwd: имя, x (пароль хранится не здесь), UID, GID, полное имя, домашний каталог, оболочка. Хэши паролей лежат в /etc/shadow, который читают только root и группа shadow. Пользователей создают sudo adduser имя, в группу добавляют sudo usermod -aG группа имя, пароль меняют passwd, владельца файла — sudo chown пользователь:группа файл.

Права файла — три тройки rwx: для владельца, для группы, для остальных. Первый символ — тип: - файл, d каталог, l ссылка:

$ echo "баланс за октябрь" > report.txt
$ ls -l report.txt
-rw-rw-r-- 1 student student 33 окт 31 10:45 report.txt
$ stat -c "%A %a %U %G %n" report.txt
-rw-rw-r-- 664 student student report.txt

Права записывают и числом: r = 4, w = 2, x = 1, сумма по каждой тройке. 664 = rw- (4+2), rw- (4+2), r-- (4). Меняет права chmod — числом или буквами (u владелец, g группа, o остальные, +, -, =):

$ chmod 600 report.txt; ls -l report.txt
-rw------- 1 student student 33 окт 31 10:45 report.txt
$ chmod u-r report.txt; cat report.txt
cat: report.txt: Отказано в доступе
$ chmod u=rw,g=r,o= report.txt; ls -l report.txt
-rw-r----- 1 student student 33 окт 31 10:45 report.txt
$ chmod 644 report.txt; ls -l report.txt
-rw-r--r-- 1 student student 33 окт 31 10:45 report.txt

Владелец сам убрал у себя право чтения — и не может прочитать свой файл. Но вернуть право он может: менять права разрешено владельцу независимо от rwx.

У каталогов смысл прав другой: r — видеть список имён, w — создавать и удалять файлы внутри, x — входить в каталог и обращаться к файлам по имени:

$ mkdir docs; echo текст > docs/a.txt; chmod 600 docs/a.txt
$ chmod 600 docs; ls docs; cat docs/a.txt
a.txt
cat: docs/a.txt: Отказано в доступе
$ chmod 700 docs; ls -l docs
итого 4
-rw------- 1 student student 11 окт 31 10:45 a.txt

С правами 600 (нет x) имена в каталоге видны, а открыть файл нельзя. Поэтому каталогам ставят 755 или 700, а не 644.

Права новых файлов задаёт umask — какие права убрать из полных: у файлов полные — 666, у каталогов — 777. При umask 002 файлы получают 664, каталоги 775:

$ umask
0002
$ touch new.txt; mkdir newdir; ls -ld new.txt newdir
drwxrwxr-x 2 student student 40 окт 31 10:45 newdir
-rw-rw-r-- 1 student student  0 окт 31 10:45 new.txt

Особые биты:

$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 118168 апр 19  2025 /usr/bin/passwd
$ ls -ld /tmp
drwxrwxrwt 202 root root 10560 окт 31 10:45 /tmp

s вместо x у владельца — SUID: программа выполняется с правами владельца файла, а не того, кто её запустил. Так обычный пользователь программой passwd меняет свой пароль в /etc/shadow, куда сам писать не может. t у /tmp — sticky bit: писать в каталог могут все, но удалить файл — только его владелец.

WindowsLinux
АдминистраторГруппа Администраторы, повышение через UACroot (UID 0), sudo
ИдентификаторSIDUID, GID
ПраваACL: много записей, наследование, запретыrwx для владельца, группы, остальных; ACL — дополнительно (setfacl)
КомандыNew-LocalUser, icaclsadduser, chmod, chown
Политика паролейsecpol.msc, net accounts/etc/login.defs, PAM

Ключевые выводы раздела

Запомните главное

  • Идентификация — кто, аутентификация — докажи, авторизация — что можно; принцип наименьших привилегий
  • Windows различает пользователей по SID; права выдают группам, а не людям
  • Права NTFS наследуются, суммируются по группам, запрет сильнее разрешения; (W) в запрете ломает и чтение — запрещают (WD,AD)
  • UAC держит администратора на среднем уровне целостности до подтверждения; политику паролей показывает net accounts
  • Linux: rwx для владельца, группы, остальных, числом 4-2-1; у каталога x — вход; SUID и sticky bit
Практические задания — на учебном портале. Задания, критерии оценивания, сдача работ и оценки преподавателя — в курсе на portal.nevabit.ru. Учётную запись выдаёт преподаватель.
Раздел 09: Ввод-вывод и устройства Все разделы Раздел 11: Администрирование Windows