Наличием нескольких учётных записей на одном компьютере опытных пользователей не удивить. Эта практика бывает полезна как на домашнем компьютере, так и в офисе, где за одной машиной работает несколько человек. Но, помимо возможности создавать множество учётных записей на одном компьютере, существует не менее полезная функция объединения пользователей в группы, что позволяет разграничить права доступа к определенным файлам и папкам и повысить уровень безопасности пользовательских данных. При корректной настройке. В противном же случае (если права доступа для групп пользователей распределены неверно или группы не созданы вообще), может, наоборот, возникнуть уязвимость, при которой тот или иной пользователь сможет получить доступ туда, куда ему попадать не следовало.
Поскольку группы в Mac OS X представлены в виде записей в системной директории, в которой хранятся данные об учётных записях пользователей и в целом с ними схожи, они также могут быть членами других групп. Другими словами, группы в OS X могут взаимодействовать по иерархической (древовидной) модели, что позволяет пользователям не только получать права доступа, настроенные для группы, в которой они находятся непосредственно, но и «наследовать» их от групп более старшего порядка. А ещё, один и тот же пользователь может быть членом нескольких групп одного порядка, что делает настройки прав доступа ещё более гибкими.
В системе по умолчанию создано несколько групп пользователей. Все пользователи без привилегий администратора по умолчанию являются членами группы staff. У них есть возможность вносить изменения в файлы только в своей домашней папке, что лишает их возможности производить установку новых программ и менять настройки системы. Если вы даёте пользователю привилегии администратора, то помимо staff, он также становится членом группы admin (хотя из staff пользователь на выходит), что расширяет его возможности. Например, ему доступна запись в папку «Applications», а следовательно и установка приложений, к тому же именно члены группы admin, могут изменять параметры системы. Однако, и их права доступа ограничены. Самым высоким уровнем доступа обладает учётная запись суперпользователя, также называемая «root», которая в системе по умолчанию скрыта. В современных системах для выполнения команд от имени суперпользователя используется команда «sudo», что позволяет оставлять эту учётную запись скрытой, а систему, соответственно, менее уязвимой. Но не все пользователи имеют право использовать эту команду. Чтобы пользователь имел право воспользоваться командой «sudo», он должен быть членом ещё одной группы, которая называется wheel и пришла из UNIX-систем, лежащих у истоков Mac OS X. И хотя все члены группы admin автоматически добавляются в состав wheel, забывать про неё не стоит, так как она играет важную роль в работе системы. Бывали случаи, когда пользователи, открыв свойства загрузочного диска и обнаружив в настройках прав доступа группу wheel, случайно или по незнанию, удаляли её или запрещали ей доступ к диску, что приводило к сбоям в работе системы, а иногда и вообще препятствовало её запуску. Конечно, это поправимо, но ведь лучше не доводить?
Если вдруг с вами всё же случилась эта неприятность, вы можете попробовать восстановить доступ к диску через однопользовательский режим. Для этого выключите компьютер и при его следующем включении зажмите сочетание клавиш ⌘Command + S. После загрузки системы в однопользовательском режиме введите команду
mount -uw /
Затем введите следующую команду:chmod 755 /
После этого вы можете перезагрузить компьютер командойreboot
В результате, система скорее всего загрузится в привычном режиме, а в настройках общего доступа и прав доступа к загрузочному диску снова появится группа wheel.
Помимо описанных выше, в системе может быть практически неограниченное количество групп, созданных пользователями. Чтобы создать новую группу достаточно перейти в меню Системные настройки → Пользователи и группы, нажать на «+» внизу списка, выбрать в ниспадающем меню пункт «Группа» и дать ей имя.
После того как новая группа появится в списке, вы можете добавить в неё нужных вам пользователей (отметив их галочкой), а затем, в свойствах нужной вам папки или диска в разделе «Общий доступ и права доступа» добавить созданную вами группу в список и выбрать для неё соответствующий уровень доступа.
Их существует 3 вида: «Чтение и запись», «Только чтение» и «Только запись (почтовый ящик)». Названия этих вариантов говорят сами за себя: «Чтение и запись» позволяет пользователям добавлять, редактировать и удалять файлы в папке, «Только чтение» не даёт пользователю изменить или удалить файлы, но просмотр их остаётся возможен, а при выборе варианта «Только запись (почтовый ящик)» пользователи не смогут просмотреть содержимое папки, но имеют возможность копировать или перемещать в нее файлы. Также в списке присутствует группа everyone, для которой возможно выбрать значение «Нет доступа». Everyone — это все пользователи, кроме владельца папки. Если у вас есть конфиденциальная информация, к которой должны иметь доступ только вы, этот вариант может оказаться полезен.
Таким образом, при помощи нескольких групп вы можете гибко настроить доступ к важным папкам для всех пользователей вашего Mac, как работающих физически за компьютером, так и подключающихся к нему удалённо или взаимодействующих с созданными на нём общими папками.
Если создание и настройка групп и прав доступа при помощи графического интерфейса реализованы довольно просто, то вот с обзором групп и их состава, дело обстоит несколько сложнее. Раньше, до выхода OS X 10.5, для просмотра групп, входящих в их состав пользователей и связанных с ними настроек можно было использовать утилиту под названием Netinfo Utility. Однако в последующих версиях OS X разработчики от неё отказались. Схожий инструмент остался только в Server Admin Tools для Mac OS X Server (а начиная с версии 10.7 и вообще осталась только отдельная утилита Workgroup Manager). Если вы пользуетесь OS X версии 10.9 и ниже, есть возможность воспользоваться Workgroup Manager и не приобретая расширения OS X Server.
- Загрузите утилиту с официального сайта Apple.
- Смонтируйте полученный образ двойным щелчком мыши и запустите установщик.
- Проведите установку Workgroup Manager, после чего запустите эту утилиту из папки «Программы».
- В открывшемся окне в графе «Address» введите «localhost», а также введите имя и пароль учётной записи пользователя с правами администратора в соответствующие поля.
- В открывшемся окне, выбрав пользователя из колонки слева во вкладке «Groups», вы можете посмотреть, в каких группах он состоит, а при нажатии на кнопку «Show Inherited Groups», отобразятся также и группы старшего порядка, к которым пользователь также имеет отношение (они будут выделены курсивом).
- Выбрав соседнюю вкладку над колонкой с пользователями, вы сможете посмотреть список созданных в системе групп. Список пользователей, входящий в их состав можно посмотреть выбрав вкладку «Members».
Если же вы пользуетесь более новой версией системы (10.10 или 10.11), данную утилиту, к сожалению, установить не удастся. В этом случае вы можете приобрести расширение Mac OS X Server (его цена составляет примерно 20$, что сравнительно недорого) и воспользоваться входящей в его состав службой Profile Manager.
Если же вы считаете подобные траты неоправданными или вам кажется, что расширять функционал системы до серверного только ради столь редко использующейся функции нерационально, в качестве альтернативного решения можно использовать Терминал.
- Запустите Терминал из папки «Утилиты».
- Введите команду
dscl . search /Groups GroupMembership USERNAME
где USERNAME – имя интересующего вас пользователя.
Результат может несколько разочаровать, так как, хоть поиск и привязан к указанному вами имени пользователя, вывод команды включает в себя также все атрибуты тэга «GroupMembership», в число которых входит, например, полный список пользователей группы. Чтобы привести вывод команды к более удобному для восприятия виду можно её немного дополнить: dscl . search /Groups GroupMembership USERNAME | grep = | awk '{print $1}'
При помощи символа вертикальной линии «|» мы отправляем полученные данные в фильтрующую утилиту «grep», чтобы оставить только строчки, которые содержат знак равенства «=», а чтобы также исключить из каждой оставшейся строки «GroupMembership = (» и оставить только название группы мы можем использовать ещё одну команду обработки данных «awk», чтобы отображать только первый элемент каждой строки. В результате вывод команды должен иметь следующий вид:
1 2 3 |
$ dscl . search /Groups GroupMembership USER | grep = | awk '{print $1}' staff testgroup |
Таким образом список групп, в состав которых входит интересующий вас пользователь намного удобнее.
Если же вас, наоборот, интересует полный список пользователей, входящих в состав определенной группы, вы можете воспользоваться командой dscl . read /Groups/GROUP GroupMembership где GROUP – название интересующей вас группы.
Все группы системы можно разделить на две категории и условно назвать «эффективные» и «действительные». Эффективные включают в себя все группы, в состав которых входит пользователь, в то время как действительные — это только те группы, в которые пользователь был добавлен вручную (именно их список мы и получили в результате описанной выше команды). Для того чтобы просмотреть список эффективных групп можно воспользоваться любой из трёх команд Терминала:
groups USERNAME
id -Gn USERNAME
id -p
Те группы, которые входят в состав эффективных за вычетом действительных, можно назвать «условные». К таким группам, например, относится everyone, которая влияет на доступ к папкам всех пользователей, которые не являются их владельцами, если иного не указано для действительных групп. К сожалению, для того чтобы отобразить список условных групп специальной команды нет, но можно извернуться и с использованием предыдущих команд создать её самостоятельно: comm -23 <(id -Gn USERNAME | sed 's/ /\n/g' | sort) <(dscl . search /Groups GroupMembership USERNAME | grep = | awk '{print $1}' | sort)
Таким образом, при помощи описанных выше команд можно охватить практически любой аспект настройки групп и организации пользователей в них. Безусловно, это не так удобно, как могло бы быть, если бы для этих целей существовал графический интерфейс, но за неимением бесплатных альтернатив (особенно на последних версиях системы) и учитывая, что настройкой групп пользователей приходится заниматься не так уж и часто, этот способ можно считать вполне приемлемым.
При подготовке данного материала использовалась оригинальная статья Кристофера Тоффлера, за что приносим ему свою искреннюю благодарность.