Оригинал статьи находится здесь.
В конфигурационном файле Samba, созданном по умолчанию, нужно сделать несколько изменений. Так что откройте в редакторе файл /etc/samba/smb.conf, просмотрите его и сделайте настройки в соответствии со следующим примером. Большую часть примера можно скопировать без всяких изменений, но задайте для переменной WORKGROUP имя домена Windows (вы даже можете оставить его значение равным WORKGROUP), а для переменной FILESERVER укажите имя хоста вашего сервера Linux:
В следующей закомментированной строке:
определяется скрипт Windows, который будет выполняться на рабочей станции Windows всякий раз, когда пользователь будет входить в систему. Это, действительно, может быть весьма удобно, если вы хотите для всех компьютеров в сети применять стандартные настройки; вы можете задать, как будет отображаться диск сервера, настроить принтеры или сконфигурировать прокси-сервер. Если у вас есть скрипт logon.bat, то раскомментируйте эту строку.
Создайте директории для хранения профилей и информации о входе в домен:
Сделайте так, чтобы Samba увидела вашу новую конфигурацию:
Чтобы включить сервис WINS (Windows Internet Name Service), откройте в редакторе файл
/etc/nsswitch.conf и найдите следующую строку:
Замените ее строкой:
Поскольку ваш файл-сервер будет контроллером домена (DC) для вашего домена Windows, вы должны указать компьютеры, которые будут входить в домен. Откройте файл /etc/hosts и добавьте в него все сервера и рабочие станции:
В Windows как правило, есть специальный пользователь с именем Administrator, который аналогичен пользователю root в Linux, так что добавьте пользователя root в базу данных паролей Samba и создайте для него псевдоним. Это позволит вам использовать имя пользователя Administrator при добавлении новых компьютеров в домен Windows:
Чтобы убедиться, что к этому моменту все работает, используйте команду smbclient и сделайте запрос к Samba:
В выданном результате будет указана подробная информация о нескольких стандартных сервисах, таких как netlogon и ADMIN, а также будут перечислены машины, зарегистрированные в домене:
Чтобы предоставить пользователям возможность аутентификации в домене, их нужно прописать в контроллере домена. Этот процесс необходимо повторять для каждого пользователя, но сейчас просто создайте одного пользователя, сначала добавив пользователя в Linux и затем установив пароль для этого пользователя в Samba. Этого пользователя также потребуется поместить в группу users, которая только что была сделана псевдонимом группы Windows Domain Users:
Теперь пользователю предоставлена возможность аутентификации на рабочих станциях в вашем домене, но в нем еще ничего не открыто для совместного доступа.
Каждый ресурс, для которого открыт общий доступ, должен быть сконфигурирован в Samba. Откройте файл /etc/samba/smb.conf и добавьте к концу файла следующие записи:
Каждый раз, когда вы меняете конфигурацию, вам нужно перезапускать Samba:
Добавленный фрагмент позволяет всем пользователям группы @users получать доступ к ресурсу с полными привилегиями на запись. Во многих случаях это, вероятно, не то, что вам нужно. Если совместный доступ разрешено получать только определенным пользователям, то используйте, например, следующую строку:
Чтобы управлять большим количеством пользователей, вы можете создать новую отдельную группу, установить для нее соответствующие права для общего доступа и указать эту группу в конфигурации Samba. Тогда у вас появится возможность добавлять пользователей в эту группу и удалять их из нее без перенастройки или перезагрузки Samba:
Вы также можете создать совместный доступ только для чтения, задав для параметра writable значение no:
Другим типичным сценарием является предоставление общего доступа на чтение/запись для некоторых пользователей, а для всех других - только для чтения:
В Samba есть огромный спектр возможностей для задания различных вариантов доступа, так что для получения более подробной информации смотрите http://samba.org/samba/docs/.
Чтобы открыть общий доступ ко всем принтерам, наберите:
Если вы хотите открыть общий доступ к конкретному принтеру, вы можете сослаться на конкретное название принтера в CUPS:
В Ubuntu для управлениями принтерами и очередями заданий на печать используется система CUPS, Common Unix Printing System. Систему CUPS можно сконфигурировать с помощью различных инструментов, в том числе с помощью менеджера GNOME CUPS, а также с помощью его собственного встроенного веб-интерфейса, который работает через порт 631.
Все отлично, но сразу выполз нюанс: а как быть, если на сервере у меня нет X11 и я хочу админить CUPS с удаленного хоста.
Нужно снести несколько изменений в /etc/cups/cupsd.conf:
В секцию
# Only listen for connections from the local machine.
Listen localhost:631
Listen /var/run/cups/cups.sock
Добавляем строку для интерфейса локальной сети:
Listen 10.137.131.253:631
# Restrict access to the admin pages...
<Location /admin>
Encryption Required
Order allow,deny
Allow From 10.137.131.*
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow From 10.137.131.*
</Location>
Для того, чтобы увидеть определения (настройки — прим.пер.) ваших принтеров, откройте с помощью текстового редактора файл /etc/cups/printers.conf. Каждый принтер определяется в отдельном блоке, причем все настройки, касающиеся этого принтера, указываются в произвольном порядке внутри этого блока. Найдите среди существующих настроек следующий вариант:
Замените его на вариант:
После того, как вы измените файла printers.conf, перезапустите планировщик CUPS:
С помощью текстового редактора откройте файл /etc/cups/printers.conf и добавьте два настроечных параметра: PageLimit, в котором указывается максимально допустимое количество печатаемых страниц, и QuotaPeriod, в котором задается период в секундах, в течение которого действует ограничение. Для того, чтобы задать ограничение в 200 страниц в течение недели, вам нужно указать следующие настройки
Один день равен 86 400 секундам, одна неделя равна 604 800 секундам, а один месяц равен 2 592 000 секундам.
Вы также можете указать параметр KLimit, определяющий объем данных в килобайтах, которые принтеру разрешено принять. Этот вариант может оказаться полезным в случае, если вы хотите, чтобы на конкретные принтеры не посылались очень большие задания печати.
Есть прием, с помощью которого можно обойти ограничение, позволяющее задавать квоты для принтеров, это - сконфигурировать один и тот же принтер несколько раз, каждый раз с новый именем и новыми настройками доступа, и связать эти настройки с тем же самым устройством. После этого квота для каждого "принтера" будет отслеживаться индивидуально, так что вы можете подключить каждого пользователя к отдельному виртуальному принтеру и, таким образом, задать индивидуальные квоты для пользователей.
Устанавливаем Samba и дополнительные пакет
$ sudo apt-get install samba samba-doc libcups2 libkrb5-3 winbind \\
smbclient samba-common-bin
В конфигурационном файле Samba, созданном по умолчанию, нужно сделать несколько изменений. Так что откройте в редакторе файл /etc/samba/smb.conf, просмотрите его и сделайте настройки в соответствии со следующим примером. Большую часть примера можно скопировать без всяких изменений, но задайте для переменной WORKGROUP имя домена Windows (вы даже можете оставить его значение равным WORKGROUP), а для переменной FILESERVER укажите имя хоста вашего сервера Linux:
[global] workgroup = WORKGROUP netbios name = FILESERVER server string = %h server (Samba, Ubuntu) passdb backend = tdbsam security = user username map = /etc/samba/smbusers name resolve order = wins bcast hosts domain logons = yes preferred master = yes wins support = yes ## Use CUPS for printing printcap name = CUPS printing = CUPS ## Set default logon logon drive = H: #logon script = scripts/logon.bat logon path = \\\\fileserver\\profile\\%U ## User management scripts add user script = /usr/sbin/useradd -m %u delete user script = /usr/sbin/userdel -r %u add group script = /usr/sbin/groupadd %g delete group script = /usr/sbin/groupdel %g add user to group script = /usr/sbin/usermod -G %g %u add machine script = /usr/sbin/useradd -s /bin/false/ -d /var/lib/nobody %u idmap uid = 15000-20000 idmap gid = 15000-20000 ## Settings to sync Samba passwords with system passwords passwd program = /usr/bin/passwd %u passwd chat = *Enter\\snew\\sUNIX\\spassword:* %n\\n *Retype\\snew\\s UNIX\\spassword:* %n\\n . passwd chat debug = yes unix password sync = yes ## Set the log verbosity level log level = 3 [homes] comment = Home valid users = %S read only = no browsable = no [printers] comment = All Printers path = /var/spool/samba printable = yes guest ok = yes browsable = no [netlogon] comment = Network Logon Service path = /home/samba/netlogon admin users = Administrator valid users = %U read only = no [profile] comment = User profiles path = /home/samba/profiles valid users = %U create mode = 0600 directory mode = 0700 writable = yes browsable = no
В следующей закомментированной строке:
#logon script = scripts/logon.bat
определяется скрипт Windows, который будет выполняться на рабочей станции Windows всякий раз, когда пользователь будет входить в систему. Это, действительно, может быть весьма удобно, если вы хотите для всех компьютеров в сети применять стандартные настройки; вы можете задать, как будет отображаться диск сервера, настроить принтеры или сконфигурировать прокси-сервер. Если у вас есть скрипт logon.bat, то раскомментируйте эту строку.
Создайте директории для хранения профилей и информации о входе в домен:
$ sudo mkdir -p /home/samba/netlogon $ sudo mkdir /home/samba/profiles $ sudo mkdir /var/spool/samba $ sudo chmod 777 /var/spool/samba/ $ sudo chown -R root:users /home/samba/ $ sudo chmod -R 771 /home/samba/
Сделайте так, чтобы Samba увидела вашу новую конфигурацию:
$ sudo /etc/init.d/smbd restart
Чтобы включить сервис WINS (Windows Internet Name Service), откройте в редакторе файл
/etc/nsswitch.conf и найдите следующую строку:
hosts: files dns
Замените ее строкой:
hosts: files wins dns
Поскольку ваш файл-сервер будет контроллером домена (DC) для вашего домена Windows, вы должны указать компьютеры, которые будут входить в домен. Откройте файл /etc/hosts и добавьте в него все сервера и рабочие станции:
192.168.0.10 server1 192.168.0.101 workstation1 192.168.0.102 workstation2 ... 192.168.0.107 workstation7
В Windows как правило, есть специальный пользователь с именем Administrator, который аналогичен пользователю root в Linux, так что добавьте пользователя root в базу данных паролей Samba и создайте для него псевдоним. Это позволит вам использовать имя пользователя Administrator при добавлении новых компьютеров в домен Windows:
$ sudo smbpasswd -a root $ sudo sh -c "echo 'root = Administrator' > /etc/samba/smbusers"
Чтобы убедиться, что к этому моменту все работает, используйте команду smbclient и сделайте запрос к Samba:
$ smbclient -L localhost -U%
В выданном результате будет указана подробная информация о нескольких стандартных сервисах, таких как netlogon и ADMIN, а также будут перечислены машины, зарегистрированные в домене:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.21b] Sharename Type Comment --------- ---- ------- netlogon Disk Network Logon Service IPC$ IPC IPC Service (fileserver server (Samba, Ubuntu)) ADMIN$ IPC IPC Service (fileserver server (Samba, Ubuntu)) Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.21b] Server Comment --------- ------- FILESERVER fileserver server (Samba, Ubuntu) Workgroup Master --------- ------- WORKGROUP FILESERVERОтобразите несколько стандартных групп, используемых в доменах Windows, в эквивалентные группы в Linux:
$ sudo net groupmap modify ntgroup="Domain Admins" unixgroup=root $ sudo net groupmap modify ntgroup="Domain Users" unixgroup=users $ sudo net groupmap modify ntgroup="Domain Guests" unixgroup=nogroup
Чтобы предоставить пользователям возможность аутентификации в домене, их нужно прописать в контроллере домена. Этот процесс необходимо повторять для каждого пользователя, но сейчас просто создайте одного пользователя, сначала добавив пользователя в Linux и затем установив пароль для этого пользователя в Samba. Этого пользователя также потребуется поместить в группу users, которая только что была сделана псевдонимом группы Windows Domain Users:
$ sudo useradd jon -m -G users $ sudo smbpasswd -a jon
Теперь пользователю предоставлена возможность аутентификации на рабочих станциях в вашем домене, но в нем еще ничего не открыто для совместного доступа.
Открываем общий доступ
Начните просто с добавления ресурса, к которому могут иметь доступ все пользователи. Во-первых, создайте директорий, для которого откройте общий доступ и укажите для этого директория соответствующие права доступа:$ sudo mkdir -p /home/shares/public $ sudo chown -R root:users /home/shares/public $ sudo chmod -R ug+rwx,o+rx-w /home/shares/public
Каждый ресурс, для которого открыт общий доступ, должен быть сконфигурирован в Samba. Откройте файл /etc/samba/smb.conf и добавьте к концу файла следующие записи:
[public] comment = Public Share path = /home/shares/public valid users = @users force group = users create mask = 0660 directory mask = 0771 writable = yes
Каждый раз, когда вы меняете конфигурацию, вам нужно перезапускать Samba:
$ sudo /etc/init.d/smbd restart
Добавленный фрагмент позволяет всем пользователям группы @users получать доступ к ресурсу с полными привилегиями на запись. Во многих случаях это, вероятно, не то, что вам нужно. Если совместный доступ разрешено получать только определенным пользователям, то используйте, например, следующую строку:
valid users = jon,kyle,bill
Чтобы управлять большим количеством пользователей, вы можете создать новую отдельную группу, установить для нее соответствующие права для общего доступа и указать эту группу в конфигурации Samba. Тогда у вас появится возможность добавлять пользователей в эту группу и удалять их из нее без перенастройки или перезагрузки Samba:
valid users = @authors
Вы также можете создать совместный доступ только для чтения, задав для параметра writable значение no:
writable = no
Другим типичным сценарием является предоставление общего доступа на чтение/запись для некоторых пользователей, а для всех других - только для чтения:
valid users = @authors,@editors read list = @authors write list = @editors
В Samba есть огромный спектр возможностей для задания различных вариантов доступа, так что для получения более подробной информации смотрите http://samba.org/samba/docs/.
Общий доступ к принтерам
Если у вас есть принтеры, которые вы хотите сделать доступными для ваших рабочих станций Windows через Samba, то сначала выполните настройки принтера для того, чтобы принтеры работали локально, а затем используйте команду cupsaddsmb чтобы сообщить Samba, что надо открыть к ним доступ.Чтобы открыть общий доступ ко всем принтерам, наберите:
$ sudo cupsaddsmb -a
Если вы хотите открыть общий доступ к конкретному принтеру, вы можете сослаться на конкретное название принтера в CUPS:
$ sudo cupsaddsmb laserjet
Настройка принтера
Убедитесь, что принтер подключен и запустите его в Ubuntu.В Ubuntu для управлениями принтерами и очередями заданий на печать используется система CUPS, Common Unix Printing System. Систему CUPS можно сконфигурировать с помощью различных инструментов, в том числе с помощью менеджера GNOME CUPS, а также с помощью его собственного встроенного веб-интерфейса, который работает через порт 631.
Веб интерфейс CUPS
Менеджер GNOME CUPS предоставляет быстрый доступ к основным параметрам настройки, но для того, чтобы по-настоящему управлять системой CUPS, вам следует воспользоваться встроенным веб интерфейсом. Для того, чтобы увидеть огромный спектр имеющихся возможностей, откройте веб браузер и укажите в нем адрес http://localhost:631.Все отлично, но сразу выполз нюанс: а как быть, если на сервере у меня нет X11 и я хочу админить CUPS с удаленного хоста.
Нужно снести несколько изменений в /etc/cups/cupsd.conf:
В секцию
# Only listen for connections from the local machine.
Listen localhost:631
Listen /var/run/cups/cups.sock
Добавляем строку для интерфейса локальной сети:
Listen 10.137.131.253:631
Аналогично правим следующие секции:
# Restrict access to the server...
<Location />
Order allow,deny
Allow From 10.137.131.*
</Location>
<Location />
Order allow,deny
Allow From 10.137.131.*
</Location>
<Location /admin>
Encryption Required
Order allow,deny
Allow From 10.137.131.*
</Location>
# Restrict access to configuration files...
<Location /admin/conf>
AuthType Default
Require user @SYSTEM
Order allow,deny
Allow From 10.137.131.*
</Location>
После этого делаем рестарт CUPS
/etc/init.d/cups restart
Теперь можно зайти на web-интерфейс по соответствующему ip в локальной сети:
http://10.137.131.253:631 Совместное использование локальных принтеров
Вы можете, указав настройку Shared ("Общий"), разрешить другим компьютерам вашей локальной сети использовать принтер, подключенный локально.Для того, чтобы увидеть определения (настройки — прим.пер.) ваших принтеров, откройте с помощью текстового редактора файл /etc/cups/printers.conf. Каждый принтер определяется в отдельном блоке, причем все настройки, касающиеся этого принтера, указываются в произвольном порядке внутри этого блока. Найдите среди существующих настроек следующий вариант:
Shared no
Замените его на вариант:
Shared yes
После того, как вы измените файла printers.conf, перезапустите планировщик CUPS:
$ sudo /etc/init.d/cupsys restart
Задаем квоты для принтера
В CUPS реализована очень простая схема квот, которая позволит вам ограничивать количество страниц, распечатываемое за указанный период, но эта схему можно применять принтерам, а не к пользователям.С помощью текстового редактора откройте файл /etc/cups/printers.conf и добавьте два настроечных параметра: PageLimit, в котором указывается максимально допустимое количество печатаемых страниц, и QuotaPeriod, в котором задается период в секундах, в течение которого действует ограничение. Для того, чтобы задать ограничение в 200 страниц в течение недели, вам нужно указать следующие настройки
QuotaPeriod 604800 PageLimit 200
Один день равен 86 400 секундам, одна неделя равна 604 800 секундам, а один месяц равен 2 592 000 секундам.
Вы также можете указать параметр KLimit, определяющий объем данных в килобайтах, которые принтеру разрешено принять. Этот вариант может оказаться полезным в случае, если вы хотите, чтобы на конкретные принтеры не посылались очень большие задания печати.
Подсказка
После того, как вы измените файл printers.conf, перезапустите CUPS.Есть прием, с помощью которого можно обойти ограничение, позволяющее задавать квоты для принтеров, это - сконфигурировать один и тот же принтер несколько раз, каждый раз с новый именем и новыми настройками доступа, и связать эти настройки с тем же самым устройством. После этого квота для каждого "принтера" будет отслеживаться индивидуально, так что вы можете подключить каждого пользователя к отдельному виртуальному принтеру и, таким образом, задать индивидуальные квоты для пользователей.
Комментариев нет:
Отправить комментарий