背景:

  项目需求linux的一个目录,需要在两台windows目录上面进行同时共享。

  使用mount时发现,通过mount将同一个linux上面的目录挂载在两台windows机器上时,会出现文件隐藏的现场。

解决:

  使用samba实现linux和windows的文件共享

 

1.首先检查os是否安装好了samba。

linux samba共享权限设置 linux samba配置windows共享_linux

如图显示机器原来安装好了Samba的客户端,没有服务端。

yum进行安装服务端,方法如下:yum install samba* y 

可能出现冲突:

linux samba共享权限设置 linux samba配置windows共享_服务器_02

 

解决办法如下:yum install samba* y --skip-broken

linux samba共享权限设置 linux samba配置windows共享_linux_03

 安装完成!

2.在本地建立一个samba共享的目录文件夹(我使用的/mnt/patches)

linux samba共享权限设置 linux samba配置windows共享_linux samba共享权限设置_04

3.关闭samba服务器

linux samba共享权限设置 linux samba配置windows共享_服务器_05

由上面的查看结果可以看出此时samba服务没有开启,处于关闭状态;
如果没有关闭,使用service smb stop 命令关闭samba服务

 

4.修改/etc/samba/smb.cnf配置文件
(1)把/etc/samba/smb.cnf配置文件里的 security = user 修改为 security = share ;
   share即表示安全性为共享模式
(2)在/etc/samba/smb.cnf配置文件结尾加上如下配置内容

[ShareFolder]
comment = Share
path = /mnt/patches
public = yes
browseable = yes
writable = yes
;printable = no

配置说明:
[ShareFolder]       #共享目录的名字
comment = Thisismysambaserver!    #共享目录的说明,相当于注释
path = /home/ShareFolder       #共享目录的路径
public = yes                 #指定目录是否可以guest访问
browseable = yes             #指定目录是否可以容许浏览
writable = yes                #指定目录是否可以写(yes为可写,no为只可读)
;printable = no                #指定目录是否可以打印(yes为可打印,no为不可以打印)
#配置的内容前面加;相当于注释,这句不起作用

5.开启samba服务器

service smb start

 

6.共享子目录无法访问?解决如下

将security =  share 修改为 security = user;

 valid users=root

设置root用户的smb服务访问密码,输入命令:  smbpasswd   –a   root,输入密码

启动SMB服务

smb.conf文件详细配置,限定用户进行访问

#=======================GlobalSettings=====================================
[global]
workgroup=user                 将linux加入的工作组名
serverstring=Samba             这是服务器描述信息,方便标志资源。可以随便输入。
encryptpasswords=yes              表示是否对用户的密码进行加密,这里选择加密,安全!
public=yes                   定义一个共享是否对公共访问开放。当设置为yes时,在系统上没有帐户用户将基于所定义的客户帐户的属性来接收访问。
smbpasswdfile=/etc/samba/smbpasswd    这是账号密码的存放文件
netbiosname=mm              ssamba在外部访问该samba服务器时,显示的信息。
#---------------------------LoggingOptions-----------------------------
#logssplitpermachine
logfile=/var/log/samba/log.%m        log文件的存放位置。
#max50KBperlogfile,thenrotate
maxlogsize=0                  log文件的大小限制,设置为0表示不做限制。
#-----------------------StandaloneServerOptions------------------------
security=user               共享的安全级别,samba有四种安全等级:
share:                   用户不需要账户及密码即可登录samba服务器
user:                  由提供服务的samba服务器负责检查账户及密码(默认)
server:                    检查账户及密码的工作由另一台windows或samba服务器负责
domain:                 指定windows域控制服务器来验证用户的账户及密码)
passdbbackend=tdbsam

以上即为通用一般配置。

加入我们需要共享的目录为/mnt/patches

需要添加如下代码:

[rose]
comment=Thisismysambaserver!
path=/mnt/patches
validusers=testuser
public=yes
writable=yes

 

添加可以访问我们刚才设置共享目录的用户:testuser

1)建一个系统用户
1. [root@localhostsamba]#user add testuser(建一个名叫testuser的用户)  
2.  
3. [root@localhostsamba]#passwd testuser(给testuser用户添加密码)  
4.  
5. Changing password for user samba.  
6.  
7. New password:(密码要六位以上,不显示在屏幕上)  
8.  
9. BADPASSWORD:itdoesnotcontainenoughDIFFERENTcharacters  
10.  
11. Retypenewpassword:(确认密码)  
12.  
13. passwd:allauthenticationtokensupdatedsuccessfully

2)创建、更新/etv/samba/smbpasswd文件

1. [root@localhostsamba]#cat/etc/passwd|mksmbpasswd.sh>/etc/samba/smbpasswd

3)然后创建samba帐户

1. [root@localhostsamba]#smbpasswd-atestuser  
2.  
3. NewSMBpassword:  
4.  
5. RetypenewSMBpassword:  
6.  
7. Addedusertestuser.

重新启动smb服务

1. [root@ciscosamba]#servicesmbrestart  
2.  
3. ShuttingdownSMBservices:[OK]  
4.  
5. StartingSMBservices:[OK]  
6.  
7. [root@ciscosamba]#servicenmbrestart  
8.  
9. ShuttingdownNMBservices:[OK]  
10.  
11. StartingNMBservices:[OK]