Samba服务是基于类UNIX系统的SMB/CIFS协议工具,可以支持Linux与Windows系统之间文件共享。
服务端程序:
- testparm 检查smb.conf配置是否正确
- smbd Smb服务daemon
- nmbd NetBIOS名称服务daemon
- smbpasswd 配置账号密码
客户端程序
- smbmount 挂载远程共享目录
- smbclient 命令行访问工具,类似于FTP客户端
其他工具:smbstatus, smbumount, smbprint, smbprint.sysv, smbrun
NetBIOS Windows网络主机名称,最长为16个字符。是主机加入Widnows工作组使用的网络名。
安装
yum install samba.x86_64
最简配置
1.编辑配置文件:#/etc/samba/smb.conf
[global] workgroup = WORKGROUP server string = "MySamba" netbios name = "MySamba Server ip" security = share [public1] path = /home/mysamba #不要将mysamba目录设置到/home下某个子用户目录中,否则无法访问 public = yes writable = yes
2.设置共享目录的权限
chmod 777 /home/mysamba -R
3.重启samba服务,让修改后的配置文件生效
/etc/init.d/smb restart # start stop restart
其它启动方式
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
smbd [-D|--daemon] [-F|--foreground] [-S|--log-stdout] [-i|--interactive] [-V] [-b|--build-options]
[-d <debug level>] [-l|--log-basename <log directory>] [-p <port number(s)>] [-P <profiling level>]
[-s <configuration file>] [--no-process-group]
nmbd [-D|--daemon] [-F|--foreground] [-S|--log-stdout] [-i|--interactive] [-V] [-d <debug level>]
[-H|--hosts <lmhosts file>] [-l <log directory>] [-p|--port <port number>] [-s <configuration file>]
[--no-process-group]
4.访问
Windows系统直接在文件浏览器中输入: \192.168.1.88 就能看到名为public1的共享目录。
linux系统在文件浏览器中输入: smb://192.168.1.88
配置文件详解
/etc/samba/smb.conf
查看帮助:man smb.conf 或 文件内部注释
[global] #全局参数,整个系统的规则与公共变量 netbios name = pc-name #Windows网上邻居中显示的机器名 workgroup = 所属NT域名或工作组名称 server string = 主机描述信息 hosts allow = 192.168.1. 192.169.3. #允许哪些机器可以访问samba服务器 guest account = nobody invalid users = root
valid users = aaa bbb security = user #定义访问权限,从低到高依次为:share, user(连接需要账号) ,server. encrypt passwords = true #是否需要加密密码,Windows默认加密,Linux默认非加密,user安全级别为加密,share级别可不加密。 smb passwd file = /etc/samba/smbpasswd interfaces = 192.168.1.50/24 #配置smb服务所使用的网卡IP和子网掩码,如有多个网卡需要全部列出 name resolve order = host dns bcast #从机器netbios名称到IP地址的解析顺序,默认顺序为host lmhosts wins bcast。如果局域网有dns,
#可以设置为hsot dns bcast wins support = no public = yes #在网上邻居中是否可见 browseable = yes #在网上邻居中是否可见 printing = bsd #指定Linux使用哪个打印机守护进程(bsd, sysv, hpux, aix, qnx ,plp),同时向samba说明命令lpr和lpq的省确值 printcap name = /etc/printcap #打印机配置文件位置 load printers = no #是否加载printcap定义的所有打印机供浏览 log file = /var/log/samba/log.%m #定义日志文件 max log size = 1000 #日志文件最大值(KB) username map =/etc/samba/smbuser #客户机和服务器之间进行用户映射的信息,将window和linux用户映射为同一个账号。
#编码的配置
display charet = UTF-8
unix charset = UTF-8
dos charset = cp936
#其他
guset account = guestname
null password = yes
[ShareName] #共享资源配置,控制每个用户目录的共享权限。节点名字就是其他机器可以看到的“目录”名,可以自己定义
comment = 共享资源的描述
path = /home/samba
public = yes
browseable = yes #是否在网上邻居中出现
writable = no
create mask = 0700 #写文件时的属性
directory mask = 0700 #创建目录时的属性
printable = no
hosts allow = 10.1.1.3 10.1.2.
security = user
valid users = aaa bbb
/etc/passwd
samba账号配置,因为包含密码信息,所以拥有者需要为root,并且权限为600。
其中的账号必须是系统中已经存在的账号,但是samba登录密码和本机登录密码可以不一样。samba密码只能用于samba访问。
#username = samba_passwd
账号管理可以直接配置该文件,也可用smbpasswd命令配置。
smbpasswd -a username #添加账号,username必须是系统中存在的账号(如果没有需要用useradd命令新建用户)
smbpasswd -x username #删除账号
/etc/samba/smbuser
客户机和服务器用户映射
#linuxUser = user list
root = admin administrator #将Windows管理员账号映射为root用户
smbfs
可以通过mount和smbfs挂载远程的共享文件夹。(安装smbfs: yum install smbfs)
mount -t smbfs -o username=administrator,password=123456 //10.1.1.88/public1 /mnt/tmp
或
smbmount //10.1.2.88/public1 /mnt/tmp -o username=administrator
smbclient
smb客户端工具,命令行访问samba。
smbclient -L 10.1.1.88 #列出某个机器的共享文件夹(可跳过密码) smbclient -c "ls" //IP/share -U username #列出某个共享文件夹的内容 smbclient -c "ls" //IP/share -U username%passwd #同上,不需要输入密码 smbclient //IP/share -U username[%passwd] #登录samba服务器的共享目录,登陆后进入smb:>环境,
#可用ls, cd ,put ,get, help等命令。q或Ctrl+d退出。
图形配置工具
- system-config-samba
- 系统-系统管理-Samba
参考文档
http://blog.chinaunix.net/uid-9525959-id-2001825.html