Общий доступ к папке Ubuntu
Сначала давайте создадим общую папку доступную всем. То есть с анонимным доступом, без авторизации samba.
Создайте папку, к которой будем открывать доступ, например:
После того как папка создана, нужно сделать для нее правильные права доступа. Следующие команды разрешают доступ к папке для всех и делают владельцем nobody:
Следующим шагом будет описать папку allaccess в файле настройки samba:
Теперь ваш конфигурационный файл должен выглядеть вот так:
Рассмотрим подробнее опции, которые были здесь использованы:
- path — путь к папке, которую нужно расшарить;
- browsable — будет ли папка отображаться в списке доступных шар;
- writable — будет ли папка доступна для записи;
- read only — папка доступна только для чтения;
- guest ok, public — будет ли разрешен гостевой доступ;
- only guest — если установлено yes, то папка будет доступна только гостям;
- hosts allow — ip адреса, с которых можно получить доступ к этому серверу;
- valid users — по умолчанию могут авторизоваться все пользователи, если в этом параметре передать список пользователей, то авторизоваться смогут только они;
- create mask — маска прав для создаваемых файлов.
Чтобы применить изменения, перезапустите сервер Samba:
Настройка Samba Ubuntu для анонимного доступа завершена. Теперь вы можете проверить доступность общей папки allaccess из Windows, для этого нажмите Win+R и выполните:
Вы увидите нашу папку. Если не увидите, проверьте еще раз конфигурацию. Доступ к папке можно получить без авторизации samba. Настойка Samba шары с доступом без авторизации завершена.
Также вы можете подключится к этому серверу из Linux с помощью Nautilus для этого достаточно набрать адрес smb://ip-сервера, в разделе другие места:
Установка и настройка Samba, Winbind
Устанавливаем необходимые пакеты:
1 | apt-get install samba cifs-utils winbind libnss-winbind-y |
Конфигурационный файл Samba (/etc/samba/smb.conf) приводим к виду:
1 |
global #ОБЩИЕПАРАМЕТРЫСЕТЕВОЙШАРЫ realm=JAKONDA.LOCAL workgroup=JAKONDA security=ads encrypt passwords=yes netbios name=DATASTORE1 server string=%hserver domain master=no local master=no preferred master=no os level= domain logons=no dns proxy=no socket options=TCP_NODELAY unix charset=UTF-8 dos charset=866 #Конфигурацияпо-умолчаниюдлялокальныхпользователейигрупп idmap config*backend=tdb idmap config*range=3000-7999 #КонфигурациядлядоменаJAKONDAиегопользователейигрупп idmap config JAKONDAbackend=rid idmap config JAKONDArange=10000-999999 #ПАРАМЕТРЫWINBIND winbind enum users=yes winbind enum groups=yes winbind refresh tickets=yes winbind use default domain=yes #ПОДКЛЮЧЕНИЕМОДУЛЕЙVFS(Virtual File System) vfs objects=acl_xattr #ПоддержкаWindows ACLs mapacl inherit=yes store dos attributes=yes #ОТКЛЮЧЕНИЕПОДДЕРЖКИСЕТЕВЫХПРИНТЕРОВ load printers=no show add printer wizard=no printcap name=devnull disable spoolss=yes #ПАРАМЕНТЫЛОГИРОВАНИЯ log level=vfs1 |
Обращаю внимание что в параметрах realm, workgroup указываем название своего домена. Подробное описание используемых параметров можно по этой ссылке. . Так как в Linux по-умолчанию установлен лимит на 1024 одновременно открытых файлов, а в Windows он 16384, поэтому увеличим лимит в Debian до значения 16384
Так как в Linux по-умолчанию установлен лимит на 1024 одновременно открытых файлов, а в Windows он 16384, поэтому увеличим лимит в Debian до значения 16384.
В файле (/etc/security/limits.conf) дописываем в самый конец строки:
1 |
*-nofile16384 root-nofile16384 |
Перезагружаем систему для применения изменений:
1 | reboot |
Выполним проверку конфигурации на ошибки, командой:
1 | testparm |
1 |
Load smb config files frometcsambasmb.conf Loaded services file OK. Server roleROLE_DOMAIN_MEMBER Press enter to seeadump of your service definitions |
Проверка заданной конфигурации Samba правильная, ошибок и предупреждений нет, а поэтому можно вводить систему в домен, выполняем команду:
1 | net ads [email protected] |
Вывод об успешном присоединении к домену:
1 |
Enter [email protected]’s password: Using short domain name — JAKONDA Joined ‘DATASTORE1’ to dns domain ‘jakonda.local’ |
Теперь чтобы система использовала winbind для поиска пользователей и групп в файле (/etc/nsswitch.conf) к параметрам passwd, group добавляем параметр winbind:
1 7 |
#Example configuration of GNU Name Service Switch functionality. #Ifyou have the`glibc-doc-reference’ and `info’packages installed,try #`info libc»Name Service Switch»‘forinformation about this file. passwdcompat winbind shadowcompat gshadowfiles hostsfiles dns networksfiles protocolsdb files servicesdb files ethersdb files rpcdb files netgroupnis |
Перезапускаем службы Samba и Winbind для применения изменений:
1 |
etcinit.dsmbd restart etcinit.dwinbind restart |
Проверим, что Winbind установил доверительные отношения с Active Directory, выполним команду:
1 |
wbinfo-t |
Для проверки видит ли Winbind пользователей и группы из Active Directory, выполним команды:
1 |
wbinfo-u wbinfo-g |
Если в ходе выполнения данных команд в консоль были выведены пользователи и группы из Active Directory, то это значит что Winbind работает правильно.
Так же удостоверится в корректной работе Winbind можно запросив данные по доменному пользователю (прим. ранее созданного пользователя datastore1):
1 |
id datastore1 uid=14389(datastore1)gid=10513(пользователидомена)группы=10513(пользователидомена),14389(datastore1),10001(BUILTIN\users) |
Дата и время
Настройка
С консоли время в системе можно установить так:
# date MMDDhhmmCCYY.ss #или # date --set 4/13/2004 # date --set 14:46:27
Где MM — месяц, DD — день месяца, hh — часы, mm — минуты, CCYY — 4 цифры года, ss — секунды.
Синхронизация локально
Если вам не нужно раздавать время на другие машины, можете довольствоваться пакетом ntpdate, который не запускает свой демон при старте системы.
# aptitude install ntpdate # ntpdate-debian # ntpdate-debian -bs
Вторая команда выдает разницу во времени с дебиановскими серверами, а третья — однократно синхронизирует время на вашей машине с одним из них. Можно также использовать другие сервера.
Синхронизация для клиентов в сети
Устанавливаем ntp: — комплекс программ, позволяющих получить текущее время со специальных серверов в интернет и стать таким сервером для локальной сети.
# aptitude install ntp
По-умолчанию все настройки рабочие. Время забирается с сервера ntp.pool.org, служба автоматически синхронизирует время сразу после запуска. Настройки службы находятся в файле /etc/ntp.conf. Для включения возможности приёма запросов от клиентов в локальной сети на обновление времени нужно добавить строку
Пример для сети 192.168.0.xx
restrict 192.168.0.0 mask 255.255.255.0 trust notrap nomodify nopeer noquery
Перезапускаем службу для применения новых настроек
/etc/init.d/ntp restart
Далее можно прописывать IP адрес компьютера в качестве источника синхронизации.
Как отключить ipv6 в Debian
Пока еще новая версия протокола ip не получила широкого распространения, если он вам специально не нужен, ipv6 можно отключить. Прежде чем отключать, необходимо узнать, какие сервисы в настоящее время его используют и перенастроить их, отключив у них ipv6. Если этого не сделать, то в работе этих программ могут возникнуть ошибки. Скорее всего не критичные, но все равно, сделаем все аккуратно и правильно. Сначала проверим, что у нас работает на ipv6:
На свежеустановленном сервере debian программы ssh, exim, dhclient и rpcbind используют ipv6. Отключим это. Начнем с ssh. Открываем файл /etc/ssh/sshd_config и раскомментируем параметр ListenAddress:
Перезапускаем ssh:
Сделаем то же самое с exim4. Открываем файл конфигурации /etc/exim4/exim4.conf.template и в самом начале, после вступительных комментариев пишем:
Перезапускаем exim:
В dhclient для отключения ipv6 в конфиге убираем все параметры в запросе request, начинающиеся с dhcp6. Должно получиться вот так:
Перезапускаем сеть:
Отключаем ipv6 в rpcbind. Открываем конфигурацию /etc/netconfig и комментируем 2 строки с udp6 и tcp6:
Перезапускаем службу rpcbind и nfs-common, которая от него зависит:
Проверяем, что у нас осталось:
dhclient почему-то остался висеть на ipv6 порту, но ладно, это не страшно, запрашивать по ipv6 он все равно ничего не будет. Теперь полностью отключаем ipv6 в Debian:
Добавьте эти строки в любое место конфига, например, в самый конец. Перезапустим sysctl для применения настроек:
Проверяем свойства сетевых интерфейсов командами ifconfig и ip. Информации об ipv6 быть не должно, мы его полностью отключили.
Более подробно по об отключении ipv6 в различных приложениях читайте в отдельной статье — как отключить ipv6.
На клиентах
Для того, чтобы команда smbtree корректно запрашивала разделяемые ресурсы можно в параметрах команды принудительно указать протокол:
smbtree -N «—option=client min protocol=NT1»
Для того, чтобы клиенты samba всегда использовали протокол NT1 и корректно запрашивали разделяемые ресурсы нужно в файл /etc/samba/smb.conf на клиентском компьютере в секцию добавить параметр:
client min protocol = NT1
После этого запросы к серверам samba версии 4.9 будут отправляться и отрабатываться корректно, запросы к настроенным по умолчанию серверам версии 4.11 и новее будут завершаться ошибкой вида:
smbtree -N
\\CE-2-13-3-1115 Samba 4.12.5-Debian smbXcli_negprot_smb1_done: No compatible protocol selected by server.
Работа с файлом hosts
В папке /etc любого linux дистрибутива, в том числе debian есть файл hosts. Разберемся немного что это за файл и для чего он нужен. По-умолчанию он выглядит следующим образом:
Представим, что у нас в локальной сети есть некий сервер с именем server и ip 192.168.1.50 Мы хотим к нему обращаться по имени. Тогда добавляем запись в файл hosts:
Теперь мы можем обращаться к серверу просто по имени server.
Сервер будет в первую очередь смотреть информацию в файле hosts, только потом в dns сервере. Например, если вы добавите в файл строку:
То обращаясь к адресу ya.ru будете попадать на локалхост:
Этот функционал может быть полезен для публикации в локальной сети каких-то внутренних сервисов, к которым доступ будет только из вашей сети. Вам нет необходимости использовать dns сервер, с файлом hosts настройка делается гораздо быстрее.
Так же правка файла hosts актуальна, если вы используете локальную копию сервиса webpagetest для тестирования скорости работы сайта на разных хостингах. Вы просто меняете ip адреса для домена и делаете тесты. Так можно наглядно и однозначно сравнивать быстродействие разных хостингов. Подробно об этом можно почитать в статье — ускорение сайта и аудит.
Использование winbind
Сервис winbind является новым средством, предназначенным для более полной интеграции Samba в домены Windows; он появился, начиная с Samba 2.2.0. Данный сервис считывает свою конфигурацию из /etc/samba/smb.conf и динамически взаимодействует с PDC домена, автоматически синхронизируя списки пользователей и групп домена и машины Samba. Таким образом, winbind является весьма удобным средством для автоматического поддержания актуальности базы пользователей домена на рабочих станциях Samba.
Работа данного сервиса происходит без изменения содержимого каких-либо авторизационных файлов в /etc и при перезагрузке машины доменные пользователи появляются в системе только после запуска winbindd. Если во время работы остановить winbindd, то доменные пользователи и группы не исчезнут из системы до перезагрузки, однако динамического обновления списков имен и паролей происходить не будет.
Для того чтобы при рестарте компьютера (или только сервиса winbindd) не нарушались соответствия внутренних UID и доменных SID, он сохраняет текущее состояние списков в файлах /var/cache/samba/winbindd*.tdb.
Для нормального функционирования winbindd в файле /etc/samba/smb.conf обязательно должны быть обьявлены следующие директивы:
Диапазон номеров локальных пользователей, который будет использован для динамического создания пользователей домена:
winbind uid = 10000-20000
Диапазон номеров локальных групп пользователей, который будет использован для динамического создания групп пользователей домена:
winbind gid = 10000-20000
Символ-разделитель, используемый для составления доменных имен пользователей и располагающийся между именем домена и именем пользователя:
winbind separator = +
Интервал времени (в секундах) между запросами winbind к PDC в целях синхронизации списков пользователей и групп:
winbind cache time = 10
Шаблон имени домашних каталогов доменных пользователей, автоматически присваиваемых каждому пользователю. Сами каталоги, однако, динамически не создаются. Вместо переменой %D подставляется имя домена, а вместо %U подставляется имя пользователя:
template homedir = /home/%D/%U
Командный интерпретатор, назначаемый по умолчанию для пользователей, авторизованных через winbindd.
template shell = /bin/bash
Также необходимо внести изменения в файле /etc/nsswich.conf в разделы passwd и group, вписав директиву winbind — например, таким образом:
passwd: files winbind group: files winbind
С этого момента можно использовать имена доменных пользователей в /etc/samba/smb.conf с целью разграничения доступа, в правах на файлы и каталоги, для подключения к сетевым ресурсам данного хоста со стороны других хостов.
Локализация
Глобальные параметры локализации системы
Смотрим текущую локаль:
$ locale
Кроме LC_ALL все параметры должны быть ru_RU.UTF-8.
Если это не так, тогда запускаем настройку
# dpkg-reconfigure locales
Если системная локаль не применяется к пользователю, то стоит посмотреть файл настроек интерпретатора командной строки (bash, dash, ash) в домашнем каталоге пользователя.
Кириллица в консоли
См. примечания
Настраиваем кириллицу в консоли
Устанавливаем пакет console-cyrillic:
# aptitude install console-cyrillic
Настраиваем все параметры пакета:
# dpkg-reconfigure console-cyrillic
Удаление неиспользуемых файлов локализации
localepurge — утилита для удаления ненужных локализаций, документации и прочего. При установке пакета с помощью debconf выводится список языков в различных кодировках, отметить следует только нужные вам локализации. Рекомендуется сперва сделать backup системы и добавить к нужным английскую локализацию. В дальнейшем утилита будет автоматически запускаться и чистить файлы сразу после установки любых пакетов.
# aptitude install localepurge
Удаление происходит при запуске утилиты:
## localepurge localepurge: Disk space freed in /usr/share/locale: 345340 KiB localepurge: Disk space freed in /usr/share/man: 2060 KiB localepurge: Disk space freed in /usr/share/gnome/help: 65770 KiB localepurge: Disk space freed in /usr/share/omf: 435 KiB Total disk space freed by localepurge: 413605 KiB
Если вдруг понадобились удаленные языковые файлы, вернуть их можно так:
apt-get --reinstall install $(dpkg -S LC_MESSAGES | cut -d: -f1 | tr ', ' ' ' | sort -u)
Установка Samba
Samba 3.0, в отличие от более ранних версий Samba, имеет возможность работать в сетях Wndows, работающих в режиме Active Directory (или Windows 2000 native mode). Если требуется эта функциональность, следует установить samba3 samba2.
Active Directory имеет другую схему именования доменов, компьютеров и пользователей, основанную на DNS. Допустим, существует сеть с именем my.firm.com и компьютерами host1.my.firm.com, host2.my.firm.com, host3.my.firm.com; тогда домен Active Directory будет называться my.firm.com, а пользователи Active Directory будут иметь имена вида [email protected].
Подготовка системы (Debian 9 Stretch)
Перед началом выполнения ниже описанных действий обновляем систему до актуального состояния:
1 | apt-get update&&apt-get upgrade-y |
Указываем FQDN (Fully Qualified Domain Name) имя системы, в файле (/etc/hostname):
1 | datastore1.jakonda.local |
Так же файл (/etc/hosts) приводим к виду таким образом, чтобы в нём была запись с полным доменным именем компьютера и с коротким именем, ссылающаяся на один из внутренних IP:
1 |
127.0.0.1localhost 127.0.1.1datastore1.jakonda.local datastore1 |
Настраиваем синхронизацию времени с контроллером домена, выполняем установку NTP, выполняем синхронизацию времени с контроллером домена:
1 |
apt-get install ntp ntpdate ntpdate dc1.jakonda.local |
Более подробно о синхронизации времени на Debian 8 Jessie/Ubuntu Server 14.04 можно почитать в этой статье
Настройка Active Directory (Windows Server 2012 R2)
В DNS зону (JAKONDA.LOCAL), добавляем A-запись файлового сервера:
Создаем служебного пользователя (прим. datastore1), с бесконечным срок действия пароля.
Создаем KEYTAB-файл (необходим для аутентификации пользователей в Active Directory). В командной строке с правами администраторы выполняем команду (соблюдая регистр):
1 | ktpass-princ [email protected] [email protected] Aa1234567-crypto RC4-HMAC-NT-ptype KRB5_NT_PRINCIPAL-outC\datastore1.keytab |
Полученный KEYTAB-файл, передаем любым удобным способом на файловый сервер (расположение KEYTAB-файла на моем файловом сервере — /root/datastore1.keytab). Как передать файл посредством утилиты PuTTY можно прочитать тут
Настройка Kerberos
Установка пакетов для поддержки аутентификации Kerberos:
1 | apt-get install krb5-user |
В ходе установки может появится запрос указать область по-умолчанию для Kerberos, область необходимо его указать в заглавном виде (прим. JAKONDA.LOCAL)
Файл конфигурации Kerberos (/etc/krb5.conf), приводим к виду:
1 |
logging default=FILEvarlogkrb5libs.log kdc=FILEvarlogkrb5kdc.log admin_server=FILEvarlogkadmind.log libdefaults default_realm=JAKONDA.LOCAL default_keytab_name=rootdatastore1.keytab dns_lookup_kdc=false dns_lookup_realm=false forwardable=true ticket_lifetime=24h realms JAKONDA.LOCAL={ kdc=dc1.jakonda.local default_domain=JAKONDA.LOCAL admin_server=dc1.jakonda.local } domain_realm .jakonda.local=JAKONDA.LOCAL jakonda.local=JAKONDA.LOCAL |
Соответственно подставляем название своего домена вместо jakonda.local/JAKONDA.LOCAL
Проверка работы Kerberos, выполним авторизацию в Active Directory:
1 |
kinit-kV-pHTTPdatastore1.jakonda.local Using default cachetmpkrb5cc_0 Using [email protected] Authenticated to Kerberos v5 |
Удаляем полученный билет:
1 | kdestroy |
Решение проблем
Проблемы подключения к Windows 7 — mount error(12): cannot allocate memory
Известная ошибка Windows 7 «mount error(12): cannot allocate memory» может быть исправлена установкой пары ключей в реестре системы Windows:
- (установить значение )
- (установить значение )
В качестве альтернативы можно запустить командную строку от имени Администратора и выполнить следующее:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v "LargeSystemCache" /t REG_DWORD /d 1 /f reg add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" /v "Size" /t REG_DWORD /d 3 /f
Выполните одно из следующих действий, чтобы изменения вступили в силу:
- Перезагрузите Windows
- Перезапустите службу на сервере через services.msc
- Выполните в командной строке и ; после остановки служба может перезапуститься автоматически
Примечание: Поиск решения в интернете подскажет другое решение, рекомендующее пользователям добавить ключ, изменяющий размер «IRPStackSize». Это неправильное решение для устранения проблемы в Windows 7. Не применяйте его
Проблемы получения доступа к ресурсам, защищенным паролем, из Windows
Обратите внимание, что это должно быть добавлено в локальный файл smb.conf, а не в файл сервера
# lanman fix client lanman auth = yes client ntlmv2 auth = no
Диалоговое окно появляется с большой задержкой
У меня была проблема, связанная с тем, что диалоговое окно для ввода пароля появлялось с задержкой около 30 секунд, когда я пытался установить соединение из Windows XP/Windows 7. Когда я посмотрел файл error.log на сервере, я увидел:
[2009/11/11 06:20:12, 0] printing/print_cups.c:cups_connect(103) Unable to connect to CUPS server localhost:631 - Interrupted system call
Эта опция предотвращает поиск cups и файла /etc/printcap:
printing = bsd printcap name = /dev/null
Ошибка: Failed to retrieve printer list: NT_STATUS_UNSUCCESSFUL
Если вы являетесь домашним пользователем, используете samba исключительно для организации общего доступа к файлам с сервера или NAS и не заинтересованы в организации общего доступа к принтерам, вы можете исправить эту ошибку, добавив следующие строки в файл /etc/samba/smb.conf:
load printers = No printing = bsd printcap name = /dev/null disable spoolss = Yes
Перезапустите samba:
systemctl restart smbd
…проверьте ваши логи:
cat /var/log/samba/smbd.log
и больше ошибка не должна появляться.
Не удается предоставить общий доступ к папке
Проблема проявляется в том, что, когда вы пытаетесь предоставить общий доступ к папке через Dolphin (файловый менеджер), и вначале, вроде бы, все работает нормально, после перезапуска Dolphin иконка ресурса исчезла из папки, а в терминале (Konsole) вы видите следующий вывод:
‘net usershare’ returned error 255: net usershare: usershares are currently disabled
Для решения проблемы включите пользовательские общие ресурсы, как это описано в разделе .
И вы используете firewall (iptables), поскольку не доверяете вашей локальной (школа, университет, отель) сети. Это может происходить по следующей причине: когда smbclient просматривает локальную сеть, он посылает широковещательный запрос на udp-порт 137. Затем серверы сети отвечают вашему клиенту, но, поскольку исходный адрес ответа отличается от адреса назначения, который видел iptables при отправке запроса, iptables не признает ответ как «установленное соединение» или «относящийся к запросу», и, следовательно, пакет отбрасывается. Возможное решение — добавление:
iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns
в вашу конфигурацию iptables.
Подключение к серверу завершилось неудачей: (Error NT_STATUS_UNSUCCESSFUL)
Вероятно, вы указываете неправильное имя сервера. Чтобы узнать его, запустите на сервере команду и найдите строку «Transient hostname».
Administrator
- The Administrator user is a member of the Administrators group, and thus inherits dministrators group privileges. When an MS Windows NT4/200x/XP machine is made a domain member, the “Domain Admins” group of the PDC is added to the local Administrators group of the workstation. Every member of the Domain Admins group inherits the rights of the local Administrators group when logging on the workstation.
- The following steps describe how to make Samba PDC users members of the Domain Admins group.
- Create a UNIX group (usually in /etc/group); let’s call it domainadmin.
addgroup domainadmin
- Add to this group the users that must be “Administrators”. For example, if you want joe, john, and mary to be administrators, your entry in /etc/group will look like this:
domainadmin:x:502:joe,john,mary
- Map this domadm group to the “Domain Admins” group by executing the command:
root# net groupmap add ntgroup="Domain Admins" unixgroup=domainadmin rid=512 type=d
Now joe, john, and mary are domain administrators.
ШАГ 6: Утилиты и диагностика Samba
# testparm Load smb config files from etcsambasmb.conf Loaded services file OK. Server role: ROLE_STANDALONE
-
smbget позволяет скачивать с windows, linux (д.уст. samba) файлы через Что такое протокол SMB протокол. Скачать рекурсивно все директории и файлы:
smbget -Rr smb://ip_addr/share
-
smbclient — утилита для подключения к общедоступным папкам.
-
Отобразить общедоступные ресурсы на удаленном хосте:
smbclient -L ip_addrhostname
-
Посмотреть «шары» локально на стороне сервер
smbclient -L 127.0.0.1
-
Просмотреть папку vip под пользователем tatyana
$ smbclient \\\\10.26.95.220\\vip -U tatyana
-
Отобразить общедоступные ресурсы на удаленном хосте:
-
nbtscan
nbtscan ip_addr разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba. nmblookup -A ip_addr
simple working smb.conf
- It is time to create a smb.conf
-
Copy and paste this into your smb.conf. Change workgroup and netbios name.
- This configuration will get your domain up and running in 30 seconds.
#Domain name workgroup = yourdomainname #The Server Name netbios name = servername #server string = Samba #Time server, Workstations will set their time by this server time server =yes passdb backend = tdbsam #SECURITY AND LOGIN SETTINGS #This must be a user in PDC security = user bind interfaces only = yes #Windows XP/2000 encrypt passwords = yes #Login in settings. domain logons = Yes #Error Logs, Comment it out when you in production. log level = 3 #PDC and MASTER BROWSER SETTINGS #os level = 64 #Windows for master PDC. Highers windows can get is 32 preferred master = yes #local master = yes domain master = yes ;This defines it as the Primary Domain Controller #Add delete users on linux and samba (keeps linux and samba accounts in sync) add user script = /usr/sbin/useradd -m %u add machine script = /usr/sbin/useradd -s /bin/false/ -d /var/lib/nobody %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 #User Profiles and Home directory. logon drive = H: logon path = logon home = logon script = netlogon.bat #Login script. Location is defined in #Define user mappings. root = Administrator #You don't need this if you have created Administrator SMB user. username map = /etc/samba/smbusers wins support = yes passwd program = /usr/bin/passwd %u # --- shares --- comment = Domain Logon Service path = /home/samba/netlogon valid users = %U admin users = Administrator read only = no browseable = no write list =@admins guest ok = Yes #For read only purposes. File is not locked per user. locking = no #If you want to set home directory somwhere other thean the unix home use below path. # path = \\otherservername\%U volume = %U Home comment = Home Folder valid users = %S read only = No browseable = No public = no create mode = 0750 comment = All Printers path = /var/spool/samba guest ok = Yes printable = Yes browseable = No #These are Optional if you want to use them comment = Application Files path = /apps admin users = Administrator read only = No comment = Application Files path = /data admin users = Administrator read only = No
This samba file will allow a user to log into samba server. Each user will have its own H drive. Apps,Data folders are shared. TDBSAM database is used for authentication. It will use Local Profiles, which means the users settings are stored on his/her computer.
Как настроить PAM в Linux
Все конфигурационные файлы PAM для различных приложений находятся в папке /etc/pam.d. Давайте посмотрим на конфигурационный файл для утилиты sudo:
Каждая строчка файла состоит из нескольких полей:
тип обязательность модуль параметры
Разберем подробнее:
- Первое поле — тип, определяет какой тип запроса к PAM надо выполнить. Существует четыре различных типа запроса auth (проверка данных входа, например, логина и пароля), account (проверка не истёк ли пароль пользователя), password (обновление пароля), и session (обслуживание сессии, например, логгирование и монтирование папок).
- Второе поле определяет как нужно интерпретировать результат, возвращённый модулем PAM. Доступно тоже несколько возможных вариантов: required (тест должен быть обязательно пройден, но следующие строки тоже будут проверяться), requisite (аналогично required, только если тест не проходит, то следующие строки уже не проверяются), sufficient (противоположно requisite, если тест проходит, то следующие строки уже не проверяются), optional (проваленные тесты игнорируются).
- Третье и четвертое поле — это название библиотеки модуля и её параметры. Всё это надо выполнить для выполнения теста авторизации или действия.
Кроме того, существуют директивы include, которые включают строки из других файлов так, как будто они были написаны в этом файле. Файл настройки sudo кажется совсем коротким, но в него включаются другие файлы. Давайте посмотрим ещё на файл /etc/pam.d/common-auth:
Здесь можно видеть более расширенный синтаксис параметра обязательности. Он позволяет лучше понять как всё это работает. Давайте его рассмотрим:
Модули PAM могут возвращать около 30-ти значений и они зависят от выбранного типа (account/auth/session…), вот они все: success, open_err, symbol_err, service_err, system_err, buf_err, perm_denied, auth_err, cred_insufficient, authinfo_unavail, user_unknown, maxtries, new_authtok_reqd, acct_expired, session_err, cred_unavail, cred_expired, cred_err, no_module_data, conv_err, authtok_err, authtok_recover_err, authtok_lock_busy, authtok_disable_aging, try_again, ignore, abort, authtok_expired, module_unknown, bad_item, conv_again, incomplete и default. Последнее, default, означает все поля, которые явно не заданы.
В качестве действия могут быть указанны такие значения:
- ignore — не влияет на общий код возврата в приложение;
- bad — расценивать это значение как свидетельство сбоя модуля;
- die — аналогично bad, только сразу возвращать управление в приложение;
- ok — значение должно влиять на общий возвращаемый результат, переопределяет общий результат если он раньше был успешен, но не отменяет сбой;
- done — аналогично ok, только управление сразу возвращается приложению.
Таким образом, те четыре варианта обязательности, которые мы рассматривали выше можно описать вот так:
- required:
- requisite:
- sufficient:
- optional:
Здесь:
- success — модуль вернул состояние успешно, поскольку значение ok, это состояние будет учтено если ни один предыдущий модуль не дал сбоя;
- new_authtok_reqd — модуль сообщает, что пароль пользователя желательно обновить;
- ignore — модуль просит игнорировать его результат, игнорируем;
- default — все остальные возвращаемые значение расцениваем как сбой.
Обратите внимание. что модуль возвращает только одно определенное значение и уже к нему применяется действие
Чтобы закрепить всё это на практике давайте рассмотрим как запретить авторизацию от имени пользователя losst на компьютере с помощью PAM. Для этого можно воспользоваться модулем /lib/security/pam_listfile.so. Он позволяет ограничить доступ для пользователей на основе файла со списком. Откройте файл /etc/pam.d/sshd и добавьте туда такую строчку:
Здесь мы используем тип запроса auth, обязательность required и указанный выше модуль. Вот его опции и их значения:
- onerr=succeed — если возникает ошибка, доступ разрешить;
- item=user — указывает, что в файле конфигурации находятся логины пользователей;
- sense=deny — действие, если логин пользователя найден в файле;
- file=/etc/denyusers — файл с логинами пользователей, для которых надо запретить доступ.
Теперь в файл /etc/denyusers добавьте имя пользователя losst, естественно, такой пользователь должен существовать в системе. Затем попробуйте перейти в любую консоль и авторизоваться от его имени. У вас ничего не выйдет, а в логе /var/log/security или /var/log/auth.log будет сообщение об ошибке:
А если эту строчку закомментировать, то всё снова заработает.
Migrate User Accounts
We will user a script to migrate the user accounts
net rpc vampire -S -W -U Administrator
So in my case it would be:
net rpc vampire -S domaincomputername -W xyzdomain -U Administrator
You should see something like:
Fetching DOMAIN database Creating unix group: 'Domain Admins' Creating unix group: 'Domain Users' Creating unix group: 'Domain Guests' Creating unix group: 'Claims' Creating unix group: 'Accounting' Creating account: Administrator Creating account: Guest ... Creating unix group: 'Administrators' Creating unix group: 'Backup Operators' Creating unix group: 'Guests' Creating unix group: 'Print Operators' Creating unix group: 'Replicator' Creating unix group: 'Server Operators' Creating unix group: 'Users'
Double check your users have created. Use this command.
pdbedit -L
- Shutdown your old domain. You might need it later so don’t distroy it just yet.
- Edit smb.conf and change or add these two things.
domain master = yes wins support = yes}
Now restart Samba
/etc/init.d/samba restart
Now Login with your client workstation.
Заключение
При помощи Samba мы создали мультиплатформенные сетевые ресурсы и протестировали доступ к ним. Ресурсы Samba очень распространены и могут использоваться различными приложениями. Например, VLC Player может проигрывать музыку и видео из ваших ресурсов Samba, а утилита резервного копирования BackupPC — записывать туда резервные копии.
- https://1cloud.ru/help/network/nastroika-samba-v-lokalnoj-seti
- https://interface31.ru/tech_it/2019/06/nastroyka-faylovogo-servera-samba-na-platforme-debian-ubuntu.html
- https://admin812.ru/kak-ustanovit-i-nastroit-samba-v-ubuntu.html
- https://andreyex.ru/ubuntu/kak-ustanovit-i-nastroit-server-samba-na-ubuntu-16-04-dlya-obshhego-dostupa-k-fajlam/
- https://ITProffi.ru/ustanovka-i-nastrojka-samba-servera-i-klientov/
Заключение
Подводя итоги, можно сказать, что все вышеперечисленные способы в значительной мере отличаются друг от друга, но все они в равной степени позволяют осуществить настройку Samba в Ubuntu. Так, используя «Терминал», вы можете осуществить гибкую настройку, задавая все необходимые параметры как сервера Samba, так и создаваемых общедоступных папок. Программа System Config Samba точно так же позволяет настроить сервер и папки, но количество задаваемых параметров намного меньше. Основным же плюсом этого способа является наличие графического интерфейса, что в значительной мере облегчит настройку для рядового пользователя. Используя файловый менеджер Nautilus, вам не придется скачивать и устанавливать дополнительное программное обеспечение, но в некоторых случаях необходимо будет вручную проводить настройку сервера Samba, используя все тот же «Терминал».
Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.