Изучаем Linux, 302 (смешанные среды): Управление учетными записями пользователей и групп

Планирование системы управления учетными записями пользователей и групп

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

Трейси Бост, консультант и преподаватель, Свободный писатель

Author photo - Tracy BostТрейси Бост - опытный разработчик программного обеспечения и проектировщик систем. Он специализируется на интеграции корпоративных приложений. Был сопредседателем рабочей группы по бизнес-правилам Организации по поддержке стандартов ипотечной отрасли (MISMO) и сопредседателем секции промышленных стандартов на симпозиуме RuleML2010. Работал в различных отраслях, в том числе в ипотеке, недвижимости и некоммерческом секторе.



28.06.2012

Об этой серии

Эта серия статьей поможет вам освоить задачи администрирования операционной системы Linux. Вы можете использовать материалы этих статей для подготовки к экзаменам программы LPIC третьего уровня (LPIC-3).

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-3. Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит текущие (по состоянию на ноябрь 2010 года) цели экзаменов сертификации LPIC-3.

В этой статье рассматриваются следующие темы:

  • Учетные записи UNIX.
  • Управление учетными записями Samba.
  • Сопоставление учетных записей.
  • Принудительная установка прав доступа к файлам и директориям для учетных записей.

Эта статья поможет вам подготовиться к сдаче экзамена LPI 302 (специализация "Смешанные среды") и содержит материалы цели 313.1 темы 313. Цель имеет вес 4.

Предварительные требования

Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать продвинутыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. В частности, предполагается, что читатель умеет работать с командной строкой Linux и в общих чертах понимает назначение Samba (о чем рассказывалось в предыдущей статье "Изучаем Linux, 302: основные принципы"). Для выполнения примеров этой статьи на вашем компьютере должно быть инсталлировано программное обеспечение Samba, и вы должны иметь доступ к сетевому клиенту под управлением Windows.


Понимание учетных записей пользователей и групп UNIX

О факультативном экзамене LPI-302

Как и многие другие программы, программа сертификации Linux Professional Institute (LPIC) предусматривает различные уровни сертификации, где для получения каждого последующего уровня необходимо обладать более глубокими знаниями и практическим опытом. Экзамен LPI-302 – это факультативный экзамен третьего уровня программы LPIC, требующий продвинутых знаний в области системного администрирования Linux.

Для получения сертификата LPIC третьего уровня (LPIC-3) необходимо успешно сдать два экзамена первого уровня (101 и 102), два экзамена второго уровня (201 и 202), а также базовый экзамен 301 третьего уровня (LPIC-3). Если вы получили сертификат третьего уровня, вы можете сдавать факультативные экзамены по определенным специализациям, например, экзамен LPI-302.

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

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

Внутренняя база данных SAM – это посредник между локальными учетными записями UNIX и учетными записями удаленных компьютеров. Существует несколько методов, позволяющих пользователям пройти аутентификацию на сервере Samba, но прежде чем перейти к рассмотрению учетных записей Samba, необходимо твердо понимать основы управления учетными записями пользователей и групп в UNIX.

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

Когда вы создаете локальную учетную запись на компьютере Linux, например, с помощью команды useradd, то информацию об учетной записи сохраняется в файле /etc/passwd. В этом файле хранится такая информация, как имя пользователя, домашняя директория, командная оболочка и некоторые комментарии, связанные с учетной записью. Обычно эти учетные записи называются локальнымиучетными записями UNIX. В этой статье термины учетная запись UNIX и локальная учетная запись эквивалентны.

В листинге 1 создается локальная учетная запись с именем пользователя monty и описанием Monty Python в разделе комментариев (-c), задается ее домашняя директория (-m) и назначается командная оболочка по умолчанию /bin/bash (-s).

Листинг 1. Создание локальной учетной записи
[tbost@samba ~]$ sudo useradd -c'Monty Python' -m -s /bin/bash monty
[tbost@samba ~]$ less /etc/passwd | grep monty
monty:x:504:504:Monty Python:/home/monty:/bin/bash
[tbost@samba ~]$

Каждая строка в файле /etc/passwd содержит одну учетную запись и состоит из семи полей, разделенных двоеточиями (:). Для управления учетными записями Samba представляют интерес три поля: первое (имя пользователя), третье (идентификатор пользователя, UID) и четвертое (идентификатор группы, GID).

Учетные записи групп

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

Так же, как и в случае с учетными записями пользователей, если вы работаете с локальной конфигурацией учетных записей Samba, то в большинстве случаев необходимо создать учетные записи групп UNIX на локальном сервере Samba. Информация об учетных записях групп UNIX хранится в файле /etc/group. В некоторых дистрибутивах Linux для каждого нового пользователя создается локальная частная группа. Именно так обстоит дело в случае с пользователем monty:

[tbost@samba ~]$ less /etc/group | grep monty
monty:x:504:
[tbost@samba ~]$

Из приведенного листинга видно, что для пользователя monty была создана учетная запись частной группы. Если вы работаете в смешанной среде, где есть компьютеры Windows, то помните о том, что Windows не позволяет присваивать одинаковые имена учетным записям пользователей и групп.

Так же, как и в случае с учетными записями пользователей, для того чтобы Samba могла использовать учетные записи групп, они должны существовать на локальном сервере UNIX. Группы создаются с помощью команды groupadd (см. листинг 2) или путем редактирования файла /etc/group с помощью любого текстового редактора, например, vim.

Листинг 2. Создание группы и добавление в нее пользователя
[tbost@samba ~]$ sudo groupadd accounting
[tbost@samba ~]$ sudo usermod -G accounting monty
[tbost@samba ~]$ less /etc/group | grep accounting
accounting:x:506:monty
[tbost@samba ~]$

Для создания группы и добавления в нее пользователя в листинге 2 используются команды /sbin/groupadd и /sbin/usermod. Если необходимо добавить в группу несколько пользователей, то можно создать сценарий или добавить пользователей непосредственно в файл /etc/group. Члены группы должны быть перечислены в последнем поле и разделяться запятыми (,). Если вы создаете группы вручную, то не забывайте о том, что каждая группа должна иметь уникальный идентификатор (GID).


Управление учетными записями Samba

В стандартной конфигурации Samba информация об учетных записях хранится в одной из следующих внутренних баз данных паролей:

  • smbpasswd
  • tdbsam
  • ldapsam

Использование smbpasswd и tdbsam

База данных smbpasswd используется по умолчанию во всех версиях Samba ниже 3.4. В Samba версии 3.4 smbpasswd была объявлена устаревшей и вместо нее используется база данных tdbsam (эта база данных также рекомендуется для сред, содержащих менее 250 пользователей).

База данных tdbsam считается лучше масштабируемой по сравнению с smbpasswd. Если вы работаете с версией Samba, в которой по умолчанию используется smbpasswd, то можете заменить эту базу данных на tdbsam, указав в файле smb.conf параметр passdb = tdbsam в разделе global.

Однако smbpasswd – это не просто база данных, но еще и инструмент из состава пакета Samba, позволяющий управлять учетными записями Samba в простых конфигурациях. Для создания учетной записи Samba необходимо иметь права пользователя root. Прежде чем создавать учетную запись Samba, она должна существовать на локальном сервере Linux. В листинге 3 приведен пример создания учетной записи пользователя Samba с помощью smbpasswd.

Листинг 3. Создание учетной записи пользователя Samba с помощью smbpasswd
[tbost@samba ~]$ sudo smbpasswd -a monty
New SMB password:
Retype new SMB password:
Added user monty.

Пользователи могут использовать smbpasswd для смены своих паролей, как показано в листинге 4.

Листинг 4. Локальный пользователь может изменять свой пароль с помощью smbpasswd
[monty@samba ~]$ smbpasswd
Old SMB password:
New SMB password:
Retype new SMB password:
Password changed for user monty
[monty@samba ~]$

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

[global]
unix password sync = yes

Если в течение какого-то времени пользователю не нужен доступ к серверу Samba, то можно временно отключить учетную запись и включить ее позже. Если пользователю вообще не нужен доступ к Samba, то его учетную запись можно удалить. В листинге 5 показано, как это сделать.

Листинг 5. Отключение, включение и удаление учетной записи Samba с помощью smbpasswd
[tbost@samba ~]$ sudo smbpasswd -d monty
Disabled user monty.
[tbost@samba ~]$ sudo smbpasswd -e monty
Enabled user monty.
[tbost@samba ~]$ sudo smbpasswd -x monty
Deleted user monty.
[tbost@samba ~]$

Использование pdbedit

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

  • Отображать список учетных записей пользователей.
  • Указывать домашние директории.
  • Импортировать учетные записи пользователей.
  • Назначать политики учетных записей.

При работе с базой данных tdbsam можно использовать как pdbedit, так и smbpasswd (листинг 6). Для выполнения всех команд pdbedit необходимо обладать правами пользователя root.

Листинг 6. Выполнение различных действий с внутренней базой данных при помощи smbpasswd и pdbedit
[tbost@samba ~]$ sudo smbpasswd -a monty
New SMB password:
Retype new SMB password:
Added user monty.
[tbost@samba ~]$ sudo pdbedit -L
monty:504:Monty Python
[tbost@samba ~]# sudo pdbedit -L --verbose 
Unix username:        monty
NT username:          
Account Flags:        [U          ]
User SID:             S-1-5-21-2247757331-3676616310-3820305120-1001
Primary Group SID:    S-1-5-21-2247757331-3676616310-3820305120-513
Full Name:            Monty Python
Home Directory:       \\samba\monty
HomeDir Drive:        
Logon Script:         
Profile Path:         \\samba\monty\profile
Domain:               SAMBA
Account desc:         
Workstations:         
Munged dial:          
Logon time:           0
Logoff time:          never
Kickoff time:         never
Password last set:    Tue, 24 May 2011 14:19:46 CDT
Password can change:  Tue, 24 May 2011 14:20:16 CDT
Password must change: Tue, 24 May 2011 14:20:16 CDT
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

В листинге 6 продемонстрировано, как можно создать пользователя с помощью smbpasswd, а затем вывести список пользователей Samba с помощью pdbedit.

Создайте ваш собственный канал

Вы можете создать ваш собственный RSS, Atom или HTML канал обновлений и получать уведомления о новых или обновленных статьях нашего сайта. Для этого перейдите на страницу developerWorks RSS feeds, выберите зону Linux, установите флажок Статьи и введите в качестве ключевой фразы Linux Professional Institute, после чего выберите требуемый тип канала.

Утилиту pdbedit можно также использовать для задания политик учетных записей. Ниже перечислены названия политик, которыми можно управлять:

  • min password length (минимальная длина пароля)
  • password history (сохранять историю паролей)
  • user must logon to change password (требовать смену пароля при следующем входе в систему)
  • maximum password age (максимальный срок действия пароля)
  • minimum password age (минимальный срок действия пароля)
  • lockout duration (время блокировки при неудачном входе)
  • reset count minutes (сброс счетчика минут блокировки учетной записи)
  • bad lockout attempt (блокировка при неудачной попытке входа)
  • disconnect time (время до отключения)
  • refuse machine password change (отклонять изменение пароля компьютера)

В листинге 7 мы устанавливаем минимальную длину пароля равной восьми символам, а затем устанавливаем максимальный срок действия пароля равным 30 дням. Опция -P принимает строковый аргумент, который в точности должен совпадать с именем одной из вышеперечисленных политик, а опция -c задает значение для выбранной политики.

Листинг 7. Управление учетными записями с помощью pdbedit
[tbost@samba ~]$ sudo pdbedit -P 'min password length' -C 8
account policy "min password length" description: Minimal password length (default: 5)
account policy "min password length" value was: 5
account policy "min password length" value is now: 8
[tbost@samba ~]$ sudo pdbedit -P 'maximum password age' -C 30
...
account policy "maximum password age" value was: 4294967295
account policy "maximum password age" value is now: 30

Для получения дополнительной информации о доступных командах утилиты pdbedit обратитесь к ее man-странице или выполните команду pdbedit -h.

Использование ldapsam

Если ваша среда содержит более 250 пользователей, то можно использовать внутреннюю базу данных ldapsam. Из всех трех вышеперечисленных баз данных только ldapsam может хранить данные об учетных записях групп. Если вся информация о пользователях и группах хранится во внутренней базе данных ldap, то идентификаторы пользователей и групп (UIDs и GIDs, соответственно) будут согласованы между всеми вашими серверами. Поскольку настройка LDAP выходит за рамки этой статьи, я ограничусь информацией о том, что расположение LDAP-сервера определяется параметром idmap backend в файле smb.conf.

В следующем примере параметр idmap backend говорит Samba о том, что в качестве хранилища учетных данных она должна использовать службу каталогов LDAP, запущенную на узле с именем directory-services.example.org. В этом случае необходимо иметь рабочий сервер LDAP, предварительно настроенный на работу с Samba (более подробно утилита idmap будет рассмотрен в следующем разделе).

[global]
idmap backend = ldap:ldap://directory-services.example.org:636

Сопоставление учетных записей

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

Сопоставление пользователей с помощью sampasswd и TDB -файлов

Если имена пользователей Windows, подключающихся к серверу Samba, совпадают с именами на сервере Samba, то необходимость в файле сопоставлений отсутствует. В противном случае можно создать файл сопоставлений, который связывает имена пользователей. Не забывайте о том, что хотя в Linux все имена и команды различают регистр, в Windows это не так. Таким образом, имя Windows-пользователя TBost и локальная учетная запись tbost – это не то же самое. В таблице 1 показанв сопоставления учетных записей Windows и UNIX.

Таблица 1. Учетные записи Windows и UNIX для сопоставления
WindowsUNIX
Montymonty
bostttbost
sue.georgesue

Когда вы создаете учетные записи Samba, используйте имена учетных записей Windows. В файле smb.conf можно указать местоположение файла, содержащего сопоставления учетных записей с соответствующими учетными записями UNIX. В листинге 8 показано сопоставление учетных записей в UNIX.

Листинг 8. Простое сопоставление учетных записей в UNIX
[tbost@samba ~]$ sudo vi /etc/samba/smb.conf 
[global]
username map = /etc/samba/smbusers
...
...
...
[tbost@samba ~]$ sudo vi /etc/samba/smbusers 
# Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
monty = Monty
tbost = bostt
sue = sue.george

Команда в листинге 8 настраивает параметр username map на использование файла use /etc/samba/smbusers в качестве файла сопоставлений. Процедура сопоставления учетных записей достаточно простая: слева указываются учетные записи UNIX, справа – учетные записи Samba, а между ними ставится знак равенства (=). При подключении пользователя Samba выполняет сопоставление соответствующей учетной записи.

Сопоставление групп

В типовой среде Samba сопоставление групп настраивается при помощи команды groupmap из состава Samba. Предположим, что пользователи Monty, bostt и sue.george являются членами групп Domain Admins, Domain Users и Domain Guests. Если вы хотите установить для групп этих пользователей такие же разрешения, что и для групп UNIX на сервере Samba, то добавьте имена учетных записей пользователей UNIX в каждую группу:

adm:x:4:root,adm,daemon,monty,tbost,sue
users:x:100:monty,tbost,sue
guests:x:507:monty,tbost,sue

Это лишь часть списка групп на сервере Samba. Группы adm и users били созданы во время инсталляции операционной системы Linux. Вам необходимо добавить каждого пользователя в соответствующую группу (таблица 2).

Таблица 2. Учетные записи групп Windows и UNIX для сопоставления
WindowsUNIXWindows relative ID (RID)UNIX GID
Domain Adminsadm5124
Domain Usersusers513100
Domain Guestsguests514507

Команда net groupmap может выполнять сопоставление доменных групп (листинг 9), а команда net groupmap list выводит список этих сопоставлений. Начиная с Samba версии 3.х, доступна новая функциональность, предназначенная для сопоставления относительных идентификаторов Windows (RID) и идентификаторов групп UNIX (GID).

Листинг 9. Сопоставление групп с помощью команды groupmap
[tbost@samba ~]$sudo net groupmap add ntgroup="Domain Admins" unixgroup=adm \
rid=512 type=d
Successfully added group Domain Admins to the mapping db as a domain group
[tbost@samba ~]$ sudo net groupmap add ntgroup="Domain Users" unixgroup=users \
rid=513 type=d
Successfully added group Domain Users to the mapping db as a domain group
[tbost@samba ~]$sudo net groupmap add ntgroup="Domain Guests" unixgroup=guests \
rid=514 type=d
Successfully added group Domain Guests to the mapping db as a domain group
[tbost@samba ~]$sudo net groupmap list
Domain Users (S-1-5-21-2247757331-3676616310-3820305120-513) -> users
Domain Guests (S-1-5-21-2247757331-3676616310-3820305120-514) -> guests
Domain Admins (S-1-5-21-2247757331-3676616310-3820305120-512) -> adm

В листинге 9 выполняется следующая последовательность действий для сопоставления групп:

  1. Выполнение команды net groupmap add с правами пользователя root для сопоставления Windows-группы Domain Admin (ntgroup='Domain Admin") с группой UNIX adm (unixgroup=adm).

    Выполнение этих действий для сопоставления каждой группы.

  2. Последняя команда листинга 9 выводит список сопоставлений групп.

Сопоставление идентификационных данных

Рассмотренные сопоставления оказываются достаточными в большинстве сред. Тем не менее, если вы управляете более сложной средой, например, средой с несколькими серверами Samba или рабочими станциями из различных доменов, которые подключаются к серверу Samba, то следует знать о сопоставлении идентификационных данных (IDMAP) и Winbind. IDMAP может помочь решить проблемы функциональной совместимости между идентификаторами безопасности Windows (SID) и локальными идентификаторами пользователей (UID) или групп (GID) UNIX.

Если сервер Samba является членом домена Windows, то для сопоставления идентификаторов SID и UID (или GID) можно использовать Winbind. В файле smb.conf можно настроить диапазон значений параметра idmap и указать время, в течение которого Winbind должен кэшировать информацию об учетных записях:

[global]
idmap uid = 20000-50000
idmap gid = 20000-50000
winbind cache time = 300

Параметры, заданные в этом примере, указывают Winbind использовать диапазон локальных идентификаторов UID 20000-50000 и диапазон идентификаторов GID 20000-50000. Эта конфигурация относительно безопасна для сервера Samba, на котором не предполагается размещать несколько тысяч локальных учетных записей пользователей или групп. Параметр winbind cache time = 300 говорит Winbind о том, что информация об учетных записей должна кэшироваться 300 секунд. По умолчанию Winbind хранит сопоставления в файле winbind_idmap.tdb.


Принудительное назначение учетных записей по умолчанию

Вместо добавления каждого пользователя в группу более удобным может оказаться использование параметров force user и force group. Когда эти параметры заданы, они говорят Samba о том, что авторизованный пользователь при подключении должен иметь те права доступа, которые были установлены для указанного пользователя и группы. Это особенно полезно при настройке общего ресурса, доступного многим пользователям, для которых достаточно использовать общие права доступа:

[global]
username map = /etc/samba/smbusers
force user = guest
force group = +employees

В приведенном примере параметр force user рассматривает всех подключившихся пользователей, обращающихся к файлам, в качестве пользователя guest. При этом каждый пользователь должен подключаться с использованием действующей учетной записи. В рассмотренном примере в качестве учетных записей пользователей будет принудительно использоваться учетная запись guest, а в качестве учетных записей групп – учетная запись employees.

Ресурсы

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=823313
ArticleTitle=Изучаем Linux, 302 (смешанные среды): Управление учетными записями пользователей и групп
publish-date=06282012