Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。SMB是基于客户机/服务器型的协议,因而一台Samba服务器既可以充当文件共享服务器,也可以充当一个Samba的客户端
Samba的主配置文件为/etc/samba/smb.conf
#==================Global Settings ===================
[global]
workgroup = WORKGROUP
说明:设定 Samba Server 所要加入的工作组或者域。
server string = Samba Server Version %v
说明:设定 Samba Server 的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号。
netbios name = smbserver
说明:设置Samba Server的NetBIOS名称。如果不填,则默认会使用该服务器的DNS名称的第一部分。netbios name和workgroup名字不要设置成一样了。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
说明:设置Samba Server监听哪些网卡,可以写网卡名,也可以写该网卡的IP地址。
hosts allow = 127. 192.168.1. 192.168.10.1
说明:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny 与hosts allow 刚好相反。
例如:hosts allow=172.17.2.EXCEPT172.17.2.50
max connections = 0
说明:max connections用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
log file = /var/log/samba/log.%m
说明:设置Samba Server日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server的机器都单独记录一个日志文件。如果pc1、pc2访问过Samba Server,就会在/var/log/samba目录下留下log.pc1和log.pc2两个日志文件。
security = user
说明:设置用户访问Samba Server的验证方式,一共有四种验证方式。
passdb backend = tdbsam
说明:passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
2.tdbsam: 该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库 可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的 参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
encrypt passwords = yes/no
说明:是否将认证密码加密。因为现在windows操作系统都是使用加密密码,所以一般要开启此项。不过配置文件默认已开启。
smb passwd file = /etc/samba/smbpasswd
说明:用来定义samba用户的密码文件。smbpasswd文件如果没有那就要手工新建。
username map = /etc/samba/smbusers
说明:用来定义用户名映射,比如可以将root换成administrator、admin等。不过要事先在smbusers文件中定义好。比如:root = administrator admin,这样就可以用administrator或admin这两个用户来代替root登陆Samba Server,更贴近windows用户的习惯。
guest account = nobody
说明:用来设置guest用户名。
共享参数:
#================== Share Definitions ==================
[共享名]
comment = 任意字符串
说明:comment是对该共享的描述,可以是任意字符串。
path = 共享目录路径
说 明:path用来指定共享目录的路径。共享目录为share,就写完整目录/home/share
browseable = yes/no
说明:browseable用来指定该共享是否可以浏览。
writable = yes/no
说明:writable用来指定该共享路径是否可写。
available = yes/no
说明:available用来指定该共享资源是否可用。
admin users = 该共享的管理者
说明:admin users用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。
例如:admin users =david,sandy(多个用户中间用逗号隔开)。
valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = david,@dave,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@组名”表示。)
invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)
write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = david,@dave
public = yes/no
说明:public用来指定该共享是否允许guest账户访问。
guest ok = yes/no
说明:意义同“public”。
Samba安装好后,使用testparm命令可以测试smb.conf配置是否正确。
将需要映射的路径的用户和属组必须和配置文件中的用户一致;
useradd twx #创建用户
chmod -R 777 /home/share #为share下所有的文件加上权限
chown -R twx:twx /home/share #用share下的所有文件用户和属组改为twx
1.安装
sudo apt-get install samb
2.修改配置文件:vi /etc/samba/smb.conf
[share]
comment = Share Folder require password
browseable = yes
path = /home/share //Linux下共享文件夹的路径
valid users = root //在windows下通过root账户登录
public = yes
writable = yes
available = yes
保存退出
3.添加用户到smb,也就是配置文件中valid users的用户,也必须是linux内的用户
sudo smbpasswd -a root //将sc添加到samba用户
sudo smbpasswd -e root //使能sc用户
查看samba服务器中已拥有哪些用户:
pdbedit -L
查看Linux中所有用户:
cat /etc/passwd
查看Linux中所有组:
cat /etc/group
4.重启smb
service smbd start
service smbd stop
service smbd restart
service smbd status
5.在windos界面映射网络磁盘,并可以使用
登录的账号为设置的smb的用户和密码
1.yum安装smb
yum install samba samba-client samba-swat
2.关闭防火墙及关闭防火墙开机自启
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.
3.永久关闭SeLinux,需要重启机器
修改配置文件/etc/selinux/config,将SELINU置为disabled
重启后,查看SeLinux状态
[root@localhost ~]# sestatus
SELinux status: disabled
4.修改配置文件/etc/samba/smb.conf
[share]
comment = Share Folder require password
browseable = yes
path = /home/share //Linux下共享文件夹的路径
valid users = root //在windows下通过root账户登录
public = yes
writable = yes
available = yes
5.添加用户到smb
sudo smbpasswd -a root //将sc添加到samba用户
sudo smbpasswd -e root //使能sc用户
6.重启smb
systemctl start smb
systemctl stop smb
systemctl restartsmb
systemctl status smb
systemctl enable smb #设置开机自启动
7.映射到windos
映射方法与unbuntu一致
例1 共享文件夹配置:
#======================= Global Settings =====================================
[global] //该设置与Samba服务整体运行环境有关,它的设置项目针对所有共享资源
# ----------------------- Network Related Options -------------------------
workgroup = WORKGROUP //定义工作组,也就是windows中的工作组概念
server string = WZQ Samba Server Version %v //定义Samba服务器的简要说明
netbios name = WZQSamba //定义windows中显示出来的计算机名称
# --------------------------- Logging Options -----------------------------
log file = /var/log/samba/log.%m //定义Samba用户的日志文件,%m代表客户端主机名
//Samba服务器会在指定的目录中为每个登陆主机建立不同的日志文件
# ----------------------- Standalone Server Options ------------------------
security = user
map to guest = Bad User //共享级别,用户不需要账号和密码即可访问
#============================ Share Definitions ==============================
[public] //设置针对的是共享目录个别的设置,只对当前的共享资源起作用
comment = Public Stuff //对共享目录的说明文件,自己可以定义说明信息
path = /share //用来指定共享的目录,必选项
public = yes //所有人可查看,等效于guest ok = yes
例2 特有的用户才可以登入
#======================= Global Settings =====================================
[global]
# ----------------------- Network Related Options -------------------------
workgroup = WORKGROUP
server string = David Samba Server Version %v
netbios name = DavidSamba
# --------------------------- Logging Options -----------------------------
log file = /var/log/samba/log.%m
# ----------------------- Standalone Server Options ------------------------
#
# Scurity can be set to user, share(deprecated) or server(deprecated)
security = user //用户级别,由提供服务的Samba服务器负责检查账户和密码
#============================ Share Definitions ==============================
[public]
comment = Public Stuff
path = /share
public = yes
[ts] //ts 组目录,只允许ts组成员访问
comment = TS
path = /ts
valid users = @ts #将ts属组的用户加入