samba是一个实现不同操作系统之间文件共享和打印机共享的一种SMB协议的免费软件。

samba软件结构:

/etc/samba/smb.conf                 #samba服务的主要配置文件

/etc/samba/lmhosts                #samba服务的域名设定,主要设置IP地址对应的域名,类似linux系统的/etc/hosts

/etc/samba/smbusers                #samba服务设置samba虚拟用户的配置文件

/var/log/samba                 #samab服务存放日志文件

/var/lib/samba/private/{passdb.tdb,secrets.tdb}     #存放samba的用户账号和密码数据库文档

1.安装

# yum -y install samba

2.配置
进入samba配置目录

# cd /etc/samba/
# mv smb.conf smb.conf.origin
# vi smb.conf
  • 输入如下内容
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = Samba
log level = 1                              //设置日志文件安全级别为1
log file = /var/log/samba/%m               //设置日志文件名称,%m以IP地址为名称
max log size = 50                         //设置日志文件最大容量50KB,0表示不限制
security = user
map to guest = bad user
passdb backend = tdbsam                  //定义用户后台类型                 

#============================ Share Definitions ==============================   
[FileShare]
comment  =  Home Directories
path = /home/fileshare
public = yes
writeable = yes
create mask = 0777
directory mask = 0777

[FamilyShare]
comment  =  Home Directories
path = /home/family
valid users = family
write list = family
printable = no
create mask = 0777
directory mask = 0777

注释:

workgroup 项应与 Windows 主机保持一致,这里是WORKGROUP

security、map to guest项设置为允许匿名用户访问

再下面有两个section,实际为两个目录,section名就是目录名(映射到Windows上可以看见)。

第一个目录名是FileShare,匿名、公开、可写

第二个目录吗是FamilyShare,限定family用户访问

3.创建用户和目录

# useradd family
# passwd  family
# smbpasswd -a family
# pdbedit –L 
# mkdir /home/{fileshare,family}
# chmod 777 /home/{fileshare,family}
# chown nobody:nobody /home/fileshare/
# chown family:family /home/family/

4.开启samba服务

# systemctl enable smb.service
# systemctl enable nmb.service
# systemctl start smb.service
# systemctl start nmb.service

5.添加防火墙规则

# firewall-cmd --permanent --zone=public --add-service=samba
# firewall-cmd --relaod

6.添加selinux规则
http://blog.sina.com.cn/s/blog_517e2e1b0100a8mn.html###

SAMBA rhel5中不关闭SeLinux配置SAMBA的方法(转)

将smb.conf中如下这两行启用(去掉行首的;号就可以了)
setsebool -P samba_domain_controller on
setsebool -P samba_enable_home_dirs on

这两行生效后,自己的home目录就可以正常读写了。

如果想将/home/samba/temp目录设置成完全的共享就应该在字符状态写输入:

chcon -t samba_share_t /home/samba/temp

同时不要忘记将/home/samba/temp目录属性设置成777 就可以了。其它和以前的FC版本应该没有什么区别了。

默认的,SELinux禁止网络上对Samba服务器上的共享目录进行写操作,即使你在smb.conf中允许了这项操作。
假设你已经配置了共享目录/share并允许用户进行读写,而你又不想关闭SELinux的话,可以试试以下操作:

程序代码:

/usr/sbin/setsebool -P allow_smbd_anon_write=1

chcon -t public_content_rw_t /share

其中第一条语句设置SELinux放行标记了public_content_rw_t的内容,第二条语句把欲共享的/share目录标记为public_content_rw_t。

[root@localhost ~]# setsebool -P allow_smbd_anon_write=1
[root@localhost ~]# getsebool -a|grep samba
[root@localhost ~]# getsebool -a|grep smb

++++++++++++++++++++++++++++++++++++++++++++++++++++

/usr/sbin/setsebool samba_export_all_rw on

$IPT -A INPUT -p tcp –dport 139 -j ACCEPT

++++++++++++++++++++++++++++++++++++++++++++++++++++

http://guoyueheng148.blog.163.com/blog/static/6016709120102151913609/
samba服务用到的端口是以下四个:

UDP 137

UDP 138

TCP 139

TCP 445

如果允许用户访问共享服务,防火墙需开放这四个端口。

`