配置文件
共享配置文件在/etc/samba/smb.conf,修改此文件后可以用testparm来测试配置书写是否正确。
samba账户
samba会自己管理一组用户信息,但这些用户依赖于系统层面上的用户账户。如果创建了share这个samba用户,那么要保证linux系统本身也存在share用户,但双方的密码可以设置不同的内容。
添加samba用户指令:smbpasswd -a [user_name]
列出已有的samba用户:pdbedit -L
删除samba用户:smbpasswd -x [user_name]
可能影响samba的安全组件
主要有防火墙和selinux,防火墙根据linux系统不同可能有firewalld和iptables,两者并非互斥关系,如centos虽然用firewalld作为防火墙,但同时也有iptables规则表控制网络包传递(这种情况下只有作为防火墙的firewalld会对samba构成妨碍)。
以centos为例,防火墙部分可以选择直接关闭:
systemctl stop firewalld
chkconfig firewalld off
也可以选择添加放行规则:
firewall-cmd --list-services 检查允许的服务
firewall-cmd --permanent --add-service=samba 添加允许samba服务
firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 destination address=****/** accept'
firewall-cmd --reload 重载规则
selinux策略添加比较麻烦,直接取消强制性:
修改/etc/selinux/config,设置SELINUX=permissive,下次登录生效。命令行setenforce 0,本次登录实时生效。 默认情况下selinux会妨碍共享根目录时windows端的写入。
linux系统之间共享
共享内容提供方配置好共享路径后,内容获取方可以创建远程挂载来访问这些路径。挂载方式为cifs,需要安装有cifs-utils软件包。
挂载指令:mount -t cifs //[server_ip]/[share_name] [local_path] -o username=[samba_user] -o password=[samba_user_password]
linux向windows共享
注意linux端必须增加ntlm协议支持,具体是在/etc/samba/smb.conf的[global]端增加 ntlm auth = yes 选项,否则windows7访问用户会认证失败。
windows端可以直接用\\[server_ip]\[share_name]来临时访问共享内容,或者映射网络驱动器用以长期访问,不建议使用添加网络位置的方式,效果上和映射网络驱动器一样,但速度可能较慢。
断开已建立的用户连接
windows端:在cmd中net use * /del
linux端:smbstatus查看连接pid号,直接kill -9杀掉
让共享内容提供方支持软链接
在smb.conf的global端添加
follow symlinks = yes
wide links = yes
unix extensions = no
这样提供方在自己的共享路径下创建指向非共享路径的内容的软链接,内容获取方将看到软链接实际指向的源内容而非软链接本身。