Samba服务器

问:如何在linux下访问windows共享文件夹


Samba服务器可用于windows和Linux之间,局域网内。


一,Samba使用的daemons

nmbd
     用来管理工作组、NetBIOS name 等等的解析。主要利用UDP 协议开启port 137, 138 来负责名称解析的任务;
smbd
      主要功能就是用来管理SAMBA 主机分享的目录、档案与打印机等等。主要利用可靠的TCP 协议来传输数据,开放的端口为139 及445(不一定存在) 。

二,安装Samba  (yum  install  以下三个包)

samba
这个软件主要提供了SMB 服务器所需的各项服务程序(smbd及nmbd)、的文件档、以及其他与SAMBA 相关的logrotate配置文件及开机默认选项档案等;
samba-client
samba-client:这个软件则提供了当Linux 做为SAMBA Client 端时,所需要的工具指令,例如挂载SAMBA 文件格式的mount.cifs、取得树形图的smbtree 等等;
samba-common
这个软件提供的则是服务器与客户端都会使用到的数据,包括SAMBA  的主要配置文件(smb.conf)、语法检验指令(testparm) 等等;

三,分析配置文件

/etc/samba/smb.conf            Samba的主要配置文件

smb.conf这个配置文件其实可以分为两部份来看,
一个是主机信息部分,在smb.conf当中以[global] (全领域) 作为设定的依据;
另一个则是分享的信息,以个别的目录名称为依据。

【global】



workgroup = 工作组的名称:注意,主机群要相同;
server string = 主机的简易说明,这个随便写即可。
netbiosname = 主机的NetBIOS 名称,每部主机均不同,分享的主机名;



log file = 登录档放置的档案,文件名可能会使用变量处理;
max log size = 登录档最大仅能到多少Kbytes ,若大于该数字,则会被rotate 掉。


hosts allow:白名单


security = share, user, domain:三选一,这三个设定值分别代表
share:分享的数据不需要密码,大家均可使用(没有安全性,废弃)
user:使用SAMBA 服务器本身的密码数据库,密码数据库与底下的passdbbackend 有关;
domain:使用外部服务器的密码,亦即SAMBA 是客户端之意,如果设定这个项目,你还得要提供『password server = IP』的设定值才行(3.5之后废弃);

分享资源的相关参数设定[分享的名称]


[分享名称]:这个分享名称很重要,它是一个『代号』而已
comment:只是这个目录的说明而已
path:这个分享名称实际会进入的Linux 文件系统(目录)。也就是说看到的是[分享] 的名称,而实际操作的文件系统则是在path 里头所设定的。
browseable= yes     //是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取
guest ok:是否允许来宾用户访问,即不是属主属组的是否可以访问
writable:是否可以写入


smb.conf内的可用变量功能

%m:代表Client 端的NetBIOS 主机名喔!
%M:代表Client 端的Internet 主机名喔!就是HOSTNAME。
%L:代表SAMBA 主机的NetBIOS 主机名。
%H:代表用户的家目录。
%U:代表目前登入的使用者的使用者名称
%g:代表登入的使用者的组名。
%h:代表目前这部SAMBA 主机的HOSTNAME 喔!注意是hostname 不是NetBIOS name 喔!
%I:代表Client 的IP 咯。
%T:代表目前的日期与时间
%S:取代目前的设定项目值,
【homes】à共享名,共享资源能够看到的名字
valid users = %S,那个用户进来,就替换为那个用户


四,与之相关的设置

用testparm查阅smb.conf的语法设定正确性
在启动samba 之前,我们务必要了解到smb.conf里面语法是否正确,检验的方式使用testparm这个指令即可


关闭SELinux功能及防火墙(或添加规则):
setenforce0

启动Samba服务:
service smb restart (目录共享管理)
service nmb restart (名称解析服务)


添加samba账户
使用smbpasswd添加共享用户的常用方法:smbpasswd-a 添加用户(被添加用户必须是系统用户)smbpasswd-d 冻结用户(这个用户不能用了)
smbpasswd-e 恢复用户(将冻结的用户解冻)
smbpasswd-n 将用户密码设置为空
smbpasswd-x 删除用户

假设自我为客户端的检验(默认用lo 接口)
[root@www~]# smbclient-L [//主机或IP] [-U 使用者账号]
选项与参数:
-L :仅查阅后面接的主机所提供分享的目录资源;
-U :以后面接的这个账号来尝试取得该主机的可使用资源

利用类似FTP 的方式登入远程主机
[root@clientlinux~]# smbclient    //[IP|hostname]/资源名称     [-U  username]
# 意思是使用某个账号来直接登入某部主机的某个分享资源
举例如下:
[root@clientlinux~]# smbclient   //192.168.100.254/smb1   -U  smb1
Enter smb1's password:
Domain=[VBIRDHOUSE] OS=[Unix] Server=[Samba  3.5.4-68.el6_0.2]
smb: \> dir
# 在smb: \> 底下其实就是在//192.168.100.254/dmtsai这个目录底下,我们可以使用dir, get, put 等常用的ftp 指令来进行数据传输。

mount.cifs:直接挂载成为网络驱动器
使用smbclient一点也不方便,因为使用的是ftp 的功能语法,有点怪怪的~能不能像Windows 那样。
[root@clientlinux~]# mount -t cifs   //IP/分享资源     /挂载点    [-o  options]
选项与参数:
-o 后面接的参数(options) 常用的有底下这些:
username=你的登入账号:例如username=smb1
password=你的登入密码:需要与上面username 相对应

# 范例一:以smb1 的身份将其家目录挂载至/mnt/samba 中
[root@clientlinux~]# mkdir/mnt/samba
[root@clientlinux~]# mount -t cifs  //192.168.100.254/smb1  /mnt/samba  -o
 username=smb1,password=4321
[root@clientlinux~]# df
文件系统1K-区段已用可用已用% 挂载点
//192.168.100.254/smb1/
7104632 143368 6606784 3% /mnt/samba

smbtree:网络邻居显示模式
[root@clientlinux~]# smbtree  [-bDS]
选项与参数:
-b :以广播的方式取代主要浏览器的查询
-D :仅列出工作组,不包括分享的资源
-S :列出工作组与该工作组下的计算机名称(NetBIOS) 不包括各项资源目录


smbstatus:观察SAMBA 的状态
服务器端指令,主要的目的是查阅目前SAMBA 有多少人来联机,且哪些资源共享已经被使用等等的信息
[root@www~]# smbstatus[-pS] [-u username]
选项与参数:
-p :列出已经使用SAMBA 联机的程序PID ;
-S :列出已经被使用的资源共享状态;
-u :只列出某个用户相关的分享数据
什么参数都不加即为列出所有的信息

需账号密码才可登入的分享(security = user)
Samba 使用者账号必须要存在于Linux 系统当中(/etc/passwd),但是Samba 的密码与Unix 的密码档案并不相同.


五,详细配置

1,利用useradd创建三个用户,并为sambas设定三个账户,名称为smb1, smb2, smb3 ,且均加入users 为次要群组。此三个用户Linux 密码为1234,Samba 密码则为4321;
2,同理设置一个student账户 。用来查看不同组用户的区别。是否可以正常访问共享文件。

可以通过pdbedit -L 查看你设置的用户


3,新建一个分享目录/home/project ,里面新建文件1.sh 2.sh 。接下来分享/home/project 这个目录。


4,打开配置文件/etc/samba/smb.conf,一般只需要配置两个地方就可以。

设置IP白名单(设置和客户端的Ip处在同一个网段)

设置共享资源


5,重启samba服务。

service  smb  restart
service  nmb  restart

接下来设置客户端。

1,关闭防火墙 ,安装上 samba-client 包。

2,先试一下利用类似FTP的方式登入远程主机



3,利用mount.cifs直接挂载为网络驱动器

mount  -t cifs //192.168.66.128/project   /mnt   -o  username="smb1",password="4321"

通过df命令可以查看到Linux系统已经挂载进来了。



4,查看本机windows,依旧可以




至此,配置完成。














猜你喜欢

转载自blog.csdn.net/lvxiaojiahuo/article/details/80223740