首页 > 技术文章 > SAMBA

mayuansheng 2016-08-24 14:16 原文

SMB(server message block)

CIFS(common internet file system)

可以跨平台 (windows/unix/unix like)

与NFS的相同点与不同点

相同点: 都可以做文件共享使用,都通过网络进行共享
不同点: samba有完备的验证方式,可以跨平台,nfs对用户验证方式少,不能跨平台
samba客户端挂载是使用的文件系统类型是cifs
nfs客户端挂载是使用的文件系统类型是nfs

NFS与samba同属NAS(网络附加存储)阵营

部署

# yum install samba samba-client samba-common -y

配置文件目录
/etc/samba

主配置文件
/etc/samba/smb.conf

74 workgroup = MYGROUP 工作组 (windows下可以在网上邻居看到同组的成员)
75 server string = Samba Server Version %v 服务器描述信息 %v版本号
89 log file = /var/log/samba/log.%m 日志的位置,%m代表主机名或IP地址
91 max log size = 50 单体日志文件大小
101 security = user 验证模式(share/user/server/domain/ads)
share 共享模式,不需要输入用户名密码
user 使用用户验证,这个用户必须是本地用户,但是密码是重新指定的
server 由其他服务器验证
domain 由windows域控制器来验证
ads 指定windows的活动目录来验证

248 [homes] 用户家目录共享参数
249 comment = Home Directories
250 browseable = no
251 writable = yes
252 ; valid users = %S
253 ; valid users = MYDOMAIN\%S

255 [printers] 共享打印机相关

282 ; [public] 自定义模板
283 ; comment = Public Stuff
284 ; path = /home/samba
285 ; public = yes
286 ; writable = yes
287 ; printable = no
288 ; write list = +staff


通过自定义模板先做一个共享的目录

#vi /etc/samba/smb.conf
---------------------------------------
101 security = share

289 [share] 共享目录名
290 comment = share directory 注释
291 path = /carson 本地共享目录路径
292 public = yes 允许匿名访问
293 writable = yes 可以写入

---------------------------------------
#mkdir /carson
#chmod o+w /carson

# service smb start

----windows----

使用windows访问\\IP
进行上传,下载的操作

----Linux----

#yum install samba-client -y

# smbclient -L 172.16.254.201 查看samba服务的共享目录
Enter root's password: 无密码直接按回车
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]

Sharename Type Comment
--------- ---- -------
share Disk share directory
IPC$ IPC IPC Service (Samba Server Version 3.6.9-151.el6)
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]

Server Comment
--------- -------

Workgroup Master
--------- -------

# smbclient //172.16.254.201/share 直接连接samba服务器
Enter root's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
Server not using user level security and no password supplied.

可以使用ls命令查看当前目录,使用put,get上传,下载文件

客户端安装mount.cifs命令
# yum install cifs-utils-4.8.1-18.el6.x86_64 -y

通过挂载使用samba共享目录
# mount -t cifs //172.16.254.201/share /mnt/cifs
password: 直接按回车

保证开机自动挂载时编写如下内容
#vi /etc/fstab
---------------------------
//172.16.254.201/share /mnt/cifs cifs defaults,password="" 0 0
---------------------------


将目录的模式从share改为user
----------------------------
101 security = user
292 ;public = yes 将允许匿名访问注释掉
----------------------------

#service smb restart

#useradd smb1
#echo 123456 | passwd smb1 --stdin

# smbpasswd -a smb1 给系统用户添加samba登录时的密码
New SMB password: 654321
Retype new SMB password: 654321
Added user smb1.

------------------
smbpasswd
-a 添加一个用户
-d 禁止一个用户
-e 解锁一个用户
-x 删除一个用户
------------------

使用windows/linux登录时要输入smbpasswd设置的密码

# smbclient -L 172.16.254.201 -U smb1 查看samba服务器共享了哪些目录
# smbclient //172.16.254.201/share -U smb1 指定用户,进入共享目录
# smbclient //172.16.254.201/smb1 -U smb1 指定用户,进入用户家目录
# mount //172.16.254.201/share /mnt/cifs -o user=smb1,password=654321 带有用户名,密码的挂载
#vi /etc/fstab
-----------------------------------
//172.16.254.201/share /mnt/cifs cifs defaults,user=smb1,password=654321 0 0
-----------------------------------

访问控制

share默认是没有访问控制的
user基于用户 可以对用户/组进行限制(读/写/浏览)

读:
read only = yes 只读
read list = 用户名 指定谁能读


writable = yes 可写
write list = 用户名 指定谁能写

有效用户
valid users = 用户名 或 @组名

public = yes 允许匿名用户访问

browseable = yes 能够在查看时显示这个共享目录

smb1只读,其他用户可以读写
writable = yes
read list = smb1

smb3可以读写,其他人只读
read only = yes
write list = smb3

smb0组成员有读写权限,其他人没有任何权限
writable = yes
valid users = @smb0

指定服务的监听端口
interfaces = lo eth0

设置网络访问控制网段
hosts allow = 127. 172.16.254.0/16 192.168.254.202

#netstat -antulp | grep :445
-------------------------
netstat

-a 显示所有链接
-n 以数字方式显示端口信息
-t tcp
-u udp
-l 显示listen状态的连接
-p 显示pid和进程名
-------------------------


http | http://IP (/var/www/html)
tcp/udp 80/ https(443)
ftp | ftp://IP (/var/ftp) ftp://user:password@IP(user's homeDir)
tcp/udp 20/21
nfs | IP:/dir(/dir 只有nfs使用绝对路径)
tcp/udp 2049 other port: /etc/sysconfig/nfs
samba | //IP/shareName(/etc/samba/smb.conf[shareName-->绝对路径的目录])
tcp/udp nmb: 137/138
tcp/udp smb: 139/445

推荐阅读