user@user-desktop:~$ sudo mkdir /gest
user@user-desktop:~$ sudo chmod 777 /gest
user@user-desktop:~$ sudo mkdir /administ
user@user-desktop:~$ sudo chmod 777 /administ
user@user-desktop:~$ sudo mkdir /softvare
user@user-desktop:~$ sudo chmod 777 /softvare
user@user-desktop:~$ sudo mkdir -p /softvare/{microsoft,linux,virtual} /administ/{olek,andri,artur} /gest/{brochuras,vidios,fotos}
user@user-desktop:~$ sudo chmod 770 /administ

user@user-desktop:~$ sudo chmod 777 /home/user/gest/brochuras
user@user-desktop:~$ sudo chmod 777 /home/user/gest/fotos
user@user-desktop:~$ sudo chmod 777 /home/user/gest/vidios


user@user-desktop:~$ sudo chmod 700 /home/user/administ/olek
user@user-desktop:~$ sudo chmod 700 /home/user/administ/andri
user@user-desktop:~$ sudo chmod 700 /home/user/administ/artur


user@user-desktop:~$ sudo chmod 777 /home/user/softvare/linux
user@user-desktop:~$ sudo chmod 770 /home/user/softvare/microsoft
user@user-desktop:~$ sudo chmod 770 /home/user/softvare/virtual

user@user-desktop:~$ sudo adduser softvare
user@user-desktop:~$ sudo adduser microsoft
user@user-desktop:~$ sudo adduser linux
user@user-desktop:~$ sudo adduser virtual
user@user-desktop:~$ sudo adduser administ
user@user-desktop:~$ sudo adduser olek
user@user-desktop:~$ sudo adduser andri
user@user-desktop:~$ sudo adduser artur
user@user-desktop:~$ sudo adduser gest
user@user-desktop:~$ sudo adduser brochuras
user@user-desktop:~$ sudo adduser vidios
user@user-desktop:~$ sudo adduser fotos


user@user-desktop:~$ sudo chown arthur.arthur /administ/artur
user@user-desktop:~$ sudo chown arthur /administ/artur
user@user-desktop:~$ cat /etc/passwd

-----------------------------
user@user-desktop:~$ sudo nano /etc/samba/smb.conf
.....................................................................................
[softvare]
        comment = softvare Folder
        path = /home/softvare
        valid users = @softvare
        read only = No
        create mask = 0770
        browserable = no

[administ]
        comment = administ Folder
        path = /home/administ
        valid users = @administ
        read only = No
        create mask = 0700
        browserable = no

[gest]
        comment = gest Folder
        path = /home/gest
        valid users = @gest
        read only = No
        create mask = 0777
        browserable = no

-----------------------------
user@user-desktop:~$ testparm
# para testar
--------------------------------------------------------------------------------------------------------

Сервер Samba

Как установить сервер Samba для предоставления общего доступа к файлам/папкам?

sudo apt-get install samba
sudo apt-get install smbfs

Как добавлять/изменять/удалять сетевых пользователей?

sudo smbpasswd -a system_username
sudo gedit /etc/samba/smbusers
    • Вставьте следующую строку в новый файл
system_username = "network username"
    • Сохраните файл
  • Чтобы изменить сетевого пользователя
sudo smbpasswd -a system_username
  • Чтобы удалить сетевого пользователя
sudo smbpasswd -x system_username

Как открыть доступ к домашним папкам только на чтение (Авторизация=Да)?

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующие строки
  security = user
username map = /etc/samba/smbusers
sudo testparm
sudo /etc/init.d/samba restart

Как открыть доступ к домашним папкам на чтение/запись (Авторизация=Да)?

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующие строки
  security = user
username map = /etc/samba/smbusers
  • Найдите эту секцию
...
# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
writable = no
...
  • Замените на следующие строки
# By default, the home directories are exported read-only. Change next
# parameter to 'yes' if you want to be able to write to them.
writable = yes
sudo testparm
sudo /etc/init.d/samba restart

Как открыть доступ к папкам групп только на чтение (Авторизация=Да)?

sudo mkdir /home/group
sudo chmod 777 /home/group/
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующие строки
 security = user
username map = /etc/samba/smbusers
  • В конец файла добавьте следующие строки
[Group]
comment = Group Folder
path = /home/group
public = yes
writable = no
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup

sudo testparm
sudo /etc/init.d/samba restart

Как открыть доступ к папкам групп на чтение/запись (Авторизация=Да)?


sudo mkdir /home/group
sudo chmod 777 /home/group/
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующие строки
  security = user
username map = /etc/samba/smbusers
  • В конец файла добавьте следующие строки
[Group]
comment = Group Folder
path = /home/group
public = yes
writable = yes
valid users = system_username1 system_username2
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup
sudo testparm
sudo /etc/init.d/samba restart

Как открыть доступ к общим папкам только на чтение (Авторизация=Да)?


sudo mkdir /home/public
sudo chmod 777 /home/public/
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующие строки
  security = user 
username map = /etc/samba/smbusers
  • В конец файла добавьте следующие строки
[public]
comment = Public Folder
path = /home/public
public = yes
writable = no
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
sudo testparm
sudo /etc/init.d/samba restart

Как открыть доступ к общим папкам на чтение/запись (Авторизация=Да)?

sudo mkdir /home/public
sudo chmod 777 /home/public/
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующие строки
  security = user
username map = /etc/samba/smbusers
  • В конец файла добавьте следующие строки
[public]
comment = Public Folder
path = /home/public
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
sudo testparm
sudo /etc/init.d/samba restart

Как открыть доступ к общим папкам только на чтение (Авторизация=Нет)?

sudo mkdir /home/public
sudo chmod 777 /home/public/
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующую строку
  security = share
  • В конец файла добавьте следующие строки
[public]
comment = Public Folder
path = /home/public
public = yes
writable = no
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup
  • Сохраните файл
sudo testparm
sudo /etc/init.d/samba restart

Как открыть доступ к общим папкам на чтение/запись (Авторизация=Нет)?

sudo mkdir /home/public
sudo chmod 777 /home/public/
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup
sudo gedit /etc/samba/smb.conf
  • Найдите эту строку
...
; security = user
...
  • Замените на следующую строку
  security = share
  • В конец файла добавьте следующие строки
[public]
comment = Public Folder
path = /home/public
public = yes
writable = yes
create mask = 0777
directory mask = 0777
force user = nobody
force group = nogroup

  • Сохраните файл
sudo testparm
sudo /etc/init.d/samba restart



23.2. Настройка сервера Samba

Файл конфигурации Samba по умолчанию (/etc/samba/smb.conf) позволяет пользователям просматривать свои домашние каталоги как ресурсы Samba. Служба Samba также позволяет разделять все настроенные в системе принтеры в виде общих принтеров Samba. Другими словами, вы можете подключить к своему компьютеру принтер и печатать на нём, работая в сети на компьютерах с Windows.

23.2.1. Настройка в графическом режиме

Чтобы настроить Samba в графическом интерфейсе, воспользуйтесь средством Настройка сервера Samba (Samba Server Configuration Tool). Если вас интересует настройка в командной строке, перейдите к разделу 23.2.2 Настройка в командной строке.

Средство Настройка сервера Samba (Samba Server Configuration Tool) — это графическое приложение для управления общими ресурсами, пользователями и основными настройками сервера Samba. Оно изменяет файлы конфигурации в каталоге /etc/samba/. При этом сохраняются изменения внесённые за рамками этого приложения.

Чтобы вы могли использовать это приложение, у вас должна работать система X Window, должен быть установлен RPM-пакет system-config-samba и вы должны иметь привилегии root. Чтобы запустить средство Настройка сервера Samba (Samba Server Configuration Tool) с рабочего стола, выберите в Главном меню (Main Menu) (на панели) => Системные параметры (System Settings) => Настройка сервера (Server Settings) => Samba или введите команду system-config-samba в приглашении оболочки (например, в XTerm или терминале GNOME).

Рисунок 23-1. Настройка сервера Samba

ЗамечаниеЗамечание
 

Средство Настройка сервера Samba не показывает общих принтеров и стандартной строфы конфигурации, позволяющей пользователям обращаться к своим домашним каталогам на сервере Samba.

23.2.1.1. Настройка параметров сервера

Первым шагом настройки сервера Samba является настройка основных параметров сервера и нескольких параметров безопасности. Запустив приложение, выберите в выпадающем меню Настройка (Preferences) => Параметры сервера (Server Settings). На экране появится вкладка Основные (Basic), показанная на рисунке 23-2.

Рисунок 23-2. Настройка основных параметров сервера

На вкладке Основные (Basic) определите, к какой рабочей группе должен относиться компьютер, а также его краткое описание. Этим полям соответствуют параметры workgroup и server string в файле smb.conf.

Рисунок 23-3. Настройка параметров безопасности сервера

Вкладка Доступ содержит следующие параметры:

  • Режим аутентификации (Authentication Mode) — Этой настройке соответствует параметр security. Выберите один из следующих типов проверки подлинности.

    • ADS — Сервер Samba работает как участник домена в сфере домена Active Directory (Active Directory Domain, ADS). Для этого на сервере должен быть установлени и настроен Kerberos, а Samba должна стать участником сферы ADS с помощью команды net, включённой в пакет samba-client. За дополнительной информацией обратитесь к странице man net. При выборе этого варианта Samba не становится контроллером ADS. Укажите сферу сервера Kerberos в поле Домен Kerberos (Kerberos Realm).

      ЗамечаниеЗамечание
       

      Значение поля Домен Kerberos (Kerberos Realm) должно указываться большими буквами, например EXAMPLE.COM.

      Использование сервера Samba в качестве участника домена в сфере ADS подразумевает правильную настройку Kerberos, включая файл /etc/krb5.conf.

    • Домен (Domain) — Сервер Samba проверяет пользователя, полагаясь на первичный и резервный контроллер домена Windows NT. Сервер контроллеру передаёт имя и пароль пользователя, и ждёт от него ответа. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя первичного или резервного контроллера домена.

      Если выбран этот вариант, параметр Шифровать пароли (Encrypted Passwords) должен иметь значение Да (Yes).

    • Сервер (Server) — Сервер Samba пытается проверить комбинацию имени пользователя и пароля с помощью другого сервера Samba. Если это не удаётся, сервер пытается проверить её, используя режим проверки подлинности пользователя. Укажите в поле Сервер аутентификации (Authentication Server) NETBIOS-имя другого сервера Samba.

    • Ресурс (Share) — Пользователи Samba не должны вводить своё имя и пароль при подключении к серверу Samba. Сервер Samba не спрашивает имя и пароль, пока они не попытаются подключиться к определённому общему каталогу этого сервера.

    • Пользователь (User) — (По умолчанию) Пользователи Samba должны представить правильное имя пользователя и пароль для сервера Samba. Выберите этот вариант, если вы хотите чтобы работал параметр Имя пользователя Windows (Windows Username). За подробностями обратитесь к разделу 23.2.1.2 Управление пользователями Samba.

  • Шифровать пароли (Encrypt Passwords) — Этот параметр должен быть включён, если к серверы подключаются клиенты с системой Windows 98, Windows NT 4.0 с пакетом исправления 3 или более новой системой Microsoft Windows. В этом случае пароли между клиентом и сервером передаются не открытым текстом (при этом их можно перехватить), а в зашифрованном виде. Этой настройке соответствует параметр encrypted passwords. За дополнительными сведениями о шифрование паролей Samba обратитесь к разделу 23.2.3 Зашифрованные пароли.

  • Гостевая учётная запись (Guest Account) — Когда обычные или гостевые пользователи подключаются к серверу Samba, им должен сопоставляться подходящий пользователь сервера. Выберите одного из существующих пользователей системы, который станет гостевой учётной записью Samba. Когда к серверу Samba подключаются гости, они получают те же привилегии, что и данный пользователь. Этой настройке соответствует параметр guest account.

После нажатия OK изменения сохраняются в файл конфигурации и демон перезапускается, таким образом, изменения вступают в силу немедленно.

23.2.1.2. Управление пользователями Samba

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

Рисунок 23-4. Управление пользователями Samba

Чтобы добавить пользователя Samba, выберите в выпадающем меню Настройка (Preferences) => Пользователи Samba (Samba Users) и нажмите кнопку Добавить пользователя (Add User). В окне Добавить пользователя (Create New Samba User) выберите Имя пользователя Unix (Unix Username) из списка существующих в локальной системе пользователей.

Если в системе Windows пользователь имеет другое имя и ему нужно подключаться из своей системы к серверу Samba, укажите имя пользователя Windows в поле Имя пользователя Windows. Чтобы этот вариант работал, параметр Режим аутентификации (Authentication Mode) на вкладке Доступ (Security) окна Параметры сервера (Server Settings) должен иметь значение Пользователь (User).

Также настройте Пароль Samba (Samba Password) этого пользователя Samba и подтвердите его, набрав его ещё раз. Даже если вы решили использовать для Samba зашифрованные пароли, рекомендуется назначать для всех пользователей Samba пароли, отличающиеся от их паролей в системе.

Чтобы поменять свойства существующего пользователя, выберите его из списка и нажмите кнопку Изменить пользователя (Edit User). Чтобы удалить существующего пользователя Samba, выберите его и нажмите кнопку Удалить пользователя (Delete User). При удалении пользователя Samba соответствующая учётная запись пользователя в системе не удаляется.

Внесённые изменения вступают в силу сразу после нажатия кнопки OK.

23.2.1.3. Добавление ресурса

Чтобы создать ресурс Samba, нажмите кнопку Добавить (Add) в основном окне программы настройки Samba.

Рисунок 23-5. Добавление ресурса

На вкладке Основные (Basic) настраиваются следующие параметры:

  • Каталог (Directory) — Каталог, который станет общим ресурсом Samba. Здесь указывается имя уже существующего каталога.

  • Имя ресурса (Share name) — Действительное имя ресурса, с которым его будет видно с удалённых компьютеров. По умолчанию, это значение совпадает со значением поля Каталог (Directory), но его можно изменить.

  • Описание (Descriptions) — Краткое описание ресурса.

  • Права (Basic Permissions) — Параметр, определяет будут ли пользователи иметь право только на чтение файлов в общем каталоге или смогут и читать, и писать файлы.

На вкладке Доступ (Access) определите, будет ли доступ к ресурсу разрешён только выбранным или всем пользователям Samba. Если вы хотите разрешить доступ только определённым пользователям, выберите их из списка доступных пользователей Samba.

Ресурс добавляется сразу после нажатия OK.

23.2.2. Настройка в командной строке

Конфигурация Samba находится в файле /etc/samba/smb.conf. Если вы вносите изменения в этот файл, они не вступают в силу до перезапуска демона Samba с помощью команды: service smb restart.

Чтобы указать рабочую группу Windows и краткое описание сервера Samba, измените следующие строки в файле smb.conf:

workgroup = WORKGROUPNAME
server string = BRIEF COMMENT ABOUT SERVER

Замените WORKGROUPNAME именем рабочей группы Windows, к которой должен относиться этот компьютер. Параметр BRIEF COMMENT ABOUT SERVER необязателен и используется в качестве комментария Windows для данной системы Samba.

Чтобы создать в системе Linux разделяемый ресурс Samba, добавьте следующий раздел в файл smb.conf (изменив его в соответствии со своими и системными требованиями):

[sharename]
comment = Insert a comment here (Добавьте здесь примечание)
path = /home/share/
valid users = tfox carole
public = no
writable = yes
printable = no
create mask = 0765

В показанном выше примере пользователи tfox и carole смогут читать и писать в каталог /home/share сервера Samba, используя клиента Samba.

23.2.3. Зашифрованные пароли

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

В протоколе Microsoft SMB изначально пароли передавались открытым текстом. Однако, Windows NT 4.0, начиная с Service Pack 3, Windows 98, Windows 2000, Windows ME и Windows XP требуют шифрования паролей Samba. Чтобы использовать протокол Samba между системой Linux и одной из этих операционных систем Windows, вы можете либо отредактировать реестр Windows и разрешить использование паролей в открытом виде, либо настроить в своей системе Linux шифрование паролей в Samba. Если вы решите изменить реестр, вы должны проделать это на всех компьютерах с Windows — это рискованно и может привести к другим конфликтам. Для лучшей безопасности рекомендуется использовать зашифрованные пароли.

Чтобы настроить в Samba зашифрованные пароли, выполните следующие действия:

  1. Создайте отдельный файл с паролями Samba. Чтобы создать его на основе существующего файла /etc/passwd, выполните в приглашении оболочки следующую команду:

    cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    Если в вашей системе используется NIS, введите следующую команду:

    ypcat passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

    Сценарий mksmbpasswd.sh устанавливается в каталог /usr/bin в составе пакета samba.

  2. Измените разрешения файла паролей Samba, чтобы разрешение на чтение и запись имел только root:

    chmod 600 /etc/samba/smbpasswd
  3. Этот сценарий не копирует пароли пользователей в новый файл, и учётная запись пользователя остаётся неактивной, пока для неё не будет определён пароль. Для большей безопасности рекомендуется назначать для пользователя Samba пароль, отличный от пароля пользователя в системе. Чтобы задать пароль пользователя Samba, выполните следующую команду (заменяйте username именем пользователя):

    smbpasswd username 
  4. По умолчаниию должны быть включены зашифрованные пароли. Таким образом, специально включать их в файле конфигурации не требуется. Однако они также не могут быть отключены в файле конфигурации. Убедитесь в том, что в файле /etc/samba/smb.conf отсутствует следующая строка:

    encrypt passwords = no

    Если она присутствует, но закомментирована точкой с запятой (;) в начале строке, эта строка игнорируется и шифрование паролей включается. Если эта строка присутствует и не закомментирована, уберите её или закомментируйте.

    Чтобы явно включить шифрование паролей в файле конфигурации, добавьте в файл etc/samba/smb.conf следующие строки:

    encrypt passwords = yes
    smb passwd file = /etc/samba/smbpasswd
  5. Убедитесь в том, что служба smb запущена, введя в приглашении оболочки команду service smb restart.

  6. Если вы хотите, чтобы служба smb запускалась автоматически, её можно включить с помощью ntsysv, chkconfig или средства Настройка служб. За подробностями обратитесь к главе 20 Управление доступа к службам.

Для синхронизации паролей пользователей Samba с их паролями в системе можно применить PAM-модуль pam_smbpass, используя команду passwd. Когда пользователь вызывает команду passwd, одновременно изменяется и пароль, с которым он входит в систему Red Hat Enterprise Linux, и пароль, с которым он подключается к ресурсу Samba.

Чтобы включить эту возможность, добавьте в файл /etc/pam.d/system-auth ниже вызова pam_cracklib.so следующую строку:

password required /lib/security/pam_smbpass.so nullok use_authtok try_first_pass

23.2.4. Запуск и остановка сервера

На сервере, предоставляющем доступ к каталогам через Samba, должна работать служба smb.

Определите состояние демона Samba, выполнив следующую команду:

/sbin/service smb status

Запустите демона с помощью следующей команды:

/sbin/service smb start

Остановите демона с помощью следующей команды:

/sbin/service smb stop

Чтобы служба smb запускалась при загрузке, выполните команду:

/sbin/chkconfig --level 345 smb on

Определить службы, запускающиеся при загрузке системы, вы также можете с помощью chkconfig, ntsysv или средства Настройка служб (Services Configuration Tool). За подробностями обратитесь к

Глава 20. Управление доступом к службам

Поддержка безопасности вашей системы Red Hat Linux чрезвычайно важна, и один из способов её обеспечить — аккуратно управлять доступом к системым службом. Иногда необходимо открыть доступ к некоторым службам вашей системы (например, httpd, если у вас работает веб-сервер). Однако, если вам не нужно предоставлять службу клиентам, следует отключить её, чтобы уменьшить степень воздействия на систему программ, эксплуатирующих возможные ошибки.

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

Самый простой способ запретить доступ к службе — отключить её. Запускать и останавливать службы, управляемые xinetd, а также службы в иерархии /etc/rc.d/init.d (также называемые службами SysV) можно с помощью трёх различных приложений:

  • Средство Настройка служб (Services Configuration Tool) — графическое приложение, отображающее описание каждой службы, тип запуска при загрузки системы (для уровней выполнения 3, 4, и 5), и позволяющее запускать, останавливать или перезапускать службы.

  • ntsysv — текстовое приложение, позволяющее определить службы, запускаемые при загрузке системы для каждого уровня выполнения. С помощью этой программы не могут быть запущены, остановлены или перезапущены не-xinetd службы.

  • chkconfig — программа командной строки, позволяющая включать и отключать службы для различных уровней выполнения. С помощью этой утилиты не могут быть запущены, остановлены или перезапущены не-xinetd службы.

Использовать эти средства проще, чем альтернативный способ — редактировать множество ссылок, расположенных в каталогах: /etc/rc.d вручную или изменять файлы настроек xinetd в /etc/xinetd.d.

Другой способ управления доступом к системным службам — использовать iptables для настройки IP-брандмауэра. Если вы новичок в Linux, вам следует понять, что iptables может оказаться для вас не лучшим решением. Настройка iptables может быть непростой задачей, её лучше выполнять опытным системным администраторам Linux.

С другой стороны, преимуществом использования iptables является гибкость. Например, если вам нужны особые правила, разрешающие доступ определённых узлов к определённым службам, вы сможете определить их в iptables. Обратитесь к Справочному руководству по Red Hat Enterprise Linux и Руководству по безопасности Red Hat Enterprise Linux за дополнительной информацией об iptables.

Если же вам нужна утилита для назначения простых правил доступа к вашему домашнему компьютеру и/или вы мало знакомы с Linux, попробуйте средство Настройка уровня безопасности (Security Level Configuration Tool) (system-config-securitylevel), с помощью которого вы можете выбрать уровень безопасности для своей системы, так же, как и в диалоге Настройка брандмауэра (Firewall Configuration) во время установки системы.

За дополнительными сведениями обратитесь к главе 19 Основная настройка брандмауэра. Если вам нужны более точные правила брандмауэра, обратитесь к разделу iptables Справочного руководства по Red Hat Enterprise Linux.

20.1. Уровни выполнения

Для того чтобы суметь правильно настроить доступ к службам, вы должны понимать, что такое уровни выполнения Linux. Уровень выполнения — это состояние или режим, который определяется службами, перечисленными в каталоге /etc/rc.d/rc<x>.d, где <x> — номер уровня выполнения.

Существуют следующие уровни выполнения:

  • 0 — Останов

  • 1 — Режим одного пользователя

  • 2 — Не используется (определяется пользователем)

  • 3 — Полный многопользовательский режим

  • 4 — Не используется (определяется пользователем)

  • 5 — Полный многопользовательский режим (с графическим экраном входа в систему)

  • 6 — Перезагрузка

Если вы используете текстовый экран входа, вы работаете в уровне выполнения 3. Если вы используете графический экран, вы работаете в уровне выполнения 5.

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

id:5:initdefault:

Подставьте вместо числа в этой строке требуемый уровень выполнения. Изменения не вступают в силу до перезапуска системы.

Чтобы изменить уровень выполнения немедленно, выполните команду telinit, добавив номер уровня выполнения. Чтобы использовать эту команду, вы должны быть пользователем root. Команда telinit не меняет файл /etc/inittab, она меняет только текущий уровень выполнения. После перезагрузки система по-прежнему будет загружать уровень выполнения, указанный в файле /etc/inittab.


Файловый сервер Samba с авторизацией в домене NT


Тут просили опытом поделиться, как я создал файловый сервер Samba с авторизацией в домене Windows NT 4.0 и раздаю права на папки на уровне домена.
Что ж. Тогда сразу оговорюсь на чем делал я:
1. Домен Windows NT 4.0
2. FreeBSD 5.2.1
3. Samba (исходники, в пекеджах не годятся) 2.2.8a (пробовал на ветке 3.х, работало, но были проблемы с выводом списка доменных пользователей и груп).

И так приступим.

1. Установка

Распаковываем исходники Samba:
tar -zxvf samba-2.2.8a.tar.gz

Конфигурим (параметры для дальнейшей работы критичны!):
cd \samba-2.2.8a\source
configure --with-winbind --with-winbind-auth-challenge --with-acl-support --with-syslog
Если хотите создавать дисковые квоты, то можно добавить --with-quotas, но они не будут работать пока вы не перекомпилируете ядро с поддержкой дисковых квот.

Ждем завершения.
Компилируем.
make
make modules

и инсталлируем
make install

2. Конфигурирование.

Для простоты привожу свой файл smb.conf:
#=======================
[global]
workgroup = FC
netbios name = SVALKA
server string = Garbage
hosts allow = 192.168.14. 192.168.3. 192.168.17. 192.168.18. 127.
log file = /var/log/log.%m
max log size = 500
security = domain
password server = *
encrypt passwords = yes
socket options = TCP_NODELAY
local master = no
dns proxy = no
dos charset = CP866
display charset = CP866
delete readonly = yes

username map=/usr/local/samba/lib/smbusers

idmap uid=10000-20000
idmap gid=10000-20000
winbind enum users=yes
winbind enum groups=yes

#======== Share Definitions =======
[homes]
comment = Home Directories for %u
browseable = no
writeable = yes
valid users='@FC\Domain Users'
create mask = 0775

[DiskQ]
comment = DiskQ (%u)
path = /home/mounted/diskq
browseable = no
public = no
writeable = yes
printable = no
valid users='@FC\Domain Users'
create mask = 6777
directory mask = 6777
veto files = /*.avi/*.mp*/*.jpg/*.bmp/*.gif/*.wav/

[DiskK]
comment = DiskK (%u)
path = /home/diskk
browseable = no
public = no
writeable = yes
printable = no
valid users='@FC\Domain Admins','@FC\CB_Group','@FC\TipaAdmin'
create mask = 0777
directory mask = 0777

[ForAdmins]
comment = Admins Share (%u)
path = /home/mounted/diskx
public = no
browseable = no
writeable = yes
printable = no
valid users='@FC\Domain Admins','@FC\TipaAdmin'
create mask = 6775
directory mask = 6777

[odbarchive]
comment = CopyGarbage (%u)
path = /home/archive
public = no
browseable = yes
writeable = yes
printable = no
valid users='@FC\Domain Admins','@FC\TipaAdmin'
create mask = 0775
directory mask = 0777

[Users]
comment = User Dir's (%u)
path = /home/mounted/diskq/exchange/usersdir
public = yes
browseable = yes
writeable = yes
printable = no
valid users='@FC\Domain Users'
create mask = 6777
directory mask = 6777
veto files = /*.avi/*.mp*/
#=======================

После изменения smb.conf можно попробовать зарегистрироваться в домене Windows NT.
net join -U имя_администратора_домена
команда запросит у Вас пароль админа и должна ответить положительно.
Joined domain FC. (тут должен стоять Ваш домен)

Запускаем
winbind -d9

и контролируем его работу:

команда wbinfo -p должна вернуть:
'ping' to winbindd succeeded

команда wbinfo -t должна вернуть:
checking the trust secret via RPC calls succeeded

Если это не так, заглядываем в логи winbind и разбираемся в чем дело.

Копируем библиотеку libnss_winbind.so в каталог /lib:
cp nsswitch/libnss_winbind.so /lib

создаем символические ссылки на нее:

ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.1
ln -s /lib/libnss_winbind.so /lib/libnss_winbind.so.2

Изменяем файл /etc/nsswitch.conf. Он должен содержать строки вида

passwd: files winbind
shadow: files
group: files winbind

Перезапустите winbindd.

Проверяем видимость доменных пользователей и груп:
winbind -u
winbind -g
Вы должны увидеть записи типа:
.....
FC\Username1
FC\User2
FC\Name3
....
Приставка домена с "\" обязательна - иначе нормальная раздача прав Вам не светит!

3. Автозапуск файлового сервера
Теперь осталось настроить все для автоматического запуска сервера. Можно запускать демонов самбы при запуске, но разумней (а возможно и правильней) будет запускать сервисы по мере обращения к ним. Соответственно мы получим запуск сервисов под учетными записями пользователей в домене НТ.
Для это в /etc/inetd.conf добавляем (или исправляем):
netbios-ssn stream tcp nowait root /usr/local/samba/sbin/smbd
netbios-ns dgram udp wait root /usr/local/samba/sbin/nmb
А в /etc/rc.local:
/usr/local/samba/sbin/winbindd -B

Кстати если запускать не от рута, то ничего не работает. Почему?

После чего соединяемся с ресурсом со станции Windows уже зашедшего пользователя домена НТ и делаем на Юниксе команду
top

Вот приблизительній результат:
last pid: 69416; load averages: 0.08, 0.03, 0.01 up 22+02:29:33 14:08:54
115 processes: 1 running, 114 sleeping
CPU states: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 0.0% idle
Mem: 125M Active, 232M Inact, 97M Wired, 28M Cache, 60M Buf, 15M Free
Swap: 1024M Total, 100K Used, 1024M Free
Order to sort: tal, 100K Used, 1024M Free
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
390 root 96 0 23572K 20200K select 8:54 0.20% 0.20% winbin
54341 FC\JackSoft 96 0 13712K 9040K select 1:16 0.00% 0.00% smbd
397 root -8 0 7036K 3408K piperd 0:16 0.00% 0.00% winbin
68680 FC\SurgkoAN 96 0 8924K 4072K select 0:03 0.00% 0.00% smbd

Если есть такая картина и юзер зашел! Идем пить пиво!

4. Раздача прав на папки.

Тут все просто. Раздавайте себе права на уровне Юникса, но прописывайте сразу доменных юзеров и группы. Например,
chown FC\JackSoft DiskK
chown :FC\Domain Admins ForAdmins
и т.д.

5. Квотирование диска.
Квоты раздаются на уровне ОС FreeBSD в файле /etc/fstab:
# Device Mountpoint FStype Options Dump Pass#
/dev/ad0s1b none swap sw 0 0
/dev/ad0s1a / ufs rw 1 1
/dev/ad0s1f /home ufs rw,userquota,groupquota
/dev/ad0s1e /usr ufs rw 2 2
/dev/ad0s1d /var ufs rw 2 2
/dev/acd0 /cdrom cd9660 ro,noauto 0 0
/dev/ad2s1d /home/mounted/diskq ufs rw,userquota,groupquota
/dev/ad2s1e /home/mounted/diskx ufs rw,userquota,groupquota

проверяем работает ли квота:
quota -v

, а уже потом создаются/меняются для группы и ли пользователя:

edquota FC\JackSoft
man edquota

редактируем тектстовый файл и записываем его.
Все квота изменена.

P.S. Установленная система так работает уже пол-года. Скорость файлового сервера на

Все будет Samba!

Сергей Ефремов, Издательский Дом "Комиздат"

У многих начинающих администраторов ОС Linux возникают те или иные проблемы при настройке и запуске в эксплуатацию системы Samba. Правильно настроенный пакет позволит избежать головной боли в дальнейшем. Итак, начнем…

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

Зачем нужна Samba

Эта служба предоставляет ряд возможностей:

  • разделение файловых систем Linux операционными системами Windows 9x/NT;
  • разделение файловых систем Windows 9x/NT операционной системой Linux;
  • совместное использование принтеров, подключенных к системе Linux, операционными системами Windows 9x/NT;
  • совместное использование принтеров, подключенных к Windows 9x/NT, операционной системой Linux;
  • организации системы доменов для клиентов под управлением ОС Windows.

Samba представляет собой протокол, используемый Microsoft для разделения файлов и служб печати. Этот протокол был разработан в 1987 году и позже перенесен на платформы Linux Эндрю Триджеллом (Andrew Tridgell). Официальный сайт Samba, тут вы всегда найдете интересующую вас информацию и новые версии пакета.

Что нам надо для счастья

  1. Операционная система Red Hat Linux 7.2 - на мой взгляд, этот релиз, хоть он и не самый новый, наиболее оптимален для серверов.
  2. Стабильная версия Samba - например, версия 2.2.5, пакет samba-2.2.5.tar.gz.
  3. Компилятор зыка С - gcc (рекомендую установить версию gcc 3.1).
  4. Патч Network Recycle Bin, разработанный в Amherst College. Как видно из названия, этот пачт позволит расширить стандартную функциональность поддержкой корзины для удаленных файлов на сетевых дисках.
  5. Ну и конечно - физический или виртуальный сервер, на который мы будем устанавливать программу (в моем случае это был Dual PIIIs 866, 512M ECC, SCSI RAID Mylex170, 4 HDD SCSI IBM 18G в RAID5, Teckram 390U + SCSI 18G Seagate).

Организация дисковых разделов

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

/boot 100M Загрузочный раздел
/ 3.5G Корень системы с не выделенным /home /usr
/tmp 2G Раздел для временных файлов
swap 1G Раздел виртуальной памяти
/var 6G Раздел для рабочих данных системных программ и ведения логических журналов программ
/install 5.3G Раздел с инсталляционным ПО и драйверами для машин пользователей
/FileServer 40.6G Раздел файлового сервера
/Vol 17G Раздел хранения в архивном виде данных пользователей

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

Установка

Все операции проводим под авторизацией root (администратора системы).

Распакуем пакет samba-2.2.5.tar.gz в каталог /usr/src/redhat/SOURCES:

# cat samba-2.2.5.tar.gz | gzip -d | tar xvpf -

Теперь установим поддержку "сетевой корзины". Зачем нужна "сетевая корзина"? Все операционные системы, имеющие GUI, предоставляют пользователям (в той или иной мере) так называемую "корзину", которая служит для временного хранения файлов, удаленных пользователем на своей рабочей станции. При работе в сети эти функции обычно недоступны для сетевых ресурсов, поэтому администраторам системы приходиться делать периодический BackUp файлов пользователей. Но это перестает быть эффективным, если удаленный файл не был сохранен с помощью программ, организующих BackUp. Именно для такого случая и нужна "сетевая корзина".

Еще одно ее достоинство - возможность восстановления предыдущей версии файла пользователем самостоятельно, без привлечения администратора сети. Но здесь сразу же стоит сделать некоторые замечания:

  • "сетевая корзина" - это обычная папка, которую можно размещать как на текущем (классический вид), так и на специализированном ресурсе. Причем в последнем случае на этом же диске могут находиться и корзины других пользователей - в виде так называемого Online Backup ресурса;
  • по умолчанию в патче атрибуты доступа на корзину - 0700. То есть в эту папку может зайти и что-либо с ней делать только владелец этого ресурса. Это не вызывает проблем, если пользователь использует сетевой ресурс один,- но обычно одним ресурсом пользуется несколько пользователей, и в этом случае возникает ситуация, когда только один пользователь может удалять файлы. Для решения этой проблемы предлагаю в файле reply.c.patch изменить строку №15 с "+ int dir_mask=0700;" на "+ int dir_mask=0777;" - это позволит всем пользователям данного ресурса корректно работать с данной папкой;
  • если в системе используются квоты (quota), то их установки влияют и на корзину - так что при расчете квот нужно учитывать этот момент;
  • в ходе эксплуатации была обнаружена проблема, заключающаяся в том, что, если в конфигурационном файле указать полный, а не относительный путь к корзине на ресурсе, то при попытке пользователя удалить файл в корзине происходило следующее: файл не удалялся, а переименовывался по формату "имя файла. (Copy #N).расширение" (где N - номер файла с одинаковыми именами). То есть срабатывал алгоритм, по условиям которого, если файл с определенным именем есть в корзине, то происходит не замена старого файла новым, а добавление дополнительного суффикса и инкрементация его номера. Для решения данной проблемы необходимо в файле reply.c.patch изменить строку № 38 с "+ if (strcmp (fname,bin)){" на "+ if (access (bin, F_OK)!=-1) {".

По окончанию описанных мероприятий переходим к компиляции пакета и его установке, для чего устанавливаем патч:

# patch /usr/src/redhat/SOURCES
/samba-2.2.5/source/include/proto.h
/usr/src/readhat/SOURCES/proto.h.patch

# patch /usr/src/redhat/SOURCES
/samba-2.2.5/source/param/loadparm.c
/usr/src/readhat/SOURCES/loadparm.c.patch

# patch /usr/src/redhat/SOURCES
/samba-2.2.5/source/smbd/reply.c
/usr/src/readhat/SOURCES/reply.h.patch

И выполняем конфигурацию пакета инсталляции (полный перечень всех параметров можно получить по команде./configure --help):

  • переходим в каталог /usr/src/redhat/SOURCES/samba-2.2.5/source
  • # cd /usr/src/redhat/SOURCES/samba-2.2.5/source
  • выполняем конфигурирование:
  • # ./configure --prefix=/usr --with-quota 
    --with-smbmount --with-msdfs
    --with-privatedir=/etc/samba
    --with-configdir=/etc/samba
    --with-lockdir=/var/lock/samba
    --with-piddir=/var/run/samba
    --with-logfilebasedir=/var/log/samba

    Этим мы дали команду включить в сборку smbmount, который служит для монтирования SMB-ресурсов в файловую структуру Linux, включили поддержку квот (quota), а также поддержку Microsoft DFS, и приказали устанавливаться в каталог /usr;

  • далее выполняем стандартные:
  • # make; make install
  • еще одним шагом сделаем, следующее:
  • копируем файл smb.init:

    # cp /usr/packaging/RedHat/smb.init /etc/init.d/smb

    делаем симлинк на это файл (чтобы при старте сервера у нас всегда запускалась служба):

    # ln -s /etc/init.d/smb /etc/rc3.d/S99samba

    и, на всякий случай,- для init 5:

    # ln -s /etc/init.d/smb /etc/rc5.d/S99samba

    В результате получаем установленный пакет. Начинаем его настраивать. Основной файл конфигурации и файл паролей пользователей будет находиться в /etc/samba.

    Приступаем к настройке

    Для начала определимся со структурой каталогов на разделе /FileServer - для примера рассмотрим такой вариант:

    /FileServer/etc Папка будет содержать файлы конфигурации Samba
    /FileServer/netlogon Папка для скриптов входа в домен
    /FileServer/otdel_1 Папка 1 отдела
    /FileServer/otdel_N Папка N отдела
    /FileServer/Public Общий для всех отделов ресурс

    Соответственно, в основном файле конфигурации /etc/samba/smb.conf прописываем:

    include=/FileServer/etc/smb.global
    include=/FileServer/etc/%U.conf

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

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

    # chmod 777 /FileServer/otdel*
    # chmod 777 /FileServer/Public*

    Теперь сформируем файл /FileServer/etc/smb.global:

    [global]
    null passwords = false
    workgroup=MY_DOMAIN
    netbios name=MyServ
    server string=File Server
    character set=KOI8-R
    client code page=866
    unix password sync = yes
    passwd chat = *new*password* %n\n *new*password*
    %n\n *success*
    passwd program = /usr/bin/passwd %u
    interfaces=eth0
    bind interfaces only=True
    hosts deny=ALL
    hosts allow=192.168.0.0/255.255.0.0 127.0.0.1
    protocol=NT1
    security=domain
    encrypt passwords=yes
    lm interval=0
    oplocks=False
    level2 oplocks=No

    syslog=1
    wins support=Yes
    domain master=Yes
    local master=Yes
    preferred master=Yes
    os level=255
    log level=0
    log file=/dev/null
    domain logons=yes
    logon script=%U.bat
    create mask=0666
    directory mask=0777
    security mask=0777
    force create mode=0777
    nt acl support =yes
    socket options =SO_KEEPALIVE SO_BROADCAST
    TCP_NODELAY
    SO_RCVBUF=4096 SO_SNDBUF=4096
    domain admin group = root
    add user script = /usr/sbin/useradd -d
    /dev/null -g
    machines -s /bin/false -M %u
    logon path = \%L\Profiles\%U

    [Profiles]
    path = /var/lib/samba/profiles
    browseable = no
    read only = no
    create mask = 0600
    directory mask = 0700

    Проведем анализ - что же мы тут написали. Как видим, у нас есть два раздела: [global] и [Profiles] - первый отвечает за информацию непосредственно о сервере и общих настройках, а второй описывает каталог, в котором будут храниться профили пользователей на сервере. Соответственно, каталог /var/lib/samba/profiles должен существовать - и при этом права доступа должны разрешать писать туда всем (# chmod 777 /var/lib/samba/profiles).

    Раздел [global] - главные моменты:

    workgroup Название домена, в котором участвует сервер
    netbios name Как будет откликаться сервер по NetBIOS-протоколу. Не делайте его таким же, как и имя рабочей группы!
    hosts allow Список сетей, которым разрешен доступ к серверу
    interfaces Список сетевых интерфейсов, которым разрешен доступ к серверу
    security Говорит, какой будет аутентификация
    encrypt passwords Разрешаем шифрованные пароли
    local master Samba сразу берет на себя роль мастер-браузера
    preferred master При запуске устраивает перевыборы с наибольшим шансом для себя
    wins support Запускаем wins-сервер
    os level Уровень ОС. Чем выше номер, тем выше вероятность стать главным браузером сети
    domain logons Разрешаем подсоединения в режиме домена
    logon script Скрипт, который выполнится при входе в домен
    domain admin group Какой пользователь может добавлять машины и пользователей в домен
    add user script Позволяет samba работать как PDC Windows, то есть добавляет имя машины в список зарегистрированных в домене

    Более подробную информацию по командам конфигурации samba можно получить с помощью # man smb.conf.

    Следующим этапом мы создадим файл smb.netlogon со таким содержимым:

    [netlogon]
    path=/FileServer/netlogon
    writeable=no
    guest ok=no
    browsable=no
    available=yes

    Здесь описывается "шара" (сетевой ресурс) для возможности выполнения скрипта при входе в домен.

    И последний штрих - пример файла конфигурации для пользователя user, принадлежащего к отделу № 1, файл user.conf:

    include=/FileServer/etc/smb.global
    include=/FileServer/etc/smb.netlogon

    [Otdel]
    path=/FileServer/otdel_1
    comment=Информация отдела
    browsable=yes
    available=yes
    writeable=yes
    recycle bin=/FileServer/otdel_1/.recycled
    mangled names=no
    directory mask=0777
    create mask=0666
    fstype=NTFS

    [Public]
    path=/FileServer/Public
    comment=Общая информация
    browsable=yes
    available=yes
    writeable=yes
    mangled names=no
    directory mask=0777
    create mask=0666
    fstype=NTFS

    [Inst_Prog]
    path=/install
    comment=Инсталяционное ПО
    browsable=yes
    available=yes
    writeable=no
    mangled names=no
    fstype=NTFS

    [HP_5000]
    printer=lp
    comment = Queue for HP LaserJet 5000
    browseable = yes
    printable = yes
    public = yes
    writable = no
    create mode = 0700

    Проанализируем, что получилось. Итак, у нас есть четыре сетевых ресурса, три из них - это дисковые пространства, а последний - очередь на сетевой принтер. Параметр printer=lp дает нам ссылку на имя очереди принтера, который предварительно был установлен в системе и получил имя lp. Менеджер управления принтерами вызывается с помощью команды:

    # /usr/bin/redhat-config-printer

    Ресурс [Inst_Prog] предоставляет пользователям возможность получить доступ к инсталляционным пакетам программ и драйверам в режиме "только чтение".

    Ресурс [Otdel] - это папка отдела, к которому принадлежит пользователь; при описании этого ресурса была использована команда для организации на этом ресурсе "сетевой корзины" (recycle bin=/FileServer/otdel_1/.recycled). Как видно из синтаксиса команды, мы можем указать в качестве корзины как полный путь, так и относительный (например: recycle bin=.recycled). При использовании относительного пути в качестве базы для имени будет использован путь к сетевому ресурсу, в котором и описано правило по использованию "сетевой корзины".

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

    Скрипт /FileServer/netlogon/user.bat:

    @echo off
    net use h: \MyServ\Otdel
    net use i: \MyServ\Public
    net use k: \MyServ\Inst_Prog
    net time \MyServ /SET /YES

    Здесь следует обратить внимание на одну деталь, связанную с кодовыми таблицами Windows и Linux: созданный в Linux файл для операционной системы выглядит как одна строка и, соответственно, написанные нами команды выполняться не будут. Чтобы обойти эту проблему, воспользуемся программой конвертации файлов из кодовой системы Linux/Unix в DOS/Windows:

    # unix2dos /FileServer/netlogon/user.bat

    На выходе получим файл в кодировке DOS, который ОС Windows сможет правильно интерпретировать.

    Нам осталось сделать еще одну маленькую операцию - и можно будет переходить к тестированию наших настроек.

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

    Для решения этой задачи создадим скрипт clear_recycled, который поместим в каталог /etc/cron.daily. Это позволит выполнять скрипту каждую ночь и выполнять запланированные нами действия над "сетевой корзиной". В тело скрипта поместим следующие строки:

    #del after 1 day recycled file
    find /FileServer/otdel*/.recycled -type f -atime +1
    -exec rm {} \; >& /dev/null

    Приведенный скрипт просматривает во всех папках отделов "сетевую корзину" - и файлы, которые были помещены туда более одного дня назад, будут удалены. Параметр, отвечающий за данную опцию,- -atime +1. Здесь вы можете указать любое нужное количество дней. (Более подробно о возможностях команды find смотрите: man find.)

    Графический интерфейс управления Samba

    Этот интерфейс называется swat, он является так называемым веб-интерфейсом (то есть его можно использовать на любом компьютере, имеющем веб-браузер). Для активации доступа к этой службе необходимо создать в каталоге /etc/xinetd.d файл swat следующего содержания:

    service swat
    {
    port = 901
    socket-type = stream
    wait = no
    only_from = <IP адрес рабочей станции
    администратора>
    user = root
    server = /usr/bin/swat
    log_on_failure += USERID
    disable = no
    }

    После этого перезапускаем службу xinetd:

    # /etc/init.d/xinetd restart
    Рис. 1. Тест полученных результатов

    Теперь, если в браузере на рабочей станции администратора набрать: http://192.168.0.1:901 - получим графический интерфейс управления пакетом.

    Прежде чем начать непосредственное тестирование установленного пакета, необходимо выполнить следующие операции:

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

  • # groupadd otdel_1
    ...
    # groupadd otdel_N
  • создать группу, в которую будем затем помещать имена машин пользователей (необходимо для ОС Windows 2000/XP/2003 Server):
  • # groupadd -g 9999 machines
  • создать скрипт machine_add (в папке /usr/bin) - для ручного добавления имен машин в наш домен:
  • useradd -d /dev/null -c "User PC" 
    -g machines -s /bin/false
    -M $1
    passwd -l $1
    smbpasswd -a -t $1

    В качестве параметра нашему скрипту передается имя компьютера с добавленным в конце знаком $. Например, для нашего пользователя user имя его ПК - otdel_n1_user:

    # /usr/bin/machine_add "otdel_n1_user$"
  • добавить в систему наших пользователей - с учетом принадлежности их своим группам:
  • # useradd -c "Фамилия Имя Отчество" -g otdel_1 -s
    /bin/false user
  • и, наконец, добавить нашего пользователя в список пользователей samba:
  • # smbpasswd -a user

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

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

    # /etc/init.d/smb start

    Проверяем, что демон действительно работает:

    # /etc/ini.d/smb status

    В результате мы должны получить нечто вроде этого:

    smbd (pid 1488) выполняется...
    nmbd (pid 1492) выполняется...

    Переходим к проверке доступности ресурсов для пользователей (на примере пользователя user):

    # smbclient -L MyServ -U user
    added interface ip=192.168.0.2 bcast=192.168.0.255
    nmask=255.255.255.0
    Got a positive name query response from 192.168.0.1
    (192.168.0.1)
    Domain=[MY_DOMAIN] OS=[Unix] Server=[Samba 2.2.5]
    Sharename Type Comment
    --------- ---- -------
    IPC$ IPC IPC Service (Samba Server)
    ADMIN$ Disk IPC Service (Samba Server)
    Otdel Disk Информация отдела
    Public Disk Общая информация
    Inst_Prog Disk Инсталяционное ПО
    HP_5000 Printer Queue for HP LaserJet 5000
    Server Comment
    --------- -------
    MyServ File Server
    Workgroup Master
    --------- -------
    MY_DOMAIN MyServ

    Как видно из полученного сообщения, все прошло удачно и при обращении к samba server пользователь получил свои ресурсы.

    Настройка Windows-клиента

    Прежде чем ввести компьютер в созданный домен, необходимо (для ОС Windows 2000/XP/2003 Server) изменить параметры входа в домен. Под этим подразумевается, что мы отключим некоторые ключи, использующиеся для задания специального доверительного общения между доменом, сделанным на базе ОС Windows, и Windows-клиентом. Для упрощения этого процесса создадим файл domain_fix.reg следующего содержания:

    REGEDIT4

    [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet
    \Services\Netlogon\Parameters]
    "requiresignorseal"=dword:00000000
    "requirestrongkey"=dword:00000000
    "sealsecurechannel"=dword:00000001
    "signsecurechannel"=dword:00000001

    Следующим шагом будет ввод ПК в домен.

    Рис. 2. Ввод ПК в домен - для Windows 2000/ XP/ 2003 Server

    Для ОС Windows 9x все очень просто - необходимо в Свойствах сети выбрать службу Microsoft и в ее свойствах указать, что рабочая станция подключается в домен, и указать также его имя.

    Для Windows 2000/XP/2003 Server нужно вызвать вкладку Свойства на Мой компьютер - и выбрать вкладку Имя компьютера. Далее - команда Изменить (см. рис. 2).

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

    Здесь мы можем пойти по двум направлениям - имеется ввиду, что нашему пользователю можно оставить "обычные права", а можно задать специальные.

    Если мы выбираем первый вариант, можно перегрузить систему и при загрузке просто указать имя пользователя и домен, с которого будем загружаться. Или же можем добавить пользователя через Панель управления > Администрирование > Управление компьютером > Локальные пользователи > Пользователи (создаем нового пользователя с указанием того, в каком домене он будет проходит аутентификацию и к какой группе будет принадлежать - например, Администраторы).

    После входа пользователя в домен выполняется скрипт входа в домен, в нашем примере, подключаются сетевые диски и происходит синхронизация времени рабочей станции и сервера.

    Выводы

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


    Kонфигурация Samba сервера.

    [Illustration]

    автор: Eric Seigne.

    Резюме:

    Здесь я попробую рассказать вам о том, что надо сделать, для того чтобы, использовать linux-samba сервер в качестве контролера домена для Windows сети. Также будет рассмотрено управление пользователями и профилями. Этот документ относиться к Debian CNU/Linux 2.2 так что ваш smb.conf может отличаться в зависимости от дистрибутива. Для написания статьи использовалась samba 2.0.7


     

    Инсталяция Samba

    Будем считать что вы немного знакомы с samba и он установлен на вашем сервере. Если это не так, то для быстрой установки попробуйте:
    Debian: apt-get install samba
    RedHat(Mandrake): rpm -vih /mnt/cdrom/RedHat(Mandrake)/RPMS/samba*

     

    Файл конфигурации: основные параметры

    Samba использует свой собственный файл конфигурации который состоит из секций, таких как приведенная ниже [global] и [tmp].

    Файл настройки только для samba!


    <минимальный smb.conf file>
    [global]
    printing = bsd
    printcap name = /etc/printcap
    load printers = yes
    guest account = pcguest

    log file = /usr/local/samba/log.%m

    [tmp]
    comment = Temporary file space
    path = /tmp
    read only = yes
    public = yes
    </file>

    Если вы запустите samba с этим конфигом, то все windows машины в вашей локальной сети смогут увидеть в своем сетевом окружении машину, которая называется так же как ваш linux сервер и которая имеет разделяемый ресурс tmp, в который для всех разрешена запись.

    Внимание: когда вы изменяете ваш конфигурационный файл, вы должны перезапустить samba командой/etc/init.d/samba restart script (для debian)

     

    Файл конфигурации, идем дальше

    Давайте рассмотрим следующие параметры:

    • Секция [global]
      • netbios name:
        Netbios имя вашего сервера (то имя, которое вы увидите в сетевом окружении вашей windows машины), если не сделаете этого, то будет использовано имя сервера (hostname).
      • invalid users:
        Список пользователей которым запрещен доступ, например "root" рекомендуется включить в этот список.
      • interfaces:
        Если машина имеет несколько сетевых интерфейсов, то нужно указать какой необходимо использовать samba серверу.
      • security:
        Выбор режима безопасности, при security=user каждый пользователь должен иметь учетную запись (account) на GNU/Linux сервере, если вы хотите что бы samba сервер управлял доступом и пользователями, то используйте security=share.
      • workgroup:
        Рабочая группа.
      • server string:
        Описание вашего компьютера.
      • socket options:
        Опции сокета, с их помощью можно (и нужно) оптимизировать работу samba.
      • encrypt passwords:
        Должны ли вы использовать зашифрованные пароли? Это важно знать, потому, что каждая версия windows (почти) использует различные схемы авторизации.
      • wins support:
        Должен ли ваш сервер быть wins сервером?
      • os level:
        Определяет шансы samba сервера стать local mastero`ом для своей рабочей группы (чем выше значение тем меньше у конкурирующего сервера шансов).
      • domain master:
        Работать как domain master.
      • local master:
        Как local master.
      • preferred master:
        Это опция вместе с domain master = yes практически гарантирует, что ваш samba сервер станет domain master`ом
      • domain logons:
        Тrue если хотите чтобы samba выполняла функции ПЕРВИЧНОГО КОНТРОЛЕРА ДОМЕНА (PDC), для дополнительной информации по этому вопросу прочтите Samba-PDC-HOWTO.
      • logon script:
        Скрипт, который выполняется, когда пользователь успешно логиниться.
      • logon path:
        Путь для скриптов.
      • logon home:
        Тут храним профили юзеров.
      • name resolve order:
        Порядок разрешения имен.
      • dns proxy:
        Будем ли работать как DNS прокси?
      • preserve case:
      • short preserve case:
        Эти два параметра решают вопросы связанные со строчными и заглавными буквами (как известно в Unix ситемах это разные буквы а в Windows - одинаковые) .
      • unix password sync:
        Будет ли samba синхронизировать Unix и Samba пароли ?
      • passwd program:
        Программа для синхронизации паролей.
      • passwd chat:
        "Чат" протокол для смены пароля.
      • max log size:
        Максимальный размер для лог файла.
    • Section [netlogon]
      Описываем ресурс netlogon.
    • Section [profiles]
      Ресурс profiles.
    • Section [homes]
      Здесь home директории для каждого пользователя.
     

    Переменные

    Переменная Описание
    Переменные клиента
    %a Архитектура клиента
    Например: Win95, WinNT, Samba ...
    %I IP адрес клиента
    %m NETBIOS имя клиента
    %M DNS имя клиента
    Переменные пользователя
    %g первичная группа
    %H домашняя директория
    %u имя юзера
    Переменные расшаренных ресурсов
    %P Корневая папка ресурса
    %S Имя ресурса
    Переменные сервера
    %h DNS имя
    %L NETBIOS имя
    %v версия Samba
    Другое
    %T Текущая дата и время

    Пример использования переменных: в сети где есть windows 3.11 и windows 98 вы можете создать 2 конфигурационных файла, по 1 для каждой системы используя переменную %a.

     

    Итак: наш конфиг файл

    <smb.conf file>

    [global]
    printing = bsd
    printcap name = /etc/printcap
    load printers = yes
    guest account = nobody
    invalid users = root

    ; указываем netbios имя
    netbios name = pantoufle
    ; и подсеть в которой работаем
    interfaces = 192.168.0.1/255.255.255.0

    ; режим user подразумевает что каждый пользователь имеет учетную запись на unix сервере
    security = user

    ; рабочая группа
    workgroup = rycks
    ; описание компьютера
    ; %h - DNS имя сервера, %v версия samba
    server string = %h server (Samba %v)

    ; samba ведет свои собственные логи
    syslog only = no
    syslog = 0;

    ; оптимизация соединений
    socket options = IPTOS_LOWDELAY TCP_NODELAY \
    SO_SNDBUF=4096 SO_RCVBUF=4096

    ; используем зашифрованные пароли !!!! для этого нужно пропатчить w95 и NT4
    encrypt passwords = yes

    ; Wins сервер позволяет использовать разделяемые ресуры нескольких подсетей
    wins support = yes

    ; OS level. См. выше
    os level = 34

    ; управление доменом
    local master = yes
    preferred master = yes

    ; уравление входом в домен
    domain logons = yes

    ; скрипт выполняемый при коннекте клиента (на машине клиента)
    logon script = %g.bat
    ; директория для скриптов
    logon path=\\%L\netlogon
    ; здесь храним профили
    logon home=\\%L\%U\winprofile

    ; в этом порядке идет поиск имен
    ; ВНИМАНИЕ: bcast в конце в отличии от windows
    name resolve order = lmhosts host wins bcast

    ; работа DNS proxy
    dns proxy = no

    ; регистр букв !!!!
    preserve case = yes
    short preserve case = yes

    ; синхронизация samba и unix паролей
    unix password sync = yes

    ; способ синхронизации
    passwd program = /usr/bin/passwd %u
    passwd chat = *Enter\snew\sUNIX\spassword:* \
    %n\n *Retype\snew\sUNIX\spassword:* %n\n .

    ; максимальный размер логфайла (строк)
    max log size = 1000

    ; tine сервер
    ; сихронизировать будем с помощью .bat файла
    time server = yes

    ; ресурс netlogon используется только во время установки соединения
    ; поэтому нет необходимости делать его публичным
    [netlogon]
    path = /home/netlogon/%g
    public = no
    writeable = no
    browseable = no

    ; каждому клиенту по собственной директории
    [homes]
    path = /home/%user
    comment = Home Directories
    browseable = no
    read only = no
    create mask = 0700
    directory mask = 0700

    ; для удобства можно расшарить и FTP
    ; чтобы доступ осуществлялся не только с помощью FTP клиента
    [ftp]
    path = /home/ftp/pub
    public = yes
    printable = no
    guest ok = yes

    ; tmp
    [tmp]
    path = /tmp
    public = yes
    printable = no
    guest ok = yes
    writable = yes

    ; tmp для отдельных юзеров
    [bigtemp]
    path = /home/bigtemp
    public = yes
    printable = no
    guest ok = yes
    valid users = erics
    writable = yes

    </smb.conf file>

     

    Что же должно быть на сервере ?

    На сервере мы должны иметь:

    • учетные записи для каждого клиента (account)
    • smb.conf файл
    • директорию /home/netlogon (в моем примере)
    • .bat файл для каждого пользователя и группы (примеры см. ниже)
    • файл CONFIG.POL для осуществления вашей политики безопасности (в директории /home/netlogon).
    • для создания файла config.pol понадобится poledit.exe.


    <file /home/netlogon/admin.bat>
    net use P: \\pantoufle\homes
    net use T: \\pantoufle\tmp
    net time \\pantoufle /SET /YES
    </file admin.bat>

    <file /home/netlogon/teachers/teachers.bat>
    net use P: \\pantoufle\homes
    net use T: \\pantoufle\tmp
    net time \\pantoufle /SET /YES
    regedit /s \\pantoufle\netlogon\teachers.reg
    </file teachers.bat>

    <file /home/netlogon/pupils/pupils.bat>
    net use P: \\pantoufle\homes
    net use T: \\pantoufle\tmp
    net time \\pantoufle /SET /YES
    regedit /s \\pantoufle\netlogon\pupils.reg
    </file pupils.bat>

    <file /home/netlogon/teachers/teachers.reg>
    [HKEY_CURRENT_USER\Software\Microsoft\Windows
    \CurrentVersion\Explorer\User Shell Folders]
    "Personal"="P:\\"
    </file teachers.reg>

    <file /home/netlogon/pupils/pupils.reg>
    [HKEY_CURRENT_USER\Software\Microsoft\Windows
    \CurrentVersion\Explorer\User Shell Folders]
    "Personal"="P:\\"
    </file pupils.reg>

    Эти файлы позволяют при загрузке автоматически подключать персональный ресурс как диск P:\ и tmp ресурс как диск T:\ . Так же происходит синхронизация времени.

    ВНИМАНИЕ: .bat файл должен быть в так называемом "DOS mode" (т.е. иметь все символы из DOS кодировки), для этого лучше всего создавайте его в блокноте (notepad) .

     

    Defining the system security policy (C) (TM) (R)

    Безопасночть в Windows почти возможна используя контролеры доменов.

    Этот заголовок взят из документации MS :o).

    Итак для воплощения в жизнь вашей политики безопасности (еще я думаю подойдет термин настройки системы), например для запрета запуска утилиты regedit, DOS программ и т.д., вам необходимо использовать программу POLEDIT из дистрибутива поставки Windows 98 .

    Запускайте poledit, читайте документацию, пробуйте: но эта статья не об этом.

    Итак, когда ваш .POL файл создан, скопируйте его в директорию ресурса [netlogon].

    ВНИМАНИЕ: Для Win9X клиентов настройки должны быть в файле CONFIG.POL ... для WindowsNT он должен иметь другое имя, но я не знаю какое так как ей не полюзуюсь:( И пожалуйста не присылайте мне NT даже для теста. Хотя все равно спасибо за такие предложения :o)

    ЗАМЕЧАНИЕ: PolEdit разрешает создавать пользователей и группы. Работает, правда, это только с пользователем установленным по умолчанию.

    Например, если я создаю группу "admin" в PolEdit, которой можно запускать regedit, когда я подсоединяюсь под именем "erics" ("admin" является его личной группой), regedit у меня не запускается :(.

    Хотя, если создать пользователя "erics" в poledit ... все работает.

    Учитывая то, что нам не очень хочется создавать 1056 пользователей poledit и управлять всеми пользоателями сразу намного интереснее, мы предлагаем следующую хитрость:

    Для осуществления плана мы обошли проблему: мы создали 3 config.pol файла только пользователями по умолчанию, итак, на linux сервере получилось:
    /home/netlogon/teachers/CONFIG.POL
    /home/netlogon/teachers/teachers.bat
    /home/netlogon/pupils/CONFIG.POL
    /home/netlogon/pupils/pupils.bat
    /home/netlogon/admin/CONFIG.POL
    /home/netlogon/admin/admin.bat
    И немного изменили файл smb.conf чтобы она учитывала это:

    <smb.conf file>
    [netlogon]
    ; мы добавили %g чтобы переместить netlogon в другую дирректорию в зависимости от
    ; группы пользователей, к которой файл config.pol обращается в зависимости от группы
    ; пользователей
    path = /home/netlogon/%g
    public = no
    writeable = no
    browseable = no
    </smb.conf file>

     

    Настройки компьютеров под Windows

    Немного удачи, 20 кликов мыши и перезагрузок наверно хватит для настройки windows!

    Для клиента под Win98

    Нажмите на Start/Parameters/Configpanel (Пуск/Панель управленя/Сеть) и дважды кликните на Network

    Необходимы::

    • Клиент для сетей Майкрософт
    • Драйвер сетевой карты
    • Поддержка TCP/IP и ТОЛЬКО TCP/IP (не ipx или netbios)
    • Доступные принтеры и папки
    network  configuration

    Потом нажмите на закладку "Identification" (Идентификация) и дайте компьютеру имя и название группы.
    Identity

    Нажмите на "Access control" и выберите права доступа пользователя
    Access control

    Вернитесь к закладке настроек и нажмите на "Client for MS network" (Клиент для сетей Майкрософт)
    Client for MS network

    Не забудьте настроить поддержку TCP/IP:
    дважды нажмите на TCP/IP
    IP address:

    • IP address для этой машены (пример: 192.168.0.2)
    • Маска подсети (пример: 255.255.255.0)
    Настройка WINS:
    • Активизировать WINS разрешение
    • Добавить WINS сервер, IP 192.168.0.1 (если это IP address samba сервера)
    • Gateway: если есть здесь можно настроить
    • Настройки DNS: настроить доступ к DNS
     

    Замечания "скорость/быстродействие?"

    Во время работы, обращения проходят довольно быстро потому что используются профили windows.

    Но, profile полон вещей которые MS считает необходимыми, такие как IE cache, OutLook cache, и т.д.

    Это значт что около 10 MB будет грузиться при подключении к машине и 10 MB будет передаватья серверу при отключении.

    10 MB для каждого пользователя, для 15 компьютеров ("нормальный" размер лаборатории, например), получается 150 MB, а если в здании 10 комнат... можно подсчитать время отключения от сети в конце рабочего дня.

    Поэтому лучше домашней директорией сделать P: (например, P как Personal) для каждого и приучить пользователей: "сохраняйте докумнты в P а не в "My documents", иначе обратно вы их не получите ".

    Надо найти софт чтобы настроить закладки в P:\bookmarks.html и т.п.

    Я не знаю существует ли это в мире windows!

    Юниксе на порядок выше чем тот же сервак на Винде. Дело стоит заморочек с переносом.
    Comments