samba服务设置与访问共享文件夹

samba服务设置与访问共享文件夹

  • linux设置文件夹共享
  • windows连接共享文件夹(运行->//IP/route)
  • linux连接共享文件夹

1、基本服务安装与配置

  • linux环境下文件夹的共享是可以由samba提供这项服务,所以首先需要安装samba
yum install samba samba-client
  • 安装完成后,samba服务并未运行,要么手动启动服务,要么重启计算机。
  • 查找Samba服务名称并启动服务
rpm -ql samba | grep serivce
systemctl start smb.service
systemctl start nmb.service
  • 启动samba服务后确定端口
nestat -atunp | grep "[sn]mb"
  • 确定samba运行时需要的端口为139/445(tcp)、137/138(udp),将这些端口全部放开
firewall-cmd --zone=public --add-port=139/tcp --permanent
firewall-cmd --zone=public --add-port=445/tcp --permanent
firewall-cmd --zone=public --add-port=137/udp --permanent
firewall-cmd --zone=public --add-port=138/udp --permanent
firewall-cmd --reload

2、配置共享文件夹

  • 编辑samba的配置文件/etc/samba/smb.conf,设置/root/java为共享文件夹,如下:
[global] #全局samba服务器全局设置,对整个服务器有效
    workgroup = WORKGROUP	#设置samba server需要加入的工作组或者域,当设置为WORKGROUP时,可以在网上共享邻居看到。
    security = user			#安全验证方式,share|user|server|domain,默认为user(需要提供用户名和密码,并由samba服务验证)

    passdb backend = tdbsam	#用户后台,smbpasswd|tdbsam|ldapsam,tdbsam:使用一个数据库文件来建立用户数据库(passdb.tdb),默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。也可以使用pdbedit命令来建立Samba账户。

    printing = cups			#打印机类型
    printcap name = cups	#指定打印机配置文件
    load printers = yes		#是否在开启 samba server 时即共享打印机。
    cups options = raw		

#########################共享文件夹的定义#####################################################
[homes]	#共享名称(特殊的,用户家目录。默认设置)
    comment = Home Directories
    valid users = %S, %D%w%S  #%S:当前服务名(如果存在), %D:当前用户所属域或工作组名称,
    browseable = No
    read only = No
    inherit acls = Yes

[printers] #共享名称 (默认设置)
    comment = All Printers
    path = /var/tmp
    printable = Yes
    create mask = 0600
    browseable = No

[print$] #共享名称,打印机驱动(默认设置)
    comment = Printer Drivers
    path = /var/lib/samba/drivers
    write list = @printadmin root
    force group = @printadmin
    create mask = 0664
    directory mask = 0775

#自定义共享文件夹
[java]	#共享名称,即客户端访问Samba服务器时浏览到的目录名,该名称不要求与本地目录名相同,但在当前Samba服务器必须唯一。如Windows访问共享文件夹时:\ip共享名称
    comment = share all		#提示信息,任意
    path = /root/java		#需要被共享的目录
    browseable = yes		#是yes/否no,在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
    writeable = yes			#允许写入
  • 配置文件修改完成后,重启samba服务后生效。
systemctl restart smb.service
  • 添加samba用户,才能在user的安全模式下访问,注意:samba不使用系统的用户和密码
smbpasswd -a root //映射系统用户到samba,并为该用户在samba服务中设置密码。

3、客户端访问共享文件夹

  • linux访问共享文件夹,以挂载到本地的方式访问
#挂载
mount -t cifs -o username="root",password="sambapasswd" //ip/共享名称 挂载目录
#卸载
umount 挂载目录
  • 直接访问共享目录
#前提:安装samba-client
smbclient -L //ip -U 用户名 #查看该用户在目的地址上可访问的共享文件夹
smbclient //ip/共享名称 -U 用户名
  • windows访问

4、客户端访问错误处理

  • windows访问报错“不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接 ”

1、cmd->net use 查看网络连接状况,找到关于共享文件夹的连接(远程名为 访问共享文件夹的地址)
2、删除:net use ip共享名 /del

  • windows访问报错:没有访问权限

vim /etc/sysconfig/selinux
->SELINUX=disabled