首页 > 代码库 > Samba文件共享

Samba文件共享

源自《Linux 运维之道》丁一明编著 一书的总结

Samba是Linux、Unix和Windows之间交互操作,基于GPL的自由开源软件。所需软件包括:Samba(服务器端软件包)、Samba-client(客户端软件包)和Samba-common(samba公共文件软件包)。其中Samba由smbd和nmbd两个守护进程组成,两个进程的启动脚本是独立的。

Smbd服务进程为客户端提供文件共享和打印服务。另外,该进程还负责用户权限以及锁功能,smbd默认监听端口是TCP139和445,Samba通过smb服务启动smbd进程,使用netstat –nutlp查看进程端口信息。

Netstat的一些常用选项:

netstat -a——显示所有连接和监听端口。包括已建立的连接(ESTABLISHED),也包括监听连接请求(LISTENING)的那些连接。

netstat -s—— 显示按协议统计信息。默认地,显示 IP、 IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;如果你的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么你就可以用本选项来查看一下所显示的信息。你需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。

netstat -e——本选项用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量。

netstat -r——本选项可以显示关于路由表的信息,类似于后面所讲使用route print命令时看到的信息。除了显示有效路由外,还显示当前有效的连接。

netstat -n——以数字形式显示地址和端口号。

netstat -b ——显示包含于创建每个连接或监听端口的可执行组件。

netstat -o ——显示与每个连接相关的所属进程 ID。

netstat -p proto ——显示 proto 指定的协议的连接;proto 可以是下列协议之一: TCP、UDP、TCPv6 或 UDPv6。 如果与 -s 选项一起使用,可以显示按协议统计信息

可以使用命令查看端口号:lsof –i:端口号

Nmbd进程提供NetBIOS名称服务,以满足基于CIFS协议的共享访问环境,该进程默认使用UDP137端口。

注意iptables和SELinux默认策略会阻止远程用户对Sambd的访问,所以暂时关闭

[root@localhost tempal]# setenforce 0

[root@localhost tempal]# service iptables stop

永久关闭

[root@localhost tempal]# sed -i "/SELINUX=/c SELINUX=disable" /etc/sysconfig/selinux

[root@localhost tempal]#chkconfig iptables off

安装Samba软件

[root@localhost web]# yum -y install samba

[root@localhost tempal]# yum -y install samba-client

设置共享目录

[root@localhost tempal]# cd ../..

[root@localhost /]# pwd

/

[root@localhost /]# ls

bin dev home lib media opt root selinux sys usr

boot etc ks lost+found mnt proc sbin srv tmp var

[root@localhost /]# mkdir /common

[root@localhost /]# chmod 777 /common

[root@localhost /]# echo "hello">/common/smb.txt

修改配置文件:/etc/samba/smb.conf,在最后添加

[common] #name of share

comment=Common share #share note

path=/common #path

browseable=yes #all people can see

guest ok=no #reject ammony

writable=yes #can write

image 

经过实践,在后面添加注释有问题,所以最好不要添加!!!!!!!如果添加注释会出现

[tempal@localhost /]$ smbclient -U smbuser //192.168.118.253/common

Enter smbuser‘s password:

Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-168.el6_5]

tree connect failed: NT_STATUS_BAD_NETWORK_NAME

最后改为

image

更改配置并且添加访问帐号,默认帐号和密码文件存放字啊/var/lib/samba/private目录下

[root@localhost /]# useradd -s /sbin/nologin smbuser

[root@localhost /]# smbpasswd -a smbuser

New SMB password:

Retype new SMB password:

Added user smbuser.

[root@localhost /]# service smb start

Starting SMB services: [ OK ]

[root@localhost /]# chkconfig smb on

Smbpasswd命令如下:smbpasswd [选项] 账户名称

-a 添加帐号并设置密码

-x 删除帐号

-d 禁用SMB帐号

-e 启动SMB帐号

在win7下访问,开始->运行,输入\\ip

image

 

image

image

在Linux客户端显示和登录

image

image

Linux中挂载:

root@ubuntu:/# mkdir /com

root@ubuntu:/# mount -t cifs //192.168.118.253/common /com -o username=smbuser,password=123

root@ubuntu:/# ls -l /com

总用量 1024

-rwxrwxrwx 1 root root 6 6月 22 12:30 smb.txt

image

开机启动

root@ubuntu:/# echo "//192.168.118.253/common /com /smb cifs defaults,username=smbuser,password=123 0 0" > /etc/fstab

Samba案例:设计公司ABC,有四个部门商业部、页面设计部、开发部、运维部,建立一台Samba服务器满足各部门之间共享。他们部门又有各自的目录。

[root@localhost ~]# mkdir -p /ABC/{sales,design,develop,ops,share/{sales,design,develop,ops}}

[root@localhost ~]# tree /ABC/

/ABC/

├── design

├── develop

├── ops

├── sales

└── share

├── design

├── develop

├── ops

└── sales

添加账户

[root@localhost ~]# vim user.sh

[root@localhost ~]# cat user.sh

#!/bin/bash

#Add users for share

DEPART=(sales design develop ops)

for g in ${DEPART[@]}

do

groupadd $g

for u in $(seq 1 2)

do

useradd -M -s /sbin/nologin -g ${g} ${g}$u

done

done

[root@localhost ~]# chmod a+x user.sh

[root@localhost ~]# ./user.sh

[root@localhost ~]# smbpasswd -a sales1

New SMB password:

Retype new SMB password:

Added user sales1.

[root@localhost ~]# smbpasswd -a sales2

New SMB password:

Retype new SMB password:

Added user sales2.

[root@localhost ~]# smbpasswd -a design1

New SMB password:

Retype new SMB password:

Added user design1.

[root@localhost ~]# smbpasswd -a design2

New SMB password:

Retype new SMB password:

Added user design2.

[root@localhost ~]# smbpasswd -a develop1

New SMB password:

Retype new SMB password:

Added user develop1.

[root@localhost ~]# smbpasswd -a develop2

New SMB password:

Retype new SMB password:

Added user develop2.

[root@localhost ~]# smbpasswd -a ops1

New SMB password:

Retype new SMB password:

Added user ops1.

[root@localhost ~]# smbpasswd -a ops2

New SMB password:

Retype new SMB password:

Added user ops2.

[root@localhost ~]#

配置文件

[root@localhost ~]# vim /etc/samba/smb.conf

[root@localhost ~]# cat /etc/samba/smb.conf

[global]

workgroup = STAFF

server string = ABC.corp share

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

max log size = 50

security = user

passdb backend = tdbsam

load printers = yes

cups options = raw

[homes]

comment = Home Directories

browseable = no

writable = yes

[sales]

comment = sale share

path = /ABC/sales

browseable = yes

guest ok = no

writable = no

write list = @sales

[design]

comment = design share

path = /ABC/design

browseable = yes

guest ok = no

writable = no

write list = @design

[develop]

comment = develop share

path = /ABC/develop

browseable = yes

guest ok = no

writable = no

write list = @develop

[ops]

comment = ops share

path = /ABC/ops

browseable = yes

guest ok = no

writable = no

write list = @ops

[share]

comment = common share

path = /ABC/share

browseable = yes

guest ok = no

writable = yes

writable = yes

修改权限并重启服务

[root@localhost ~]# chmod 1770 /ABC/{design,develop,ops,sales}

[root@localhost ~]# chmod 1777 /ABC/share

[root@localhost ~]# chown :design /ABC/design

[root@localhost ~]# chown :develop /ABC/develop

[root@localhost ~]# chown :ops /ABC/ops

[root@localhost ~]# chown :sales /ABC/sales

[root@localhost ~]# service smb restart

在test客户端上运行查看命令,可以看到结果。

image

在win7下可以看到

image

可以看到连接时的权限问题:

image