一、用途:linux
文件共享:能够在Linux/Windows之间,相似于windows之间的网上邻居,能够直接访问文件并修改。ios
二、建立用户:数据库
用tdbsam方式创建samba用户数据库,可使用smbpasswd -a 来创建samba用户,不过要创建的用户必须是系统中存在的用户,不过咱们能够不用smbpasswd,用pdbedit命令来完成操做,它的参数不少这里列出几个经常使用的:vim
三、在Linux上测试windows
smbclient -L //192.168.1.144 -U username安全
[root@CentOS6 adduser]# smbclient -L //127.0.0.1 -U user1 Enter user1's password: Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9] Sharename Type Comment --------- ---- ------- homes Disk Home Directories IPC$ IPC IPC Service (Samba Server Version 3.6.23-42.el6_9) user1 Disk Home Directories Domain=[SAMBA3-SHARE] OS=[Unix] Server=[Samba 3.6.23-42.el6_9] Server Comment --------- ------- CENTOS6-SMB Samba Server Version 3.6.23-42.el6_9 Workgroup Master --------- ------- SAMBA3-SHARE CENTOS6-SMB
linux挂载smb服务器
sudo mount -o username=colorv,password=123456 //192.168.0.239/data2 /mnt/smb-data2/dom
四、协议、端口、进程tcp
1)没有使用相似TCP/IP之类的传输协议,所以不须要IP设置的。采用NetBIOS协议:主机在NetBIOS协议当中的定义为使用“NetBIOS Nmae“,每台主机必需要有不一样的NetBIOS Name才行。测试
2)(windows网上邻居:容许你登录,开放资源给你)samba经过两个服务来控制这两个步骤:
nmbd:该daemon用来管理工做组、NetBIOS Name等的解析。用到UDP13七、UDP138端口负责名称解析任务。['di:mən]守护进程
smdb:该daemon用来管理samba主机共享个的目录、文件、打印机等。用到TCP13九、tcp445(445不必定使用)传输数据
3)开放以上端口、启动以上两个服务
五、局域网链接方式
1)Peer/Peer(Workgroup, 对等模式)
各台电脑都是平等的,互相访问资源,此时须要知道对方电脑的用户名密码。
2)Domain model(主控模式)
由一台服务器,你们去访问服务器。
(samba能够实现于上术两种模式)
六、samba配置文件
/etc/samba/smb.conf
1)#和;都是注释
2)[global]
工做组、主机的NetBIOS名称、字符编码的显示、日志文件的设置、是否使用密码、密码验证机制等
workgroup = 工做组的名称:注意,工做组要相同
netbios name = 主机的NetBIOS名称,每部主句都不一样
server string = 主机的简易说明
display charset = 本服务器上面的显示编码,通常与unix charset相同
unix charset = 在linux服务器上面所使用的编码, /etc/sysconfig/i18n
dos charset = windows客户端的编码,gb2312写为cp936,(CMD:chcp命令查看)
log file = 日志文件存储位置,可以使用变量处理
max log size = 日志文件最大能达到多少Kbytes,
security = share、user、domain(安全程度:不须要密码、使用samba服务器自己的密码数据库,用户必须存在于linux帐户、使用外部服务器密码,也就是samba是客户端之意,此时须要提供password server = IP参数)
encrypt passwords = Yes 密码要加密,为默认
passdb back = 数据库格式,默认为tdbsam(/var/lib/samba/private/passwd.tdb)
# 跟防火墙的议题有关的设定
hosts allow = 127. 192.168.100.254 192.168.100.10 192.168.1.
3)[共享资源名称]
目录权限、谁能够浏览该目录、读写等
comment = 目录说明
path = 共享目录
browseable = 是否让全部用户看到这个项目
writalbe = (read only =)
create mode = 文件权限
directory mode = 目录权限(不要与系统目录权限冲突)
writelist = 用户或 @组,这个选项能够指定可以进入到此资源名称的特定用户
注:变量功能,eg
[home]
valid users = %S #容许的登录着:表示任何可登录的用户都可以登录的意思,若是是user1,homes就会自动变为[user1]
七、例子:
1)无密码
[root@www samba]# vim smb.conf
# 1. 先设定好服务器总体环境方面的参数 [global] # 与主机名有关的设定信息 workgroup = vbirdhouse netbios name = vbirdserver server string = This is vbird's samba server # 与语系方面有关的设定项目喔,为什么如此设定请参考前面的说明 unix charset = utf8 display charset = utf8 dos charset = cp950 # 与登陆文件有关的设定项目,注意变量 (%m) log file = /var/log/samba/log.%m max log size = 50 # 这里才是与密码有关的设定项目哩! security = share # 修改一下打印机的加载方式,不要加载啦! load printers = no # 2. 分享的资源设定方面:主要得将旧的批注,新的加入! # 先取消 [homes], [printers] 的项目,而后针对 /tmp 的设定,可浏览且可写入喔 [temp] <==分享资源名称 comment = Temporary file space <==简单的解释此资源 path = /tmp <==实际 Linux 分享的目录 writable = yes <==是否可写入?在此例为是的 browseable = yes <==能不能被浏览到资源名称 guest ok = yes <==单纯分享时,让用户随意登入的设定值
testparm (-v)检查配置文件,如有中括号表示有问题(这个不台清楚了)
开启服务、开机自启、查看端口(端口是自动开放吗,这个问题好幼稚吗)
本机测试,见上边(//127.0.0.1)
linux挂载:mount -t cifs //127.0.0.1/temp /mnt,而后df能看到
2)密码user
[root@www ~]# vim /etc/samba/smb.conf [global] workgroup = vbirdhouse netbios name = vbirdserver server string = This is vbird's samba server unix charset = utf8 display charset = utf8 dos charset = cp950 log file = /var/log/samba/log.%m max log size = 50 load printers = no # 与密码有关的设定项目,包括密码档案所在格式喔! security = user <==这行就是重点啦!改为 user 层级 passdb backend = tdbsam <==使用的是 TDB 数据库格式! # 2. 分享的资源设定方面:删除 temp 加入 homes 与 project [homes] <==分享的资源名称 homes是最特殊的资源目录名称! comment = Home Directories browseable = no <==除了使用者本身外,不可被其余人浏览 writable = yes <==挂载后可擦写此分享 create mode = 0664 <==创建档案的权限为 664 directory mode = 0775 <==创建目录的权限为 775 [project] <==就是那三位使用者的共享资源 comment = smbuser's project path = /home/project <==实际的 Linux 上面的目录位置 browseable = yes <==可被其余人所浏览到资源名称(非内容) writable = yes <==能够被写入 write list = @users <==写入者有哪些人的意思:@用户组 # 2. 每次改完 smb.conf 你都须要从新检查一下语法正确否! [root@www ~]# testparm
注意共享目录的用户组,权限等设置!
添加samba帐户(先linux帐户)
可能须要修改selinux:setsebool -P samba_enable_home_dirs=1
八、以samba为例子,介绍selinux
1)找出与samba有关的selinuxguize:getsebool -a | grep samba
[root@www ~]# getsebool -a | grep samba samba_domain_controller --> off <==PDC 时可能会用到 samba_enable_home_dirs --> off <==开放用户使用家目录 samba_export_all_ro --> off <==容许只读文件系统的功能 samba_export_all_rw --> off <==容许读写文件系统的功能 samba_share_fusefs --> off samba_share_nfs --> off use_samba_home_dirs --> off <==相似用户家目录的开放! virt_use_samba --> off
2)设置:setseboll -P samba_enable_home_dirs=1解决没法挂载等问题
对共享目录使用 chcon -t samba_share_t /home/project
若是共享的目录不仅是samba,还包含ftp等,那就可能须要使用public_content_t这个你们都可以读取的类型才行。
其余:
iptable
利用 Quota 限制用户磁盘使用
sudo mount -t cifs -o username=colorv,password=123456 //192.168.0.239/data2 smb-dir/