首页 > 代码库 > 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
经过实践,在后面添加注释有问题,所以最好不要添加!!!!!!!如果添加注释会出现
[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
最后改为
更改配置并且添加访问帐号,默认帐号和密码文件存放字啊/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
在Linux客户端显示和登录
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
开机启动
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客户端上运行查看命令,可以看到结果。
在win7下可以看到
可以看到连接时的权限问题: