Ubuntu samba в домене windows

Время на прочтение
9 мин

Количество просмотров 89K

В нашей предыдущей работе было рассмотрено, что такое Active Directory и Samba и в чем состоят преимущества их совместной работы. Также был рассмотрен процесс сборки Samba из исходников и включение ее в домен, и все это — из командной строки. Следует признать, что сборка чего-либо из исходников не является распространенной практикой в современных дистрибутивах Линукс. Гораздо чаще для установки программного обеспечения используются репозитории. Это позволяет сделать процесс установки более дружелюбным и простым для пользователя. Также могут автоматически вовлекаться дополнительные пакеты, необходимые для работы устанавливаемого ПО, что опять же серьезно облегчает жизнь и избавляет от необходимости изучать списки необходимых предустановленных пакетов. В настоящее время наблюдается тенденция к повсеместному использованию графических интерфейсов. Можно долго обсуждать доводы «за» и «против», но факт остается фактом: все большее количество пользователей и даже системных администраторов предпочитает для значительного числа задач использовать GUI. В рамках этой статьи мы постараемся рассмотреть процесс установки и включения в домен Samba при помощи командной строки и репозиториев, а также включение Samba в домен при помощи графического интерфейса утилиты SADMS.
По статистике, Openstat Ubuntu является 4-й в списке самых популярных ОС для веб-серверов, и её популярность быстро растёт. В нашем случае это дистрибутив Ubuntu Server 12.04 LTS. Найти дистрибутив можно на официальном сайте Ubuntu.

1.Включение Samba-сервера на базе Ubuntu в домен AD при помощи командной строки

Для начала рассмотрим включение сервера на базе Ubuntu в домен AD средствами командной строки. Процесс подробно описан в документации на сайте Ubuntu.

2.Установка обновлений и необходимых пакетов.

Нам понадобятся Kerberos, Samba и Winbind. Прежде чем их устанавливать, рекомендуется обновить систему:

sudo apt-get update
sudo apt-get upgrade

После успешной установки обновлений ставим Kerberos, Samba и Winbind:

sudo apt-get install install krb5-user samba winbind

В этой команде,
krb5-user— пакет для протокола Kerberos, который используется для аутентификации в Windows;
samba— позволяет стать членом домена;
winbind— позволяет использовать учетную запись пользователя из ActiveDirectory.
При использовании графического интерфейса можно использовать менеджер пакетов Synaptic. Стоит заметить, что по умолчанию в Ubuntu Server 12.04 LTS графического интерфейса нет, его при необходимости можно установить отдельно:

sudo apt-get install ubuntu-desktop

После этого необходимо сконфигурировать все компоненты для работы с доменом. Тестовый домен называется LAB.LOCAL, контроллер домена — lab-dc1.lab.local, c IP 192.168.7.2, имя сервера — testubuntu.

3.Настройка DNS

В первую очередь необходимо настроить DNS на хосте под управлением Ubuntu (сервером DNS будет контролер домена), а также прописать правильный домен поиска. Для этого необходимо отредактировать файл /etc/resolv.conf, чтобы он содержал следующую информацию:

domain lab.local
search lab.local
nameserver 192.168.7.2

Для их применения изменений необходимо перезапустить сетевую службу:

/etc/init.d/networking restart

Также следует убедиться, что имя сервера в файле /etc/hostname задано верно:

testubuntu

Необходимо еще отредактировать файл /etc/hosts таким образом, чтобы в нём была запись с полным доменным именем компьютера и обязательно с коротким именем хоста, ссылающаяся на один из внутренних IP:

# Имена этого компьютера
127.0.0.1	localhost
127.0.1.1	testubuntu.lab.local	testubuntu
4.Настройка синхронизации времени.

Следующий шаг — настройка синхронизации по времени с контролером домена. Очень важно не забыть про этот момент, так как если расхождение по времени составит более пяти минут, мы не сможем получить тикет от Kerberos.
Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:

ntpdate ntp.mobatime.ru

Автоматическая же синхронизация настраивается с помощью ntpd, этот демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:

sudo ap<i>t-get</i> install ntp

Теперь необходимо внести правки в файл /etc/ntp.conf, добавив в него информацию о сервере времени:

# You do need to talk to an NTP server or two (or three).
server lab-dc1.lab.local

После чего нужно перезапустить демон ntpd:

sudo /etc/init.d/ntp restart
5.Настройка Kerberos.

Следующий этап — настройка авторизации через протокол Kerberos. Нужно будет отредактировать файл /etc/krb5.conf. Ниже приведен результат правок:

[libdefaults]
	default_realm = LAB.LOCAL
	kdc_timesync = 1
	ccache_type = 4
	forwardable = true
	proxiable = true
	v4_instance_resolve = false
	v4_name_convert = {
		host = {
			rcmd = host
			ftp = ftp
		}
		plain = {
			something = something-else		}
	}
	fcc-mit-ticketflags = true
[realms]
	LAB.LOCAL = {
		kdc = lab-dc1
		admin_server = lab-dc1
		default_domain = LAB.LOCAL
	}
[domain_realm]
	.lab.local = LAB.LOCAL
	lab.local = LAB.LOCAL
[login]
	krb4_convert = false
	krb4_get_tickets = false

На данном этапе можно проверить, что мы можем авторизоваться в домене. Для этого используем следующую команду:

kinit user@LAB.LOCAL

Вместо user, естественно, стоит вписать имя существующего пользователя домена. Имя домена необходимо писать заглавными буквами!
Если выполнение команды не привело к возникновению ошибок — значит, всё верно, и домен отдаёт вам тикет Kerberos. Убедиться в том, что тикет получен, можно, выполнив команду:

klist

Удалить все тикеты можно командой

kdestroy

Итак, будем считать, что авторизация прошла успешно; пора настроить непосредственно вход в домен.
Еще один файл, который нас интересует — /etc/samba/smb.conf. В нем нам нужна секция [global]. Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:

[global] 
# Эти две опции нужно писать именно в заглавном регистре, причём <code>workgroup</code> без
   # последней секции после точки, а <code>realm</code> - полное имя домена 
   workgroup = LAB
   realm = LAB.LOCAL
 # Эти две опции отвечают как раз за авторизацию через AD
   security = ADS
   encrypt passwords = true
   # Просто важные 
   dns proxy = no 
   socket options = TCP_NODELAY
 # Если вы не хотите, чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе,
   # или даже стать доменконтроллером, то всегда прописывайте эти пять опций именно в таком виде
   domain master = no
   local master = no
   preferred master = no
   os level = 0
   domain logons = no
# Отключить поддержку принтеров
   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes

Отредактировав smb.conf, выполните команду

testparm

Она проверит конфигурацию на ошибки и выдаст суммарную сводку о нём:

# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

Как видно, были заданы правильные параметры для того, чтобы компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого используется следующая команда:

net ads join -U admin -D LAB 

И в случае успеха вывод команды должен быть примерно таким:

# net ads join -U <i>admin</i> -D LAB
Enter admin's password:
Using short domain name — LAB 
Joined 'testubuntu' to realm 'lab.local'
6.Параметры, используемые командой net

  1. U username%password — обязательный параметр, вместо admin необходимо подставить имя пользователя с правами администратора домена и указать пароль.
  2. D DOMAIN: DOMAIN — собственно сам домен; его можно и не указывать, но лучше всё же это делать всегда — так спокойнее.
  3. S win_domain_controller: win_domain_controller можно не указывать, но бывают случаи, когда автоматически сервер не находит контроллер домена.
  4. createcomputer=«OU/OU/…»: в AD часто используется OU (Organizational Unit), есть в корне домена OU = Office, в нем OU = Cabinet; чтобы сразу добавить в нужный, можно указать так:
    	sudo net ads join -U username createcomputer=«Office/Cabinet».
    	

Если больше никаких сообщений нет, значит, всё прошло успешно.
Попробуйте использовать ping по имени с другого члена домена, чтобы убедиться, что в домене всё отработало как следует.
Можно также использовать команду

net ads testjoin

Если проблем не возникло, то вывод команды будет следующим:

#net ads testjoin
Join is OK

Но иногда после сообщения о присоединении к домену выдаётся такая ошибка:

DNS update failed!

Прежде чем выяснять, почему же не обновляется DNS, перезагрузите компьютер после введения в домен! Вполне возможно, что это решит проблему.
Если это не помогло, рекомендуется ещё раз проверить настройки DNS: с большой долей вероятности причина будет в них. После этого нужно удалить компьютер из домена и попытаться повторить процесс заново.
Если всё прошло без ошибок, то компьютер успешно включен в домен. Можно зайти на домен-контроллер и убедиться в этом.
Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то кроме самой Samba вам понадобится ещё и Winbind — специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory.
Проще говоря, Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.
Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux-систему, присвоив им ID из заданного диапазона. Таким образом, вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.
Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf. Добавьте в секцию [global] следующие строки:

# Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind.
   # Диапазоны идентификаторов для виртуальных пользователей и групп.
   idmap uid = 10000 - 40000
   idmap gid = 10000 - 40000
   # Эти опции не стоит выключать.
   winbind enum groups = yes
   winbind enum users = yes
   # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
   # будут использоваться с доменом, т.е. вместо user - DOMAIN\user.
   # Возможно именно это вам и нужно, однако обычно проще этот параметр включить. 
   winbind use default domain = yes
   # Если вы хотите разрещить использовать командную строку для пользователей домена, то
   # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
   template shell = /bin/bash
   # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
   winbind refresh tickets = yes

Теперь перезапустите демон Winbind и Samba в следующем порядке:

sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind start 

После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой

# wbinfo -t

а также, что Winbind увидел пользователей и группы из AD, командами

wbinfo -u
wbinfo -g

Эти две команды должны выдать список пользователей и групп из домена соответственно.
Итак, Winbind работает, однако в систему он ещё не интегрирован.
Чтобы ваша Ubuntu прозрачно работала с пользователями домена (в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов), необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.
Для этого измените две строчки в файле /etc/nsswitch.conf:

passwd:         compat
group:          compat

добавив к ним в конец winbind:

passwd:         compat winbind
group:          compat winbind

Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив

getent passwd
getent group

Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd, то есть ваших локальных пользователей плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп.

Включение Samba-сервера на базе Ubuntu в домен AD при помощи графического интерфейса и SADMS.

Возможно, скажем в домашних условиях или в спешке, вам захочется произвести все эти манипуляции в графическом режиме. Для этих целей существует пакет SADMS, о котором есть информация на сайте Ubuntu. А на сайте можно узнать все об этом пакете и скачать его. Посмотрим на интерфайс пакета:

Рис. 1. Общий вид главной вкладки.

Здесь отображаются статусы winbind, smb и nmb, и присутствует индикация подключения компьютера к домену.

Рис. 2. Запуск smb и nmb.


Рис. 3. Вкладка «Данные».

Здесь мы должны указать данные, которые будут использоваться для подключения к домену. По умолчанию поля заполнены разработчиками, для примера. Разработчики пакета — французы, так что пусть вас не смущают примеры вроде «administrateur» вместо привычного «Administrator».


Рис. 4. Автоматический захват части параметров.

Щелкаем по «Определить» — и часть параметров подхватывается автоматически. Остальные придется заполнять вручную. Все эти параметры использовались при настройке из командной строки.


Рис. 5. Заполнение остальных полей.

Заполняем поля. Здесь обратите особое внимание: Netbios имя домена должно быть прописано БОЛЬШИМИ буквами, иначе получим ошибку Kerberos, как вышло в данном случае. Если все заполнено правильно, щелкаем по «Установить» — и SADMS включает машину в домен.


Рис. 6. Машина включена в домен успешно.


Рис. 7. Меню «Проверки».

Из меню «Проверки» мы можем выполнить тесты на выполнение различных операций. Также можно провести все тесты из командной строки, как это описывалось ранее.


Рис. 8. Пример вывода теста на членство в домене.


Рис. 9. Результаты теста сети.


Рис. 10. Проверка наличия машины на контролере домена.

Сервер находится в списке доменных машин вместе с другими нашими серверами.
Итак, мы рассмотрели установку Samba и включение ее в домен — с использованием как командной строки, так и графического интерфейса. Использование графического интерфейса позволяет серьезно ускорить и упростить настройку, но вместе с тем не позволяет понять всю механику процесса, а также может серьезно затруднить процесс поиска ошибки. С другой стороны, CLI (Command Line Interface), хоть и предоставляет абсолютный контроль над всем, гораздо менее дружелюбен к пользователю и подразумевает у него наличие некоторых навыков работы. Какой способ использовать — решать вам.

A Samba server needs to join the Active Directory (AD) domain before it can serve files and printers to Active Directory users. This is different from Network User Authentication with SSSD, where we integrate the AD users and groups into the local Ubuntu system as if they were local.

For Samba to authenticate these users via Server Message Block (SMB) authentication protocols, we need both for the remote users to be “seen”, and for Samba itself to be aware of the domain. In this scenario, Samba is called a Member Server or Domain Member.

See also:
Samba itself has the necessary tooling to join an Active Directory domain. It requires a sequence of manual steps and configuration file editing, which is thoroughly documented on the Samba wiki. It’s useful to read that documentation to get an idea of the steps necessary, and the decisions you will need to make.

Use realmd to join the Active Directory domain

For this guide, though, we are going to use the realmd package and instruct it to use the Samba tooling for joining the AD domain. This package will make certain decisions for us which will work for most cases, but more complex setups involving multiple or very large domains might require additional tweaking.

Install realmd

First, let’s install the necessary packages:

sudo apt install realmd samba

In order to have the joined machine registered in the AD DNS, it needs to have an FQDN set. You might have that already, if running the hostname -f command returns a full hostname with domain. If it doesn’t, then set the hostname as follows:

sudo hostnamectl hostname <yourfqdn>

For this guide, we will be using j1.internal.example.fake, and the AD domain will be internal.example.fake.

Verify the AD server

Next, we need to verify that the AD server is both reachable and known by running the following command:

sudo realm discover internal.example.fake

This should provide an output like this, given our setup:

internal.example.fake
  type: kerberos
  realm-name: INTERNAL.EXAMPLE.FAKE
  domain-name: internal.example.fake
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin

realm is suggesting a set of packages for the discovered domain, but we will override that and select the Samba tooling for this join, because we want Samba to become a Member Server.

Join the AD domain

Let’s join the domain in verbose mode so we can see all the steps:

sudo realm join -v --membership-software=samba --client-software=winbind  internal.example.fake

This should produce the following output for us:

 * Resolving: _ldap._tcp.internal.example.fake
 * Performing LDAP DSE lookup on: 10.0.16.5
 * Successfully discovered: internal.example.fake
Password for Administrator:
 * Unconditionally checking packages
 * Resolving required packages
 * Installing necessary packages: libnss-winbind samba-common-bin libpam-winbind winbind
 * LANG=C LOGNAME=root /usr/bin/net --configfile /var/cache/realmd/realmd-smb-conf.A53NO1 -U Administrator --use-kerberos=required ads join internal.example.fake
Password for [INTEXAMPLE\Administrator]:
Using short domain name -- INTEXAMPLE
Joined 'J1' to dns domain 'internal.example.fake'
 * LANG=C LOGNAME=root /usr/bin/net --configfile /var/cache/realmd/realmd-smb-conf.A53NO1 -U Administrator ads keytab create
Password for [INTEXAMPLE\Administrator]:
 * /usr/sbin/update-rc.d winbind enable
 * /usr/sbin/service winbind restart
 * Successfully enrolled machine in realm

Note:
This command also installed the libpam-winbind package, which allows AD users to authenticate to other services on this system via PAM, like SSH or console logins. For example, if your SSH server allows password authentication (PasswordAuthentication yes in /etc/ssh/sshd_config), then the domain users will be allowed to login remotely on this system via SSH.
If you don’t expect or need AD users to log into this system (unless it’s via Samba or Windows), then it’s safe and probably best to remove the libpam-winbind package.

Until bug #1980246 is fixed, one extra step is needed:

  • Configure /etc/nsswitch.conf by adding the word winbind to the passwd and group lines as shown below:

    passwd:         files systemd winbind
    group:          files systemd winbind
    

    Now you will be able to query users from the AD domain. Winbind adds the short domain name as a prefix to domain users and groups:

      $ getent passwd INTEXAMPLE\\Administrator
      INTEXAMPLE\administrator:*:2000500:2000513::/home/administrator@INTEXAMPLE:/bin/bash
    

    You can find out the short domain name in the realm output shown earlier, or inspect the workgroup parameter of /etc/samba/smb.conf.

Common installation options

When domain users and groups are brought to the Linux world, a bit of translation needs to happen, and sometimes new values need to be created. For example, there is no concept of a “login shell” for AD users, but it exists in Linux.

The following are some common /etc/samba/smb.conf options you are likely to want to tweak in your installation. The smb.conf(5) man page explains the % variable substitutions and other details:

  • home directory
    template homedir = /home/%U@%D
    (Another popular choice is /home/%D/%U)

  • login shell
    template shell = /bin/bash

  • winbind separator = \
    This is the \ character between the short domain name and the user or group name that we saw in the getent passwd output above.

  • winbind use default domain
    If this is set to yes, then the domain name will not be part of the users and groups. Setting this to yes makes the system more friendly towards Linux users, as they won’t have to remember to include the domain name every time a user or group is referenced. However, if multiple domains are involved, such as in an AD forest or other form of domain trust relationship, then leave this setting at no (default).

To have the home directory created automatically the first time a user logs in to the system, and if you haven’t removed libpam-winbind, then enable the pam_mkhomedir module via this command:

sudo pam-auth-update --enable mkhomedir

Note that this won’t apply to logins via Samba: this only creates the home directory for system logins like those via ssh or the console.

Export shares

Shares can be exported as usual. Since this is now a Member Server, there is no need to deal with user and group management. All of this is integrated with the Active Directory server we joined.

For example, let’s create a simple [storage] share. Add this to the /etc/samba/smb.conf file:

[storage]
    path = /storage
    comment = Storage share
    writable = yes
    guest ok = no

Then create the /storage directory. Let’s also make it 1777 so all users can use it, and then ask samba to reload its configuration:

sudo mkdir -m 1777 /storage
sudo smbcontrol smbd reload-config

With this, users from the AD domain will be able to access this share. For example, if there is a user ubuntu the following command would access the share from another system, using the domain credentials:

$ smbclient //j1.internal.example.fake/storage -U INTEXAMPLE\\ubuntu
Enter INTEXAMPLE\ubuntu's password:
Try "help" to get a list of possible commands.
smb: \>

And smbstatus on the member server will show the connected user:

$ sudo smbstatus

Samba version 4.15.5-Ubuntu
PID     Username     Group        Machine                                   Protocol Version  Encryption           Signing
----------------------------------------------------------------------------------------------------------------------------------------
3631    INTEXAMPLE\ubuntu INTEXAMPLE\domain users 10.0.16.1 (ipv4:10.0.16.1:39534)          SMB3_11           -                    partial(AES-128-CMAC)

Service      pid     Machine       Connected at                     Encryption   Signing
---------------------------------------------------------------------------------------------
storage      3631    10.0.16.1     Wed Jun 29 17:42:54 2022 UTC     -            -

No locked files

You can also restrict access to the share as usual. Just keep in mind the syntax for the domain users. For example, to restrict access to the [storage] share we just created to only members of the LTS Releases domain group, add the valid users parameter like below:

[storage]
    path = /storage
    comment = Storage share
    writable = yes
    guest ok = no
    valid users = "@INTEXAMPLE\LTS Releases"

Choose an idmap backend

realm made some choices for us when we joined the domain. A very important one is the idmap backend, and it might need changing for more complex setups.

User and group identifiers on the AD side are not directly usable as identifiers on the Linux site. A mapping needs to be performed.

Winbind supports several idmap backends, and each one has its own man page. The three main ones are:

  • idmap_ad
  • idmap_autorid
  • idmap_rid

Choosing the correct backend for each deployment type needs careful planing. Upstream has some guidelines at Choosing an idmap backend, and each man page has more details and recommendations.

The realm tool selects (by default) the rid backend. This backend uses an algorithm to calculate the Unix user and group IDs from the respective RID value on the AD side. You might need to review the idmap config settings in /etc/samba/smb.conf and make sure they can accommodate the number of users and groups that exist in the domain, and that the range does not overlap with users from other sources.

For example, these settings:

idmap config * : range = 10000-999999
idmap config intexample : backend = rid
idmap config intexample : range = 2000000-2999999
idmap config * : backend = tdb

Will reserve the 2,000,000 through 2,999,999 range for user and group ID allocations on the Linux side for the intexample domain. The default backend (*, which acts as a “globbing” catch-all rule) is used for the BUILTIN user and groups, and other domains (if they exist). It’s important that these ranges do not overlap.

The Administrator user we inspected before with getent passwd can give us a glimpse of how these ranges are used (output format changed for clarity):

$ id INTEXAMPLE\\Administrator
uid=2000500(INTEXAMPLE\administrator)
gid=2000513(INTEXAMPLE\domain users)
groups=2000513(INTEXAMPLE\domain users),
       2000500(INTEXAMPLE\administrator),
       2000572(INTEXAMPLE\denied rodc password replication group),
       2000519(INTEXAMPLE\enterprise admins),
       2000518(INTEXAMPLE\schema admins),
       2000520(INTEXAMPLE\group policy creator owners),
       2000512(INTEXAMPLE\domain admins),
       10001(BUILTIN\users),
       10000(BUILTIN\administrators)

Further reading

  • The Samba Wiki

Profile picture for user Олег

Ubuntu

Samba — ПО на Linux для организации общего доступа к файлам в среде Windows. Серверная часть открывает общий доступ к папкам Ubuntu для внешних пользователей. Клиентская часть позволяет получить доступ к сетевым папкам samba.

Есть у меня аппаратный сервер с операционной системой Ubuntu Server 18.04.5 LTS. На сервере имеется большой том, который планируется использовать в качестве файлового хранилища.

Установка Ubuntu Server 18.04.5 LTS на сервер Dell PowerEdge R740xd2

IP и DNS

Серверу назначен прямой IP адрес, hostname внесён в DNS сервер. Причём DNS сервер для Linux машин отдельный от доменного, но оба они умеют резолвить адреса друг друга. Подробно на этом не будем останавливаться.

AD аутентификация

В операционной системе уже настроена доменная аутентификация, можно логиниться на сервер под учётной записью Active Directory, права доступа тоже управляются с помощью доменных групп. Аутентификацию на сервере не я настраивал, поэтому описывать процесс подробно не буду. Скажу только, что доменную аутентификацию можно сделать разными способами. Читайте про krb5-user (пакет для протокола Kerberos, который используется для аутентификации в Windows) и/или winbind (позволяет использовать учетную запись пользователя из Active Directory). Я winbind не использую.

Проверить аутентификацию:

kinit v.pupkin@ILAB.LOCAL
klist

NTP

Время должно быть синхронизировано. Если расхождение по времени больше пяти минут, то мы не получим тикет от Kerberos. В общем, аутентификация не заработает. Не буду описывать процесс настройки ntp.

Ссылки

https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

Установка samba

apt-get install samba

Самба настраивается в файле /etc/samba/smb.conf. Старый файл можно переименовать в smb.conf.bak, чтобы подсматривать параметры по умолчанию:

samba

Указываем глобальные настройки:

[global]

# домен и настройки SID
workgroup = ILAB
realm = ILAB.LOCAL
security = ads

idmap config * : backend = tdb
idmap config * : range = 1300000-1999999
idmap config ILAB : backend = rid
idmap config ILAB : read only = yes
idmap config ILAB : range = 100000-999999

# представляемся
server string = %h server (Samba, Ubuntu)

# логирование
log file = /var/log/samba/log.%m
max log size = 1000
log level = 1

# письмо при краше
panic action = /usr/share/samba/panic-action %d

# пароли и аутентификация (многое здесь мне непонятно и в AD не используется)
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n password\supdated\ssuccessfully* .
pam password change = yes

# убираем DNS проксирование
dns proxy = no

# не мешаем контроллерам домена
domain master = no
local master = no
preferred master = no

# отключаем принтеры
load printers = no
printing = bsd
show add printer wizard = no
printcap name = /dev/null
disable spoolss = yes

# убираем гостей и папки пользователей
usershare max shares = 0
usershare allow guests = no

Здесь:

  • workgroup — NETBIOS ИМЯ ДОМЕНА (или РАБОЧАЯ ГРУППА, если нет домена), в заглавном регистре
  • realm — ДОМЕН, в заглавном регистре
  • server string — имя сервера, которое будет отображаться в сетевом окружении
  • log file — логи
  • max log size — размер логов
  • log level — уровень логирования
  • panic action — действия при краше самбы, по умолчанию отправляет письмо админу
  • passdb backend — место хранения паролей
  • obey pam restrictions — поддержка PAM аутентификации, непонятно зачем она включена по умолчанию, потому что PAM аутентификация не может использоваться при «encrypt passwords = yes», а encrypt passwords при этом устарел и по умолчанию включен.
  • unix password sync — синхронизация паролей пользователей samba с локальными паролями, в AD не работает
  • passwd program — программа для синхронизации паролей, в AD не работает
  • passwd chat — текст для работы с паролями, в AD не работает
  • pam password change — поддержка смены пароля в PAM
  • security = ads — поддержка AD, самба ведёт себя как член домена.
  • dns proxy — обращаться ли к DNS для определения DNS имени по NETBIOS имени.
  • domain master — главный обозреватель домена
  • local master — главный обозреватель подсети
  • preferred master — предпочтительный обозреватель домена
  • load printers — загружать принтеры
  • printing — интерпретация статуса принтеров
  • show add printer wizard — отображать иконку добавления принтера
  • printcap name — определение списка принтеров
  • disable spoolss — поддержка SPOOLSS (для принтеров)
  • usershare max shares — папки пользователей
  • usershare allow guests — папки гостей
  • idmap config — настройки сопоставления SID с пользователями и группами POSIX

Давайте расшарим какую-нибудь папку, например, /u01/cron/, создаю её.

samba

Назначаю владельца и группу папки (пользователь и группа доменные!)

samba

Добавляем секцию в /etc/samba/smb.conf:

[bck-cron-u01]
path = /u01/cron
valid users = cron v.pupkin p.vupkin
read list   = cron v.pupkin p.vupkin
write list  = cron v.pupkin p.vupkin
read only = no

Здесь:

  • [NAME] — имя шары
  • path — путь к папке
  • valid users — кому можно войти
  • read list — кто имеет права на чтение
  • write list — кто имеет право на запись
  • read only — только чтение

Пример конфига:

После изменения файла smb.conf не помешает проверить его утилитой testparm:

testparm

samba

Перезагружаем службу:

service smbd restart

Добавим сервер в домен:

net ads join -U v.pupkin -D ILAB.LOCAL

В случае успеха увидим что-то типа:

Using short domain name — DOMAIN
Joined 'SERVER' to realm 'domain.local'

У меня надпись немного другая:

samba

Сервер в домен добавился, но не прописался в DNS. В моём случае это нормально, потому как сервер прописан в DNS другой зоны, отличной от доменной. В AD сразу переношу его из папки Computers в нужный мне организационный юнит.

samba

Дадим 10 минут на распространение DNS зон, проверяем:

samba

Шара доступна.

Содержание

Введение

Зачастую возникает необходимость ввести Linux-машину в существующий домен Windows. Например, чтобы сделать файловый сервер с помощью Samba. Сделать это очень просто, для этого вам понадобятся клиент Kerberos, Samba и Winbind.

Перед установкой желательно обновиться:

sudo aptitude update
sudo aptitude upgrade

Установить всё это добро можно командой:

sudo aptitude install krb5-user samba winbind 

Также может понадобиться установить следующие библиотеки:

sudo aptitude install libpam-krb5 libpam-winbind libnss-winbind

Либо, если вы используете Ubuntu Desktop, те же пакеты можно поставить через менеджер пакетов Synaptic.

Далее вам потребуется настроить все вышеперечисленные инструменты для работы с вашим доменом. Допустим, вы хотите войти в домен DOMAIN.COM, доменконтроллером которого является сервер dc.domain.com с IP адресом 192.168.0.1. Этот же сервер является и первичным DNS сервером домена. Кроме того допустим у вас есть второй доменконтроллер1), он же DNSdc2.domain.com с IP 192.168.0.2. Ваш же компьютер будет называться smbsrv01.

Настройка DNS

Для начала необходимо изменить настройки DNS на вашей машине, прописав в качестве DNS сервера доменконтроллер2) и в качестве домена поиска — нужный домен.

Если у вас статический IP-адрес, то в Ubuntu Desktop это можно сделать через Network Manager, в Ubuntu Server необходимо изменить содержимое файла /etc/resolv.conf на примерно такое:

domain domain.com
search domain.com
nameserver 192.168.0.1
nameserver 192.168.0.2

В современных дистрибутивах файл resolv.conf создается автоматически и править вручную его не нужно.
Для получение нужного результата нужно добавить необходимые изменения в файл: /etc/resolvconf/resolv.conf.d/head
Данные которые будут добавлены в него, будут автоматически вставлены в файл /etc/resolv.conf

Если IP-адрес динамический и присваивается DHCP сервером то после перезагрузки resolv.conf может формироваться «неправильный» resolv.conf’ , например присутствует только один nameserver 192.168.0.1 и не указаны domain и search. Нужно отредактировать /etc/dhcp/dhclient.conf. Чтобы появились записи domain и search нужно убрать комментарий перед строкой supersede domain-name, и вписать свой домен:

supersede domain-name "domain.com";

Чтобы добавить еще один nameserver нужно убрать комментарий перед prepend domain-name-servers и указать ip сервера:

prepend domain-name-servers 192.168.0.2;

Для применения изменений остается перезапустить службу:

/etc/init.d/networking restart

Теперь убедитесь, что вы задали нужное имя компьютера в файле /etc/hostname:

smbsrv01

Кроме того необходимо отредактировать файл /etc/hosts так, чтобы в нём была запись с полным доменным именем компьютера и обязательно коротким именем хоста, ссылающаяся на один из внутренних IP:

# Имена этого компьютера
127.0.0.1	localhost
127.0.1.1	smbsrv01.domain.com	smbsrv01

Сразу нужно проверить что нормально пингуется наш контроллер домена, по короткому и полному имени, чтобы в будушем не получать ошибки что контроллер домена не найден:

ping dc
ping dc.domain.com

Не обязательно, но если вы что-то поменяете — перезагрузите компьютер для применения изменений.

Настройка синхронизации времени

Далее необходимо настроить синхронизацию времени с доменконтроллером. Если разница будет более 5 минут мы не сможем получить лист от Kerberos.
Для единовременной синхронизации можно воспользоваться командой:

sudo net time set dc

Если в сети существует сервер точного времени, то можно воспользоваться им или любым публичным:

ntpdate ntp.mobatime.ru

Автоматическая же синхронизация настраивается с помощью ntpd, это демон будет периодически выполнять синхронизацию. Для начала его необходимо установить:

sudo aptitude install ntp

Теперь исправьте файл /etc/ntp.conf, добавив в него информацию о вашем сервере времени:

# You do need to talk to an NTP server or two (or three).
server dc.domain.com

После чего перезапустите демон ntpd:

sudo /etc/init.d/ntp restart

Теперь пора настраивать непосредственно взаимодействие с доменом.

Настройка авторизации через Kerberos

Начнём с настройки авторизации в домене через протокол Kerberos. Вам потребуется изменить файл /etc/krb5.conf. В общем случае он выглядит так:

[libdefaults]
	default_realm = DOMAIN.COM
	kdc_timesync = 1
	ccache_type = 4
	forwardable = true
	proxiable = true
	v4_instance_resolve = false
	v4_name_convert = {
		host = {
			rcmd = host
			ftp = ftp
		}
		plain = {
			something = something-else
		}
	}
	fcc-mit-ticketflags = true

[realms]
	DOMAIN.COM = {
		kdc = dc
		kdc = dc2
		admin_server = dc
		default_domain = DOMAIN.COM
	}

[domain_realm]
	.domain.com = DOMAIN.COM
	domain.com = DOMAIN.COM
[login]
	krb4_convert = false
	krb4_get_tickets = false

Вам, конечно, нужно изменить domain.com на ваш домен и dc и dc2 на ваши доменконтроллеры. Кстати, возможно вам понадобится написать полные имена доменконтроллеров dc.domain.com и dc2.domain.com. Поскольку у меня прописан домен поиска в DNS, то мне это делать не нужно.

Обратите особое внимание на регистр написания имени домена — везде, где домен написан в верхнем регистре, его обязательно нужно писать именно в верхнем регистре. Иначе волшебным образом ничего может не заработать.

Это не все возможные опции настройки Kerberos, только основные. Однако их обычно достаточно.

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

kinit username@DOMAIN.COM

Вместо username естественно стоит вписать имя существующего пользователя домена.

Имя домена необходимо писать заглавными буквами!

Если вы не получили никаких ошибок — значит вы настроили всё верно и домен отдаёт вам билет Kerberos. Кстати, некоторые распространённые ошибки перечислены чуть ниже.

Убедиться в том, что билет получен, можно выполнив команду

klist

Удалить все билеты (они вам вообще говоря не нужны) можно командой

kdestroy

Итак, будем считать, что авторизацию вы настроили, пора настроить непосредственно вход в домен, об этом после списка распространённых ошибок kinit.

Распространённые ошибки kinit

kinit(v5): Clock skew too great while getting initial credentials

Это значит, что у вашего компьютера не синхронизировано время с доменконтроллером (см. выше).

kinit(v5): Preauthentication failed while getting initial credentials

Вы ввели неверный пароль.

kinit(v5): KDC reply did not match expectations while getting initial credentials

Самая странная ошибка. Убедитесь, что имя realm в krb5.conf, а так же домен в команде kinit введены большими буквами:

DOMAIN.COM = {
# ...
kinit username@DOMAIN.COM
kinit(v5): Client not found in Kerberos database while getting initial credentials

Указанного пользователя не существует в домене.

Настройка Samba и вход в домен

Для того, чтобы войти в домен, необходимо прописать правильные настройки в файле /etc/samba/smb.conf. На данном этапе вас должны интересовать только некоторые опции из секции [global]. Ниже — пример части файла конфигурации Samba с комментариями по поводу значения важных параметров:

[global]
   # Эти две опции нужно писать именно в заглавном регистре, причём workgroup без
   # последней секции после точки, а realm - полное имя домена 
   workgroup = DOMAIN
   realm = DOMAIN.COM

   # Эти две опции отвечают как раз за авторизацию через AD
   security = ADS
   encrypt passwords = true
   # Просто важные 
   dns proxy = no 
   socket options = TCP_NODELAY

   # Если вы не хотите, чтобы самба пыталась при случае вылезти в лидеры в домене или рабочей группе,
   # или даже стать доменконтроллером, то всегда прописывайте эти пять опций именно в таком виде
   domain master = no
   local master = no
   preferred master = no
   os level = 0
   domain logons = no

   # Отключить поддержку принтеров
   load printers = no
   show add printer wizard = no
   printcap name = /dev/null
   disable spoolss = yes

После того, как вы отредактируете smb.conf выполните команду

testparm

Она проверит вашу конфигурацию на ошибки и выдаст суммарную сводку о нём:

# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

Как видно мы задали правильные параметры для того, чтобы наш компьютер стал членом домена. Теперь пора попытаться непосредственно войти в домен. Для этого введите команду:

net ads join -U username -D DOMAIN

И в случае успеха вы увидите что-то похожее на:

# net ads join -U username -D DOMAIN
Enter username's password:
Using short domain name -- DOMAIN
Joined 'SMBSRV01' to realm 'domain.com'

Используемые параметры команды net

-U username%password: Обязательный параметр, вместо username необходимо подставить имя пользователя с правами администратора домена, и указать пароль.

-D DOMAIN: DOMAIN — собственно сам домен, домен можно и не указывать, но лучше всё же это всегда делать — хуже не будет.

-S win_domain_controller: win_domain_controller, можно не указывать, но бывают случаи когда автоматически сервер не находит контроллер домена.

createcomputer=«OU/OU/…» : В AD часто используется OU (Organizational Unit), есть в корне домена OU = Office, в нем OU = Cabinet, чтобы сразу добавить в нужный можно указать так: sudo net ads join -U username createcomputer=«Office/Cabinet».

Если больше никаких сообщений нет — значит всё хорошо. Попробуйте попинговать свой компьютер по имени с другого члена домена, чтобы убедиться, что в домене всё прописалось так, как надо.

Так же можно набрать команду:

net ads testjoin

Если все хорошо, можно увидеть:

#net ads testjoin
Join is OK

Но иногда после сообщения о присоединении к домену выдаётся ошибка наподобие3):

DNS update failed!

Это не очень хорошо, и в этом случае рекомендуется ещё раз прочитать раздел про настройку DNS чуть выше и понять, что же вы сделали не так. После этого нужно удалить компьютер из домена и попытаться ввести его заново. Если вы твердо уверены, что всё настроили верно, а DNS всё равно не обновляется, то можно внести вручную запись для вашего компьютера на ваш DNS сервер и всё будет работать. Конечно, если нет никаких других ошибок, и вы успешно вошли в домен. Однако лучше всё же разберитесь, почему DNS не обновляется автоматически. Это может быть связано не только с вашим компьютером, но и с некорректной настройкой AD.

Прежде чем выяснять, почему же не обновляется DNS, не забудьте перезагрузить компьютер после введения в домен! Вполне возможно, что это решит проблему.

Если всё прошло без ошибок, то поздравляем, вы успешно вошли в домен! Можете заглянуть в AD и убедиться в этом. Кроме того хорошо бы проверить, что вы можете видеть ресурсы в домене. Для этого установите smbclient:

sudo aptitude install smbclient

Теперь можно просматривать ресурсы компьютеров домена. Но для этого нужно иметь билет kerberos, т.е. если мы их удалили, то получаем опять через kinit (см. выше). Посмотрим какие ресурсы предоставлены в сеть компьютером workstation:

smbclient -k -L workstation

Вы должны увидеть список общих ресурсов на этом компьютере.

Настройка Winbind

Если вам необходимо как-либо работать с пользователями домена, например, настраивать SMB-шары с разграничением доступа, то вам понадобится кроме самой Samba ещё и Winbind — специальный демон, служащий для связи локальной системы управления пользователями и группами Linux с сервером Active Directory. Проще говоря Winbind нужен, если вы хотите видеть пользователей домена на своём компьютере с Ubuntu.

Winbind позволяет спроецировать всех пользователей и все группы AD в вашу Linux систему, присвоив им ID из заданного диапазона. Таким образом вы сможете назначать пользователей домена владельцами папок и файлов на вашем компьютере и выполнять любые другие операции, завязанные на пользователей и группы.

Для настройки Winbind используется всё тот же файл /etc/samba/smb.conf. Добавьте в секцию [global] следующие строки:

   # Опции сопоставления доменных пользователей и виртуальных пользователей в системе через Winbind.
   # Диапазоны идентификаторов для виртуальных пользователей и групп.
   idmap uid = 10000 - 40000
   idmap gid = 10000 - 40000
   # Эти опции не стоит выключать.
   winbind enum groups = yes
   winbind enum users = yes
   # Использовать домен по умолчанию для имён пользователей. Без этой опции имена пользователей и групп
   # будут использоваться с доменом, т.е. вместо username - DOMAIN\username.
   # Возможно именно это вам и нужно, однако обычно проще этот параметр включить. 
   winbind use default domain = yes
   # Если вы хотите разрещить использовать командную строку для пользователей домена, то
   # добавьте следующую строку, иначе в качестве shell'а будет вызываться /bin/false
   template shell = /bin/bash
   # Для автоматического обновления билета Kerberos модулем pam_winbind.so нужно добавить строчку
   winbind refresh tickets = yes

Параметры :

idmap uid = 10000 — 40000

idmap gid = 10000 — 40000

в новых версиях Samba уже устарели и при проверке конфига самбы с помощью testparm
будет выдваться предупреждение:

WARNING: The «idmap uid» option is deprecated

WARNING: The «idmap gid» option is deprecated

Чтобы убрать предупреждения нужно заменить эти строки на новые:

idmap config * : range = 10000-20000

idmap config * : backend = tdb

Теперь перезапустите демон Winbind и Samba в следующем порядке:

sudo /etc/init.d/winbind stop
sudo smbd restart
sudo /etc/init.d/winbind start 

Запускаем

sudo testparm

Смотрим есть ли ошибки или предупреждения, если появится:

«rlimit_max: rlimit_max (1024) below minimum Windows limit (16384)»

Без перезагрузки можно устранить так:

ulimit -n 16384

Для сохранения после перезагрузки отредактировать файл /etc/security/limits.conf

# Добавить в конец файла строки:
*               -    nofile            16384
root            -    nofile            16384

После перезапуска проверьте, что Winbind установил доверительные отношения с AD командой:

# wbinfo -t
checking the trust secret for domain DCN via RPC calls succeeded

А так же, что Winbind увидел пользователей и группы из AD командами4):

wbinfo -u
wbinfo -g

Эти две команды должны выдать список пользователей и групп из домена соответственно. Либо с префиксом DOMAIN\, либо без него — в зависимости от того, какое значение вы указали параметру «winbind use default domain» в smb.conf.

Итак, Winbind работает, однако в систему он ещё не интегрирован.

Добавление Winbind в качестве источника пользователей и групп

Для того, чтобы ваша Ubuntu прозрачно работала с пользователями домена, в частности, чтобы вы могли назначать пользователей домена владельцами папок и файлов, необходимо указать Ubuntu использовать Winbind как дополнительный источник информации о пользователях и группах.

Для этого измените две строчки в файле /etc/nsswitch.conf:

passwd:         compat
group:          compat

добавив к ним в конец winbind:

passwd:         compat winbind
group:          compat winbind

также рекомендую привести строку files в файле /etc/nsswitch.conf к виду:

files:          dns mdns4_minimal[NotFoud=return] mdns4

ubuntu server 14.04, файл /etc/nsswitch.conf не содержал строку
«files: dns mdns4_minimal[NotFoud=return] mdns4»
вместо неё было:
«hosts: files mdns4_minimal [NOTFOUND=return] dns wins»
Которую я преобразовал в:
«hosts: dns mdns4_minimal[NotFoud=return] mdns4 files»
после чего всё заработало

Теперь проверьте, что Ubuntu запрашивает у Winbind информацию о пользователях и группах, выполнив

getent passwd
getent group 

Первая команда должна вам вернуть всё содержимое вашего файла /etc/passwd, то есть ваших локальных пользователей, плюс пользователей домена с ID из заданного вами в smb.conf диапазона. Вторая должна сделать тоже самое для групп.

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

Авторизация в Ubuntu через пользователей домена

Несмотря на то, что все пользователи домена фактически стали полноценными пользователями системы (в чём можно убедиться, выполнив последние две команды из предыдущего раздела), зайти ни под кем из них в систему всё ещё нельзя. Для включения возможности авторизации пользователей домена на компьютере с Ubuntu необходимо настроить PAM на работу с Winbind.

Он-лайн авторизация

Для Ubuntu 10.04 и выше добавьте всего одну строку в файле /etc/pam.d/common-session, т.к. PAM и так неплохо справляется с авторизацией:

session  optional  pam_mkhomedir.so skel=/etc/skel/ umask=0077

Для Ubuntu 13.10 чтобы появилось поле ручного ввода логина необходимо в любой файл из папки /etc/lightdm/lightdm.conf/ снизу добавить строку:

greeter-show-manual-login=true

Для Ubuntu 9.10 и ниже придется редактировать несколько файлов (но никто не запрещает использовать этот способ и в 10.04 — он тоже работает):

Последовательность строк в файлах имеет значение!

/etc/pam.d/common-auth

auth        required      pam_env.so
auth        sufficient    pam_unix.so likeauth nullok try_first_pass
auth        sufficient    pam_winbind.so use_first_pass krb5_auth krb5_ccache_type=FILE
auth        required      pam_deny.so

/etc/pam.d/common-account

account     sufficient    pam_winbind.so
account     required      pam_unix.so

/etc/pam.d/common-session

session     optional      pam_mkhomedir.so skel=/etc/skel/ umask=0077
session     optional      pam_ck_connector.so nox11
session     required      pam_limits.so
session     required      pam_env.so
session     required      pam_unix.so

/etc/pam.d/common-password

password    sufficient    pam_unix.so try_first_pass use_authtok nullok sha512 shadow
password    sufficient    pam_winbind.so
password    required      pam_deny.so

И, наконец, необходимо перенести запуск Winbind при загрузке системы после всех остальных служб (по умолчанию он запускается с индексом 20). Для этого в терминале выполните следующую команду:

sudo bash -c "for i in 2 3 4 5; do mv /etc/rc$i.d/S20winbind /etc/rc$i.d/S99winbind; done"

Что эквивалентно запуску для каждого уровня (в примере — 4) команды:

mv /etc/rc4.d/S20winbind /etc/rc4.d/S99winbind

В некоторых случаях winbind может иметь иной уровень запуска (например, S02winbind). Поэтому сначала проверьте имена файлов, вполнив команду «ls /etc/rc{2,3,4,5}.d/ | grep winbind» (без кавычек).

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

Офф-лайн авторизация

Часто возникает ситуация, когда домен-контроллер недоступен по различным причинам — профилактика, отключение света или вы принесли ноутбук домой и хотите поработать. В этом случае для Winbind можно настроить кэширование учетных записей пользователей домена. Для этого необходимо сделать следующее.
Добавьте в секцию [global] файла /etc/samba/smb.conf следующие строки:

[global]
   # Возможность оффлайн-авторизации при недоступности доменконтроллера
   winbind offline logon = yes
   # Период кэширования учетных записей, по умолчанию равен 300 секунд
   winbind cache time = 300
   # Необязательная настройка, но избавляет от нудных пауз, указываем контроллер домена dc, 
   # можно указать и ip, но это является плохим тоном
   password server = dc

Обычно этого достаточно. Если же возникают ошибки, то необходимо создать файл /etc/security/pam_winbind.conf со следующим содержанием5):

Внимание! При использовании советов ниже может возникать совершенно случайная ошибка «Сбой аутентификации»! Поэтому все что Вы делаете, Вы делаете на свой страх и риск!

#
# pam_winbind configuration file
#
# /etc/security/pam_winbind.conf
#
[global]
  # turn on debugging
  debug = no
  # request a cached login if possible
  # (needs "winbind offline logon = yes" in smb.conf)
  cached_login = yes
  # authenticate using kerberos
  krb5_auth = yes
  # when using kerberos, request a "FILE" krb5 credential cache type
  # (leave empty to just do krb5 authentication but not have a ticket
  # afterwards)
  krb5_ccache_type = FILE
  # make successful authentication dependend on membership of one SID
  # (can also take a name)
  ;require_membership_of =
  silent = yes

Файл /etc/pam.d/gnome-screensaver в таком случае принимает вид:

auth    sufficient      pam_unix.so nullok_secure
auth    sufficient      pam_winbind.so use_first_pass
auth    required        pam_deny.so

А также изменяется файл /etc/pam.d/common-auth:

auth    optional        pam_group.so
auth    sufficient      pam_unix.so nullok_secure  use_first_pass
auth    sufficient      pam_winbind.so use_first_pass
auth    required        pam_deny.so

Ссылки

В современном мире сетевые соединения играют важную роль в обмене информацией. Один из самых популярных способов обмена файлами является использование протокола Samba. Samba позволяет подключить Ubuntu к домену Windows и обмениваться файлами между компьютерами.

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

Прежде чем приступить к настройке, убедитесь, что на вашем компьютере установлена операционная система Ubuntu и у вас есть права администратора. Также убедитесь, что ваш компьютер находится в одной локальной сети с компьютерами Windows, к которым вы хотите получить доступ. Заполните необходимые данные, такие как IP-адреса и имена компьютеров, перед началом настройки.

Содержание

  1. Ubuntu Samba в домене Windows: настройка и подключение
  2. Установка и настройка Ubuntu Samba
  3. Создание пользователей и групп в Ubuntu Samba
  4. Создание шары и определение прав доступа в Ubuntu Samba

Ubuntu Samba в домене Windows: настройка и подключение

Ниже приведены шаги для настройки и подключения Ubuntu Samba в домене Windows:

  1. Установка Samba на Ubuntu. С помощью команды sudo apt-get install samba установите пакет Samba на своем Ubuntu-сервере.
  2. Настройка конфигурационного файла Samba. Откройте файл /etc/samba/smb.conf и внесите необходимые изменения. Укажите имя вашего рабочего группы, определите шары (ресурсы), которые вы хотите разделять, и установите права доступа.
  3. Создание Samba-пользователей. Используя команду sudo smbpasswd -a username, создайте Samba-пользователя и установите пароль.
  4. Перезапуск службы Samba. Для применения внесенных изменений выполните команду sudo systemctl restart smbd.
  5. Подключение к Samba-серверу из Windows. На компьютере под управлением Windows откройте Проводник, щелкните правой кнопкой мыши на «Сеть» и выберите «Подключить сетевой диск». Введите путь к Samba-шаре в формате \\servername\sharename и укажите учетные данные Samba-пользователя.

После успешного подключения вы сможете обмениваться файлами и папками между Ubuntu-сервером и компьютерами под управлением Windows, используя общую рабочую среду.

Обратите внимание, что права доступа в Samba определяются в конфигурационном файле smb.conf и при создании пользователей в smbpasswd. Будьте осторожны при установке разрешений, чтобы не допустить несанкционированного доступа к вашим данным.

Вам также может потребоваться открыть соответствующие порты в брандмауэре для обеспечения связи между Ubuntu-сервером и Windows-компьютерами.

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

Установка и настройка Ubuntu Samba

Шаг 1: Установка пакета Samba

Перед началом настройки Samba на Ubuntu, убедитесь, что на вашем компьютере установлен пакет Samba. Для этого выполните следующую команду в терминале:

sudo apt-get update Обновление списков пакетов
sudo apt-get install samba Установка пакета Samba

Шаг 2: Создание директории для общих файлов

Для начала настройки Samba вам понадобится создать директорию, которая будет использоваться для общих файлов в вашей сети. Для создания этой директории выполните следующую команду в терминале:

sudo mkdir /srv/samba/share Создание директории для общих файлов

Шаг 3: Настройка файла smb.conf

Далее необходимо настроить файл smb.conf, который содержит конфигурацию Samba. Для этого выполните следующую команду в терминале:

sudo nano /etc/samba/smb.conf Открытие файла smb.conf в текстовом редакторе Nano

В открывшемся файле smb.conf вам потребуется добавить следующий блок текста в конец файла:

[share]
path = /srv/samba/share
read only = no
guest ok = yes
Конфигурация общей директории

Шаг 4: Перезапуск сервиса Samba

После внесения изменений в файл smb.conf необходимо перезапустить сервис Samba. Для этого выполните следующую команду в терминале:

sudo systemctl restart smbd Перезапуск сервиса Samba

Теперь настройка и установка Samba на Ubuntu завершена, и вы можете приступить к подключению и обмену файлами с другими компьютерами в домене Windows.

Создание пользователей и групп в Ubuntu Samba

Прежде чем настраивать и использовать Samba в Ubuntu, необходимо создать пользователей и группы, которыми будут пользоваться участники сети. Создание пользователей и групп в Ubuntu Samba выполняется с использованием командной строки.

Чтобы создать нового пользователя, следует использовать команду sudo adduser <имя_пользователя>. Затем система запрашивает пароль пользователя и запрашивает другие данные, такие как полное имя, номер телефона и т.д. После ввода этих данных система создаст нового пользователя.

Чтобы создать новую группу, следует использовать команду sudo addgroup <имя_группы>. После ввода этой команды система создаст новую группу.

После создания пользователей и групп необходимо добавить пользователей в соответствующие группы. Для этого используется команда sudo adduser <имя_пользователя> <имя_группы>. Затем система запросит пароль пользователя и добавит его в указанную группу.

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

Команда Описание
sudo adduser <имя_пользователя> Создание нового пользователя
sudo addgroup <имя_группы> Создание новой группы
sudo adduser <имя_пользователя> <имя_группы> Добавление пользователя в группу

Создание шары и определение прав доступа в Ubuntu Samba

1. Откройте терминал и введите следующую команду:

sudo nano /etc/samba/smb.conf

2. В открывшемся файле найдите раздел [global] и добавьте в него следующую строку, чтобы включить шары:

[global]
...
usershare owner only = false

3. После раздела [global] добавьте раздел [share], где «share» — это имя вашей шары. Например:

[share]
comment = Shared Folder
path = /path/to/folder
browseable = yes
writable = yes
guest ok = no
valid users = @users

Здесь:

  • comment — комментарий к шаре.
  • path — путь к директории, которую вы хотите сделать шарой.
  • browseable — разрешить просмотр содержимого шары.
  • writable — разрешить запись файлов в шару.
  • guest ok — запретить гостевой доступ.
  • valid users — список пользователей, которым разрешен доступ к шаре.

4. Сохраните изменения и закройте редактор nano, нажав Ctrl+X, затем Y и Enter.

5. Перезапустите службу Samba, чтобы применить настройки:

sudo service smbd restart

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

Чтобы изменить права доступа к шаре, вы можете использовать команду chmod, чтобы изменить владельца, группу и права доступа к файлам в папке шары. Например:

sudo chmod -R 775 /path/to/folder
sudo chown -R username:groupname /path/to/folder

Готово! Теперь у вас есть шара Samba с определенными правами доступа, которая может быть использована для обмена файлами между Ubuntu и Windows в домене.

  • Ubuntu not booting after installing windows
  • Ubuntu как запускать приложения windows
  • Ubisoft game launcher windows 7
  • Ubuntu on windows 10 gui
  • Ubox приложение для камеры windows