Samba
— программа, которая позволяет обращаться к сетевым дискам на различных операционных системах по протоколу SMB/CIFS
. Имеет клиентскую и серверную части. Является свободным программным обеспечением, выпущена под лицензией GPL
.
Samba
работает на большинстве Unix-подобных систем, таких как GNU/Linux, POSIX-совместимых Solaris и Mac OS X Server, на различных вариантах BSD, в OS/2, Windows. Samba
включена практически во все дистрибутивы GNU/Linux, в том числе, конечно, и в Ubuntu.
Установка и настройка Samba
Чтобы сделать общую папку в Ubuntu Desktop достаточно щёлкнуть правой кнопкой мыши на папке и выбрать пункт меню «Опубликовать папку». Никаких конфигурационных файлов при этом править не надо. Всё описанное ниже относится только к ручной настройке, например, в случае создания файлового сервера.
Для установки достаточно открыть терминал и ввести:
Приложение будет автоматически загружено и установлено.
При помощи терминала сделаем резервную копию начального файла конфигурации:
Теперь можно отредактировать файл настроек /etc/samba/smb.conf
, для этого откройте его в любом текстовом редакторе с правами суперпользователя. Например, так:
Пример настройки Samba в качестве автономного файлового сервера с авторизацией:
# Sample configuration file for the Samba suite for Debian GNU/Linux. # # # This is the main Samba configuration file. You should read the # smb.conf(5) manual page in order to understand the options listed # here. Samba has a huge number of configurable options most of which # are not shown in this example # # Some options that are often worth tuning have been included as # commented-out examples in this file. # - When such options are commented with ";", the proposed setting # differs from the default Samba behaviour # - When commented with "#", the proposed setting is the default # behaviour of Samba but the option is considered important # enough to be mentioned here # # NOTE: Whenever you modify this file you should run the command # "testparm" to check that you have not made any basic syntactic # errors. #======================= Global Settings =======================
[global]
## Browsing/Identification ### # Change this to the workgroup/NT-domain name your Samba server will part of
workgroup
= WORKGROUP# server string is the equivalent of the NT Description field
server string
= %h server (Samba, Ubuntu)# Windows Internet Name Serving Support Section: # WINS Support - Tells the NMBD component of Samba to enable its WINS Server
wins support
= no# WINS Server - Tells the NMBD components of Samba to be a WINS Client # Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
; wins server = w.x.y.z
# This will prevent nmbd to search for NetBIOS names through DNS.
dns proxy
=no
#### Networking #### # The specific set of interfaces / networks to bind to # This can be either the interface name or an IP address/netmask; # interface names are normally preferred
; interfaces = 127.0.0.0/8 eth0
# Only bind to the named interfaces and/or networks; you must use the # 'interfaces' option above to use this. # It is recommended that you enable this feature if your Samba machine is # not protected by a firewall or is a firewall itself. However, this # option cannot handle dynamic or non-broadcast interfaces correctly.
; bind interfaces only = yes
#### Debugging/Accounting #### # This tells Samba to use a separate log file for each machine # that connects
log file
= /var/log/samba/log.%m# Cap the size of the individual log files (in KiB).
max log size
= 1000# If you want Samba to only log through syslog then set the following # parameter to 'yes'.
; syslog only = no
# We want Samba to log a minimum amount of information to syslog. Everything # should go to /var/log/samba/log.{smbd,nmbd} instead. If you want to log # through syslog you should set the following parameter to something higher.
syslog
= 0# Do something sensible when Samba crashes: mail the admin a backtrace
panic action
= /usr/share/samba/panic-action %d####### Authentication ####### # Server role. Defines in which mode Samba will operate. Possible # values are "standalone server", "member server", "classic primary # domain controller", "classic backup domain controller", "active # directory domain controller". # # Most people will want "standalone sever" or "member server". # Running as "active directory domain controller" will require first # running "samba-tool domain provision" to wipe databases and create a # new domain.
server role
= standalone server# If you are using encrypted passwords, Samba will need to know what # password database type you are using.
passdb backend
= tdbsamobey pam restrictions
=yes
# This boolean parameter controls whether Samba attempts to sync the Unix # password with the SMB password when the encrypted SMB password in the # passdb is changed.
unix password sync
=yes
# For Unix password sync to work on a Debian GNU/Linux system, the following # parameters must be set (thanks to Ian Kahan < for # sending the correct chat script for the passwd program in Debian Sarge).
passwd program
= /usr/bin/passwd %upasswd chat
= *Entersnews*spassword:* %n *Retypesnews*spassword:* %n *passwordsupdatedssuccessfully* .# This boolean controls whether PAM will be used for password changes # when requested by an SMB client instead of the program listed in # 'passwd program'. The default is 'no'.
pam password change
=yes
# This option controls how unsuccessful authentication attempts are mapped # to anonymous connections
map to guest
= bad user########## Domains ########### # # The following settings only takes effect if 'server role = primary # classic domain controller', 'server role = backup domain controller' # or 'domain logons' is set # # It specifies the location of the user's # profile directory from the client point of view) The following # required a [profiles] share to be setup on the samba server (see # below)
; logon path = \%Nprofiles\%U
# Another common choice is storing the profile in the user's home directory # (this is Samba's default)
; logon path = \%N\%Uprofile
# The following setting only takes effect if 'domain logons' is set # It specifies the location of a user's home directory (from the client # point of view)
; logon drive = H:
; logon home = \%N\%U
# The following setting only takes effect if 'domain logons' is set # It specifies the script to run during logon. The script must be stored # in the [netlogon] share # NOTE: Must be store in 'DOS' file format convention
; logon script = logon.cmd
# This allows Unix users to be created on the domain controller via the SAMR # RPC pipe. The example command creates a user account with a disabled Unix # password; please adapt to your needs
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
# This allows machine accounts to be created on the domain controller via the # SAMR RPC pipe.
# The following assumes a "machines" group exists on the system; add machine script = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
# This allows Unix groups to be created on the domain controller via the SAMR
# RPC pipe.
; add group script = /usr/sbin/addgroup --force-badname %g
############ Misc ############
# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
; include = /home/samba/etc/smb.conf.%m
# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
; idmap uid = 10000-20000
; idmap gid = 10000-20000
; template shell = /bin/bash
# Setup usershare options to enable non-root users to share folders
# with the net usershare command.
# Maximum number of usershare. 0 (default) means that usershare is disabled.
; usershare max shares = 100
# Allow users who've been granted usershare privileges to create
# public shares, not just authenticated ones
usershare allow guests = yes
#======================= Share Definitions =======================
# Un-comment the following (and tweak the other settings below to suit)
# to enable the default home directory shares. This will share each
# user's home directory as \serverusername
;[homes]
; comment = Home Directories
; browseable = no
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
; read only = yes
# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
; create mask = 0700
# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
; directory mask = 0700
# By default, \serverusername shares can be connected to by anyone
# with access to the samba server.
# Un-comment the following parameter to make sure that only "username"
# can connect to \serverusername
# This might need tweaking when using external authentication schemes
; valid users = %S
# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; read only = yes
# Un-comment the following and create the profiles directory to store
# users profiles (see the "logon path" option above)
# (you need to configure Samba to act as a domain controller too.)
# The path below should be writable by all users so that their
# profile directory may be created the first time they log on
;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700
[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
; write list = root, @lpadmin
#======================= Share Definitions =======================
# Un-comment the following (and tweak the other settings below to suit)
# to enable the default home directory shares. This will share each
# user's home director as \serverusername
;[homes]
; comment = Home Directories
; browseable = no
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
; read only = yes
# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
; create mask = 0700
# By default, \serverusername shares can be connected to by anyone
# with access to the samba server. Un-comment the following parameter
# to make sure that only "username" can connect to \serverusername
# The following parameter makes sure that only "username" can connect
#
# This might need tweaking when using external authentication schemes
; valid users = %S
# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
; comment = Network Logon Service
; path = /home/samba/netlogon
; guest ok = yes
; read only = yes
# Un-comment the following and create the profiles directory to store
# users profiles (see the "logon path" option above)
# (you need to configure Samba to act as a domain controller too.)
# The path below should be writable by all users so that their
# profile directory may be created the first time they log on
;[profiles]
; comment = Users profiles
; path = /home/samba/profiles
; guest ok = no
; browseable = no
; create mask = 0600
; directory mask = 0700
# [printers]
# comment = All Printers
# browseable = no
# path = /var/spool/samba
# printable = yes
# guest ok = no
# read only = yes
# create mask = 0700
# Windows clients look for this share name as a source of downloadable
# printer drivers
# [print$]
# comment = Printer Drivers
# path = /var/lib/samba/printers
# browseable = yes
# read only = yes
# guest ok = no
# guest ok = no
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
; write list = root, @lpadmin
# A sample share for sharing your CD-ROM with others.
;[cdrom]
; comment = Samba server's CD-ROM
; read only = yes
; locking = no
; path = /cdrom
; guest ok = yes
# The next two parameters show how to auto-mount a CD-ROM when the
# cdrom share is accesed. For this to work /etc/fstab must contain
# an entry like this:
#
# /dev/scd0 /cdrom iso9660 defaults,noauto,ro,user 0 0
## The CD-ROM gets unmounted automatically after the connection to the
#
# If you don't want to use auto-mounting/unmounting make sure the CD
# is mounted on /cdrom
#
; preexec = /bin/mount /cdrom
; postexec = /bin/umount /cdrom
; Шара жесткого диска
; Имя шары, видно у клиентов
[Shara]
; Путь к расшариваемому диску
path = /var/samba
; Можно ли просматривать
browseable = yes
read only = no
guest ok = yes
create mask = 0644
directory mask = 0755
; Привязка к определенному имени пользователя или группе, имена через пробел
; force user = user1 user2
; force group = group1 group2
; Еще один жесткий диск, по аналогии с тем что выше
[Pupkin]
path = /home/Pupkin/samba
browseable = no
read only = no
guest ok = no
create mask = 0644directory mask = 0755
force user = pupkin
Теперь надо разобраться с пользователями.
Samba использует пользователей которые уже есть в системе, возьмем для примера имя user, допустим что он уже есть в системе, надо внести его в базу данных SMB и назначить пароль для доступа к общим ресурсам, сделаем это командой:
smbpasswd -a user
Вам будет предложено ввести пароль, пользователь будет добавлен в базу, теперь необходимо включить этого пользователя.
smbpasswd -e user
Далее создадим псевдоним для имени пользователя user что бы облегчить себе доступ с Windows машины на которой у нас например пользователь с именем Admin, для этого создадим и отредактируем файл /etc/samba/smbusers:
sudo touch /etc/samba/smbusers
sudo gedit /etc/samba/smbusers
Впишите в файл пару строк
# Unix_name = SMB_name1 SMB_name2
user = Admin
На этом настройка закончена, перезапустите Samba.
Для версии Ubuntu 10.04 воспользуйтесь командой:
sudo service smbd restart
Для более ранних версий используйте:
sudo /etc/init.d/samba restart
Теперь можно пользоваться общими ресурсами.
Общую дирректорию надо отдать никому поэтому
sudo chown nobody.nogroup /var/samba