суббота, 1 января 2011 г.

samba+user


Сначала создаем группы пользователей на сервере
groupadd admins
groupadd usrs
Затем создаем пользователей и включаем их в соответствующие группы
useradd -M -g admins -c "комментарий" user1
...
useradd -M -g admins -c "комментарий" usern
-M означает что создаваемые пользователи будут созданы без создания домашнего каталога в каталоге /home.
-g группа в которую будет помещен пользователь.
-c комментарий.
Точно также заводим пользователей в группу usrs
useradd -M -g usrs -c "комментарий" usr1
...
useradd -M -g usrs -c "комментарий" usrn
Задаем пароли для вновь созданных пользователей
passwd < имя_пользователя >
добавляем этих пользователей в Samba
smbpasswd -a < имя_пользователя >
и разрешаем пользователей
smbpasswd -e < имя_пользователя >

Теперь переходим к файлу /etc/samba/smb.conf. Привожу свой итоговый файл конфигурации.
[global]
dos charset = CP866
unix charset = KOI8-R
encrypt password = yes
smb passwd file = /etc/samba/smbpasswd
max log size = 50
wins serwer = IP-адрес сервера
socket options =TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
server string = Super-Puper Linux Server :)))
security = user
os level = 20
load printers =yes
log file = /var/log/samba/%m.log
workgroup = имя_группы
dns proxy = no
[FS]
path = /mnt/data/FS
comment = "Catalog FS"
read only = No
force group = +admins
directory mask = 0777
create mask = 0777
[CB]
path = /mnt/data/CB
comment = "Catalog CB"
read only = No
force group = +admins
directory mask = 0777
create mask = 0777
Рассмотрим что означает каждая опция.
Опция dos charset = CP866 задает с каким набором символов Samba, будет "разговаривать" с клиентами DOS.
Опция unix charset = KOI8-R задает в какой кодировке Samba, будет хранить файлы на сервере. Samba должна знать как конвертировать текст в кодировку используемую другими клиентами. Здесь я должен заметить что при установке ASPLinux я выбрал локаль по умолчанию CP1251. Так как пользователями samba будут windows-клиенты то эта установка в сочетании с dos charset и unix charset без проблем позволяет пользователям создавать на сетевом ресурсе файлы с русскими именами. И на сервере отображаться эти файлы будут также русскими буквами. Конечно вы можете использовать другую кодировку.
Опция encrypt password = yes означает что пароли будут передаваться по сети в зашифрованном виде. Следующие три параметра я описывать не буду, думаю интуитивно они понятны.
Строка socket options =TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 присутствовала в файле созданном по умолчанию и я не стал ее менять, она отвечает за сетевое соединение между клиентом и сервером и об этом параметре можно почитать в man smb.conf.
Параметр server string задает комментарий который будет выводиться например в Проводнике для этого сервера.
Параметр security = user означает что аутентификация пользователей на сервере samba будет проходить на основании полученных от клиента имени пользователя и пароля. Существуют и другие значения параметра security.
Парметр os level задает с кем Samba ассоциирует себя в сети. Значение 20 это значение по умолчанию, при этом Samba считет себя STAND ALONE сервером. Чем выше значение os level тем выше роль сервера в сети. Если вы делаете контроллер домена на Samba то os level должен быть ну например 65.
Строка load printers означает что если у вас на сервере будет устанолен принтер, то он будет виден в сети.
Следующие две строки интуитивно понятны, скажу только что %m.log означает что в соответствующем каталоге для каждого пользователя стучащегося в Samba будет вестись отдельный логфайл с именем пользователя.
Строка dns proxy = no говорит что у меня в сети уже есть dns сервер с которым Samba будет общаться и прокси мне не нужен. Возможно эту строку можно и вообще не писать.
Перейдем к описанию ресурсов.
path это путь к каталогу ресурса. comment - комментарий, read only = No означает что ресурс не является каталогом только для чтения. Вместо этого параметра могут использоваться его синонимы, но нужно внимательно прочитать в man smb.conf что они означают, есть много нюансов.
Параметр force group самый интересный. Его присутствие решает проблему описанную в официальном HOWTO когда файлы созданные одним пользователем не могут изменяться другими. Для этого вводится параметр force group и все файлы создаваемые или редактируемые разными пользователями будут иметь группу владельца указанную в парметре force group. Наряду с этим параметром применяется параметр force user, но в моем случае применение этого параметра приводило к тому что члены группы usrs получали такие же права как и admins и мне пришлось его исключить и оставить только force users = +admins
По поводу плюсика:
Точно перевести мне не удалось, по-этому привожу фрагмент из man smb.conf, без перевода. Этот плюсик мне очень помог получить то что нужно.
Цитата из man smb.conf
In Samba 2.0.5 and above this parameter has extended functionality in the following way. If the group name listed here has a '+' character prepended to it then the current user accessing the share only has the primary group default assigned to this group if they are already assigned as a member of that group. This allows an administrator to decide that only users who are already in a particular group will create files with group ownership set to that group. This gives a finer granularity of ownership assignment. For example, the setting force group = +sys means that only users who are already in group sys will have their default primary group assigned to sys when accessing this Samba share. All other users will retain their ordinary primary group.
If the force user parameter is also set the group specified in force group will override the primary group set in force user.
Default: force group =
Example: force group = agroup
Конец цитаты.
Параметр directory mask задает какие права доступа будут иметь вновь создаваемые директории, а параметр create mask задает тоже самое, но для вновь создаваемых файлов.
Теперь перейдем непосредственно к каталогам. Для размещения файловых ресурсов я создал специальный каталог /mnt/data. В этом каталоге от имени пользователя входящего в группу admins создаем каталоги которые будут являться шарами со следующими правами доступа:
drwxrwx-wx 6 user1 admins 4096 Дек 7 09:07 .
drwxrwxrwx 3 root root 4096 Дек 7 11:57 ..
drwxrwx-wx 3 user1 admins 4096 Дек 7 14:58 FS
drwxrwx-wx 3 user1 admins 4096 Дек 7 15:03 CB
Почему нужно создавать каталоги и файлы от имени определенного пользователя? Смотри выше про параметр force group. Как видите я снял атрибут чтение для "остальных" пользователей с каталогов FS и CB. В результате пользователь на рабочей станции Windows имеет возможность подключить сетевые диски FS и CB но при попытке войти внутрь получает сообщение о том что у него нет доступа. Однако прикладная программа может работать с файлами на этих сетевых дисках.
Снятие атрибута чтение в первой строке приведенного примера необязательно.

Комментариев нет:

Отправить комментарий

h265.sh

#!/bin/bash file="../mp4" if [ -d $file ]; then         echo "  Директория существует :-) "         for i in *.mp4; do f...