> CentOS > CentOS教程 >

centos7 Samba配置 linux 和windows 互相共享访问

samba主要用于共享给windows,NFS主要用于linux之间(个人观点)

Samba需要的软件:

samba:主要提供了SMB服务所需的各种服务程序(smbd,nmbd)的文件档。

samba-client:提供了Linux作为Samba客户端时,所需的工作指令。

Samba-common:提供的是服务端和客户端都会使用到的数据,包括SAMBA的主要配置文件(smb.conf)和语法检验指令(testparm)等。

linux 共享给windows
1.  安装前检查是否已安装Samba
#rpm –qa | grep samba

2. #yum installsamba , yum会自动查找软件的关联性

3.  #vi /etc/samba/smb.conf:配置文件已键值对的形式存在

修改已有的参数

global部分:

workgroup     工作组名称(访问服务器的客户端电脑的工作组,注释1)

server string  主机的简易说明,可随意填写

unix charset  (Linux服务器上使用的编码,一般来说就是i18n)

doc charset   (Windows客户端的编码)

log file      登录档(一般设为默认就可以)

security      安全性参数, 包括(share, user, domain)

share: 不需要设置密码,任何人都可以访问

user: 使用samba服务本身的密码数据库

passdb backend  (user密码的数据库)

//参考例子

workgroup= MYGROUP  #注释1

serverstring = Samba Server Version %v

unixcharset=utf-8

doccharset=utf-8

logfile = /var/log/samba/log.%m

security= user

passdbbackend = tdbsam

分享资源部分:Share Definitions

[共享名称]      客户端看到的文件夹名称

comment    这个路径的说明

path       共享的Linux文件系统目录

browseable 是否让所有的用户看到

writable   是否可写人

read only  只读

public     默认yes

(writable 和read only 最后出现的为主要设定)

///////////////////

[myShare]

comment= myShare's share path

path=/usr/package

browseable= yes

writable= yes

public= yes

4. 修改共享目录可执行权限:

#chmod –R 777 [服务器共享的文件夹名称]

#-R对当前目录下所有文件及文件夹极其子目录及子文件,权限改为777 。读 写 运行

如 #chmod –R 777 /usr/package

5. 使用testparm命令检查配置是否正确

6. 为用户设定samba服务权限:#smbpasswd–a

[服务器已经存在的用户名称,如admin]

键入新密码,确认新密码(新密码不同于admin的登录密码,是windows进入共享目录的密码)

[以后添加共享可以不再添加用户,使用已经配置好的即可,如果修改密码则 #smbpasswd–a admin]

[samba使用脚本自动创建用户密码:#cat/etc/samba/sambaSettingPass.pwd | smbpasswd -a admin -s    

其中【sambaSettingPass.pwd】中密码:一定填写2行

123

123

使用之前请添加此文件的执行权限 chmod +x /etc/samba/sambaSettingPass.pwd

7. 启动samba服务,包含两个服务模块smbd 和 nmbd

centeros7及以上版本:

systemctlstart smb.service (启动服务)

systemctlstart nmb.service

systemctlenable smb.service   (开机运行服务)

systemctlenable nmb.service

8. samba服务需开放3个端口 分别为137,138, 139

nmbd这个deamon利用UDP需要开放137,138

smbd这个deamon利用TCP需要开放139,445(不一定存在)

方式:

#firewall-cmd--zone=public --add-port=137/UDP –-permanent

#firewall-cmd--zone=public --list-all

#firewall-cmd--reload

访问:\\ip\myshare


windows 共享给linux
1.linux查询“rpm -qa | grep samba-client”,或“yum list samba-client”之类的命令。 在linux下查看windows共享的文件夹smbclient -L//IP地址 -U 用户名

2.在/etc/fstab 中添加如下:(username可以是windows下的User组用户)

//192.168.1.111/shareTools    /usr/share/pictures/ cifs  defaults,auto,username=dell,password=123456   0   0

3.# mount –a   刷新fstab文件,如果不操作则无法挂载,添加或者更新后都需要此操作,或者重启电脑

4.linux访问:# mount -t cifs -o username=dell,password=123456,iocharset=utf8,codepage=cp936//192.168.1.111/shareTools/usr/roadsafe/pictures/

注意:“-o”表示挂载参数,常见的是需要提供共享的用户名和密码,另外需要注意的是iocharset和codepage,这两个参数是用来解决系统之间的字符编码转换的,如果出现乱码的情况,是需要调整这两个参数的,针对简体中文,使用utf8和cp936一般都可以解决问题。挂载完成之后,就可以像使用本地文件目录一样访问Windows共享文件夹和文件了。

常见问题:
1.  linux共享给windows,即使使用linux的root账户,依然不能在windows客户端拥有读写权限。

解决方法: 关闭setlinux对samba网络共享的限制,可以用setenforce 0 命令,强制修改。永久设置必须在/etc/sysconfig/selinux中添加设置 selinux=0【问题:客户端可以网络访问文件,但是不能插入文件】

通过#/usr/sbin/sestatus–v 可以查看状态,enabled即为开启

2.  windows共享给linux:

2.1   linux上通过“smbclient -L //IP地址 -U 用户名””不能查看的windows共享。

解决方法:windows上“控制面板\网络和 Internet\网络和共享中心\高级共享设置”选择【关闭密码保护共享】

2.2   可以查看到共享,但是linux没有读写权限

解决方法:文件夹--右键--属性--共享--“共享(S)”选择everyone,权限设置【读取/写入】--共享(H)



(责任编辑:IT)