Пользователи и группы: учётные записи и управление

Рейтинг: 55.2% · 12 голосов
Подробный курс по macOS для разработчиков и админов: архитектура и Apple Silicon, терминал и zsh, Homebrew и пакеты, launchd и автоматизация, APFS и Time Machine, безопасность (SIP, Gatekeeper, TCC, FileVault), сеть, логи и диагностика, MDM и DDM, контейнеры и виртуализация, восстановление. По официальной документации Apple, актуально на 2026 (macOS 26 Tahoe).
Ответить
Аватара пользователя
Artem_MacAdmin
Сообщения: 47
Зарегистрирован: 11 май 2026, 05:31

Пользователи и группы: учётные записи и управление

Сообщение Artem_MacAdmin »

Оглавление курса (47)
  1. Что такое macOS: Unix под капотом и место в 2026
  2. Архитектура macOS: XNU, тома и Signed System Volume
  3. Apple Silicon: ARM, Rosetta 2 и отличия от Intel
  4. Установка, обновление и восстановление macOS
  5. Finder, рабочий стол и продуктивность
  6. Системные настройки и их управление из CLI (defaults)
  7. Пользователи и группы: учётные записи и управление (вы здесь)
  8. Терминал и zsh: командная строка macOS
  9. CLI на macOS: BSD-команды и отличия от Linux
  10. Настройка zsh: .zshrc, prompt, плагины
  11. Файловая система и права: POSIX, ACL, атрибуты, флаги
  12. Homebrew: пакетный менеджер для macOS
  13. Homebrew глубже: tap, Brewfile, services, обслуживание
  14. Другие пакеты: MacPorts, mas, Nix и App Store
  15. Установка приложений: .app, .dmg, .pkg и Gatekeeper
  16. Управление приложениями и их данные
  17. launchd и launchctl: система запуска macOS
  18. Свои службы и периодические задачи на launchd
  19. Автоматизация: Shortcuts, AppleScript и osascript
  20. Конфигурация как код: defaults, plist и профили
  21. APFS: снапшоты, клоны, контейнеры и шифрование
  22. Управление дисками: diskutil, образы и форматирование
  23. Time Machine и резервное копирование
  24. Внешние диски, форматы и сетевые тома
  25. Модель безопасности macOS: SIP и целостность системы
  26. Gatekeeper, нотаризация и защита от вредоносов
  27. Приватность и TCC: разрешения на доступ
  28. FileVault: полнодисковое шифрование
  29. Связка ключей и управление секретами
  30. Сетевой экран и защита сети
  31. Сеть в macOS: настройка и инструменты
  32. Диагностика сети на Mac
  33. Общий доступ: SSH, экран, файлы, удалённое управление
  34. Процессы и ресурсы: мониторинг производительности
  35. Логи macOS: unified logging и диагностика
  36. Производительность и энергия: powermetrics, диагностика
  37. Энергия, сон и обслуживание системы
  38. Профили конфигурации и основы MDM
  39. Управление парком Mac: MDM, DDM и zero-touch (2026)
  40. Среда разработчика на Mac: Xcode CLT, git, версии
  41. Контейнеры на Mac: Docker Desktop, OrbStack, Apple container
  42. Виртуализация: Virtualization.framework, UTM, Linux и Windows
  43. Режимы загрузки и восстановление (Apple Silicon)
  44. Сброс, NVRAM, Safe Mode и сброс настроек
  45. Траблшутинг macOS: дерево решений по симптомам
  46. Место на диске и обслуживание системы
  47. Сквозной проект: настройка Mac как у профи + куда расти
Открой Системные настройки -> Пользователи и группы. Видишь два-три аватара, переключатель Разрешить пользователю администрировать этот компьютер и кнопку с замком. Выглядит как детская песочница. А под капотом - полноценная служба каталогов OpenDirectory, UID/GID в стиле Unix, криптографические токены, привязанные к FileVault, и файл /etc/sudoers, одна опечатка в котором лишает тебя root. В этом уроке мы разбираем учётные записи mac до самого дна: какие бывают типы, как создавать и удалять пользователей из GUI и из терминала, что такое Secure Token и почему без него FileVault превращает аккаунт в красивую бесполезную иконку, как устроены группы admin, staff и wheel, и как заставить sudo на mac спрашивать палец вместо пароля.

Это база для всего парка Mac. Создашь админа неправильно - и при включённом FileVault он не сможет разблокировать диск после перезагрузки. Раздашь sudo всем подряд - и любой troyan от имени пользователя получит root. Поэтому идём вглубь.

Типы учётных записей: кто есть кто

macOS различает несколько типов аккаунтов, и разница не косметическая - это разные наборы прав и членство в группах.
  • Администратор - состоит в группе admin. Может ставить софт в /Applications, менять системные настройки, и (главное) использовать sudo для получения root. Это не root - это пользователь, которому разрешено повышать привилегии. Первый созданный при установке аккаунт - всегда администратор macOS.
  • Стандартный - обычный пользователь mac без членства в admin. Работает в своём ~/, ставит софт в ~/Applications, но не лезет в систему. Это правильный режим для повседневной работы: даже сисадмину стоит сидеть под стандартным и повышаться по необходимости.
  • Только общий доступ (Sharing Only) - аккаунт без домашней папки и без права локального входа. Существует только для доступа к общим файлам по сети (SMB/AFP). Логиниться в систему им нельзя.
  • Гость - временный сеанс, при выходе всё стирается. По умолчанию выключен, при FileVault недоступен для полноценного входа.
  • Управляемый родительским контролем (Screen Time) - это стандартный аккаунт, на который наложены ограничения через Экранное время: лимиты приложений, веб-контента, времени. Технически это не отдельный класс, а стандартный пользователь плюс профиль ограничений.
Тип хранится не флажком is_admin, а членством в группе. Администратор - это просто пользователь mac, чей UID входит в GroupMembership группы admin (GID 80). Запомни это: понизить или повысить аккаунт = добавить или убрать его из группы.

Изображение

Служба каталогов, UID и чтение через dscl

Локальные пользователи mac живут не в /etc/passwd (он есть, но почти пустой и системный). Реальная база - это OpenDirectory, локальный узел которой обозначается точкой. Универсальный инструмент чтения и записи - dscl (Directory Service Command Line).

Посмотрим список реальных пользователей и их UID:

Код: Выделить всё

dscl . list /Users UniqueID
Вывод (фрагмент):

Код: Выделить всё

_spotlight          89
_windowserver       88
daemon              1
nobody              -2
root                0
admin               501
maria               502
Разбор. UID 0 - это root. Аккаунты с подчёркиванием в начале (_spotlight, _windowserver) - сервисные, под ними крутятся фоновые демоны с урезанными правами; их сотни, и трогать их нельзя. Настоящие люди начинаются с UID 501 - так macOS нумерует первого созданного пользователя, дальше 502, 503 и так далее. Хочешь чистый список без системного мусора - отфильтруй по UID >= 500:

Код: Выделить всё

dscl . list /Users UniqueID | awk '$2 >= 500 {print $1, $2}'
Прочитать всё про конкретного человека:

Код: Выделить всё

dscl . read /Users/maria
Увидишь NFSHomeDirectory (домашняя папка), UserShell (оболочка, по умолчанию /bin/zsh), RealName, UniqueID, PrimaryGroupID. Чтобы вытащить одно поле точечно:

Код: Выделить всё

dscl . read /Users/maria NFSHomeDirectory
NFSHomeDirectory: /Users/maria
Альтернатива для быстрого взгляда - dscacheutil. Разница принципиальная: dscl читает каталог напрямую, а dscacheutil спрашивает кэш службы каталогов и отдаёт готовую агрегированную карточку аккаунта:

Код: Выделить всё

dscacheutil -q user -a name maria
name: maria
password: ********
uid: 502
gid: 20
dir: /Users/maria
shell: /bin/zsh
gecos: Maria Petrova
Если ты только что создал или удалил пользователя скриптом, а dscacheutil показывает старое - сбрось кэш: dscacheutil -flushcache (и при необходимости перезапусти DirectoryServices через killall -HUP opendirectoryd). Чтение через dscl кэш не использует и всегда актуально - это его плюс в скриптах.

Кто я и в каких группах прямо сейчас - классический id:

Код: Выделить всё

id maria
uid=502(maria) gid=20(staff) groups=20(staff),12(everyone),61(localaccounts),701(...),100(_lpoperator)
Видишь gid=20(staff) - это первичная группа всех обычных пользователей mac. Если бы maria была администратором, в списке groups появилось бы 80(admin).

Создание и удаление: sysadminctl как правильный путь

Можно слепить пользователя руками через dscl (create записи, задать UID, NFSHomeDirectory, PrimaryGroupID, прописать пароль, создать папку). Это работает, но это ручная сборка двигателя - легко забыть атрибут и получить кривой аккаунт. С 10.13 Apple дала инструмент, который делает всё правильно: sysadminctl. Он создаёт запись, заводит домашнюю папку и - ключевое - умеет обращаться с Secure Token.

Создать стандартного пользователя:

Код: Выделить всё

sudo sysadminctl -addUser maria -fullName "Maria Petrova" -password - -home /Users/maria -shell /bin/zsh
Здесь -password - (дефис) означает: запросить пароль интерактивно, не светить его в истории команд и в выводе ps. Никогда не пиши пароль прямым аргументом в скрипте - он утечёт в логи.

Создать сразу администратора - добавь флаг -admin:

Код: Выделить всё

sudo sysadminctl -addUser bob -fullName "Bob Admin" -password - -admin
Флаг -admin кладёт аккаунт в группу admin. Проверим результат:

Код: Выделить всё

dscl . read /Groups/admin GroupMembership
GroupMembership: root admin bob
Удалить пользователя - и тут важная развилка:

Код: Выделить всё

sudo sysadminctl -deleteUser maria
По умолчанию это переносит домашнюю папку в /Users/Deleted Users/ как .dmg-архив - данные не теряются. Если хочешь стереть начисто, добавь -secure (надёжное удаление) или удаляй вместе с keepHome-логикой осознанно. Проверь, что в /Users/Deleted Users/ не копятся гигабайты старых профилей - это классическая утечка места на парковых машинах.

Сменить пароль другому пользователю (от имени админа):

Код: Выделить всё

sudo sysadminctl -resetPasswordFor maria -newPassword -
Secure Token и FileVault: почему админ не открывает диск

Вот место, где гибнет половина скриптов автоматизации. Secure Token - это криптографический ключ, привязанный к паролю пользователя, без которого аккаунт не может разблокировать том FileVault и не может включить сам FileVault. На Apple Silicon и современных Mac первый пользователь, заданный при первой настройке, получает Secure Token автоматически. А вот пользователь, созданный позже из терминала, по умолчанию его НЕ получает.

Сценарий грабли: ты по SSH создал админа bob через sysadminctl, выдал -admin, проверил - всё на месте. Но FileVault включён. После перезагрузки на экране FileVault bob отсутствует или его пароль не принимается. Потому что у bob нет Secure Token, а значит и нет права на разблокировку диска.

Проверить статус:

Код: Выделить всё

sysadminctl -secureTokenStatus maria
maria Secure token is DISABLED for user maria
Чтобы выдать Secure Token, система требует подтверждения от уже владеющего токеном администратора - иначе любой смог бы раздать себе ключи. Поэтому в команде всегда два аккаунта: тот, кому выдаём, и тот, кто разрешает:

Код: Выделить всё

sudo sysadminctl -secureTokenOn maria -password - -adminUser admin -adminPassword -
Здесь admin - существующий администратор macOS с уже включённым Secure Token, оба пароля запрашиваются интерактивно (дефисы). После этого maria появится на экране FileVault.

В управляемом парке за раздачу токенов отвечает Bootstrap Token: MDM передаёт его при настройке, и тогда новые пользователи получают Secure Token автоматически без ручного admin/password. Но на одиночной машине помни правило: создал пользователя на FileVault-диске - проверь -secureTokenStatus, иначе ты сделал аккаунт, который не сможет войти после перезагрузки.

Группы, sudo и /etc/sudoers

Три группы, которые надо знать:
  • admin (GID 80) - администраторы. Членство здесь даёт право на sudo и на запись в системные области.
  • staff (GID 20) - первичная группа обычных локальных пользователей.
  • wheel (GID 0) - историческая Unix-группа суперпользователей. В macOS реально членом wheel является root; правом sudo по умолчанию управляет НЕ wheel, а admin - это важное отличие от классического Linux.
Кто именно может sudo, решает /etc/sudoers. Открывать его надо ТОЛЬКО через visudo - он проверяет синтаксис перед сохранением. Прямое редактирование nano /etc/sudoers с опечаткой = сломанный sudo и потенциально запертая машина.

Код: Выделить всё

sudo visudo
Ключевая строка в macOS, дающая права админам:

Код: Выделить всё

%admin          ALL = (ALL) ALL
Знак процента означает группу. Читается так: члены группы admin на всех хостах могут выполнять любые команды от любого пользователя. Хочешь дать одному человеку sudo без пароля для конкретной команды - не правь /etc/sudoers напрямую, клади файл в /etc/sudoers.d/:

Код: Выделить всё

sudo visudo -f /etc/sudoers.d/maria-backup
maria ALL = (root) NOPASSWD: /usr/bin/tmutil
Это переживает обновления системы и не трогает основной файл. Проверить, что тебе разрешено:

Код: Выделить всё

sudo -l
sudo с Touch ID: палец вместо пароля

sudo на mac можно научить принимать отпечаток. До Sonoma приходилось править /etc/pam.d/sudo, и обновление системы затирало правку. Начиная с Sonoma (и в Tahoe это штатный путь) есть отдельный файл /etc/pam.d/sudo_local, который НЕ перезаписывается при апдейтах. Apple даже кладёт готовый шаблон.

Создай конфиг из шаблона:

Код: Выделить всё

sudo cp /etc/pam.d/sudo_local.template /etc/pam.d/sudo_local
sudo nano /etc/pam.d/sudo_local
Внутри - закомментированная строка. Раскомментируй её (убери #):

Код: Выделить всё

# sudo_local: local config file which survives system update
# and is included for sudo
auth       sufficient     pam_tid.so
Сохрани, открой новую сессию терминала, выполни любой sudo - выскочит запрос Touch ID. Грабли: в сеансе по SSH датчик недоступен, и sudo корректно откатится на пароль (поэтому строка sufficient, а не required - она добавляет способ, а не заменяет). Ещё нюанс: внутри tmux/screen Touch ID может не всплывать без дополнительного pam_reattach - на чистой системе работает из коробки.

Типичные грабли
  • Создал админа из терминала на FileVault-машине и забыл про Secure Token - после перезагрузки он не разблокирует диск. Всегда проверяй sysadminctl -secureTokenStatus.
  • Пишешь пароль прямым аргументом sysadminctl - он попадает в ps и shell history. Используй -password - для интерактива.
  • Редактируешь /etc/sudoers без visudo, делаешь опечатку - sudo отказывается работать целиком. Только visudo, только /etc/sudoers.d/ для своих правил.
  • Удалил пользователя без проверки /Users/Deleted Users/ - архивы профилей молча съедают диск.
  • Путаешь wheel и admin: в macOS право sudo даёт членство в admin, не в wheel.
  • dscacheutil показывает старые данные после изменения - забыл dscacheutil -flushcache.
Мини-лаба (повтори руками)
  • Выведи всех реальных пользователей: dscl . list /Users UniqueID | awk '$2 >= 500'.
  • Создай стандартного пользователя test: sudo sysadminctl -addUser test -fullName "Test User" -password -.
  • Проверь его группы (id test) и убедись, что admin там нет.
  • Глянь статус токена: sysadminctl -secureTokenStatus test.
  • Сделай его админом, добавив в группу: sudo dseditgroup -o edit -a test -t user admin. Перепроверь dscl . read /Groups/admin GroupMembership.
  • Удали аккаунт: sudo sysadminctl -deleteUser test и проверь, что в /Users/Deleted Users/ появился (или не появился) архив.
  • Включи sudo по Touch ID через /etc/pam.d/sudo_local и проверь.
Контрольные вопросы
  • Чем определяется, что пользователь - администратор macOS: отдельным флагом или членством в группе? В какой именно?
  • Почему созданный из терминала админ может не открыть FileVault после перезагрузки и как это исправить одной командой?
  • Чем dscl отличается от dscacheutil и почему в скриптах для актуальных данных надёжнее dscl?
  • Где правильно держать собственные правила sudo, чтобы они пережили обновление системы, и каким инструментом их редактировать?
Итог

Учётные записи mac - это не флажки в окне настроек, а записи OpenDirectory с UID, членством в группах и криптографией FileVault поверх. Тип аккаунта = членство в группе admin. Создавай и удаляй через sysadminctl, читай через dscl и dscacheutil, проверяй членство через id. На FileVault-машинах всегда держи в голове Secure Token - без него аккаунт не разблокирует диск. Право sudo на mac даёт группа admin, настраивается через visudo и /etc/sudoers.d/, а палец вместо пароля включается одной строкой в /etc/pam.d/sudo_local. Это фундамент, на котором стоит безопасность всей машины.
👍2 ❤️1 🔥 😄 🤔2
Аватара пользователя
scala12
Сообщения: 1
Зарегистрирован: 14 май 2026, 02:16

Re: Пользователи и группы: учётные записи и управление

Сообщение scala12 »

Спасибо, история с Secure Token прям спасла - создал по ssh админа на буке с FileVault, после ребута он реально пропал с экрана. secureTokenOn с adminUser помог.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
admin_andrei
Сообщения: 1
Зарегистрирован: 12 май 2026, 13:54

Re: Пользователи и группы: учётные записи и управление

Сообщение admin_andrei »

А правда что wheel в маке почти не используется? Всю жизнь думал что sudo дает именно wheel, а тут оказывается admin рулит. Проверил sudo -l - точно %admin в sudoers.
👍 ❤️1 🔥 😄 🤔1
Ответить
← Предыдущая глава
Системные настройки и их управление из CLI (defaults)
Следующая глава →
Терминал и zsh: командная строка macOS

Все главы курса «macOS для профи: администрирование, терминал и Homebrew»

Поделиться темой: ✈ Telegram VK

Вернуться в «macOS для профи: администрирование, терминал и Homebrew»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость