SAMBA服务器
如果你已经依序一步一步的将你的 Linux 当作主机安装好了,这时,你会不会觉得,Linux 跟你的日常工作的 Windows 计算机的互动不是很好呢?在这两部机器之间的资料互传必须经过 FTP 协议才能传送,真麻烦!不是吗?呵呵!这时,Samba服务器就是你的救星了!使用了Samba服务器可以让你的 Linux 与 Windows 透过『网络上的芳邻』来互传资料,安装了Samba服务器之后,从此,你的资料都可以使用『网络上的芳邻』来传送啰!真好!不是吗?
Samba服务器概念
Samba是用来实现SMB的一种软件,由澳大利亚的Andew Tridgell开发,是一种在Linux(Unix)环境下运行的免费软件。
通过使用Samba,Linux系统可以实现如下功能:
文件服务和打印服务(在Linux和Win95/NT之间系统之间提供打印机和磁盘的共享)
登陆服务器,使用Windows客户能注册到网络上
作为主要域控制器和域中成员的功能
WINS服务器以及浏览功能
支持SSL(Secure Socket Layer)
支持SWAT (Samba Web Administration Tool )
Samba除了支持Linux(Unix)和Win95/NT之外,还支持DOS、IBM OS/2、Macintosh 等操作系统。
SMB概念了解
前文说了,Samba是用来实现SMB的一种软件,咱们在这里在了解一下SMB(Server MessageBlock,服务信息块)。SMB协议可以看作是局域网上的共享文件/打印机的一种协议,它可以为网络内部的其它Windows和Linux机器提供文件系统、打印服务或是其他一些信息。
SMB的工作原理是让NetBIOS(Win95网络邻居通信协议)与SMB这两种协议运行在TCP/IP的通信协议上,且使用NetBIOS
nameserver让用户的Linux机器可以在Windows的网络邻居里被看到,所以就可以和Win95/NT主机在网络上相互沟通,共享文件与服务了。
目前Microsoft正在开发一种新的文件和打印共享协议--CIFS(Common Internet Files
System,通用网络文件协议),该协议支持TCP/IP和DNS等协议,能在www上支持文件和打印共享。在CIFS下服务器实际上是DNS名,由主机名和域名组成。这种变化是从NetBIOS命令结构中分离出来的。目前CIFS还没有得到广泛的应用。现在在Linux和Win95/NT之间的文件共享注意还是SMB和NFS。
在不同操作系统上的实现资源共享,可以借助于一个协议smb(服务信息块)协议,有时也把它称作
cifs(通用的Internet文件系统)协议,以一种客户机和服务器的工作模式运行
协议提供137,138,138,445端口,其中139和445属于tcp端口,主要目的是实现资源共享,137与138
端口做宣告使用
访问方式,
unc路径;
对于网络服务器上的目标文件,可使用“通用命名约定 (UNC)” (UNC:“统一命名约定”地址,用
于确定保存在网络服务器上的文件位置。这些地址以两个反斜线 (\\) 开头,并提供服务器名、共享
名和完整的文件路径。)地址。这些地址以“file:\\”开始并提供服务器名、共享名和文件的完整
路径。例如,“file:\\server\share\path\project file.mpp”是绝对 UNC 地址
在网上邻居里找到
计算机搜索
命令行 net use (将别的计算机共享映射成本地盘符)
net share (查看网络上有哪些共享)
samba4-swat-4.0.0-55.el6.rc4.i686.rpm是samba服务器的web管理工具,可以进行网页的服务器
管理,端口默认701,有需要的可以安转
[root@localhost Packages]# pwd
/media/cdrom/Packages
[root@localhost Packages]# yum --disablerepo=\* --enablerepo=c6-media install samba
samba-client
[root@localhost ~]# chkconfig --list |grep samba
[root@localhost ~]# chkconfig --list |grep smb
smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# chkconfig --list |grep nmb
nmb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@localhost ~]# service smb start
Starting SMB services: [ OK ]
[root@localhost ~]# netstat -tupln |grep smb
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
3340/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN
3340/smbd
tcp 0 0 :::139 :::* LISTEN
3340/smbd
tcp 0 0 :::445 :::* LISTEN
3340/smbd
[root@localhost ~]# service nmb start
Starting NMB services: [ OK ]
[root@localhost ~]# netstat -tupln |grep nmb
udp 0 0 192.168.2.255:137 0.0.0.0:*
3384/nmbd
udp 0 0 192.168.2.199:137 0.0.0.0:*
3384/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:*
3384/nmbd
udp 0 0 192.168.2.255:138 0.0.0.0:*
3384/nmbd
udp 0 0 192.168.2.199:138 0.0.0.0:*
3384/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:*
3384/nmbd
配置文件/etc/samba.smb.cnf文件中的一些内容,(了解)
[root@localhost ~]# setenforce 0
[root@localhost ~]# service iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@localhost ~]# vim /etc/samba/smb.conf
[root@localhost ~]# service smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
然后我们就可以在测试机上搜索计算机,如果搜索不到还可以尝试unc路径
unc路径结果
执行samba服务端的ip地址绑定:
(在服务机上操作,增加一个临时ip)
[root@localhost ~]# ifconfig eth0:0 192.168.2.188
其他地址应该访问不到
其中下一行allow hosts是限制来源主机的,而不是目标主机地址
samba作为单独的服务器运行时在安全上的5个级别
share 匿名
user 身份验证 本机samba的账号库
server 身份验证 别的samba server
domain 身份验证 dc
ads 此时samba服务器本身就是一个域控制器
在samba服务器中本地和网络权限冲突时,取两者的最小权限
案例简介
【共享名称】
path=物理路径
权限 {网络权限}
例子
共享名 public
物理路径 /abc
匿名访问 ro
张三
共享名 smbzs
物理路径 /tmp/zhangsan
张三 rw
他人不允许访问
李四
共享名 smbls
物理路径 /tmp/lisi
李四 rw
他人不允许访问
linux smb client
smaba-client
smbclient -L //服务器地址或者名称
smbclient //服务器地址或者名称/共享名称 -U samba账号名称
当我们以user级别建立samba服务器时,samba账号库和本地用户是同一个库,必须先由本地账号产
生samba账号
[root@localhost samba]# mkdir -pv /abc
mkdir: created directory `/abc'
[root@localhost samba]# mkdir -pv /tmp/zhangsan
mkdir: created directory `/tmp/zhangsan'
[root@localhost samba]# mkdir -pv /tmp/lisi
mkdir: created directory `/tmp/lisi'
[root@localhost samba]# useradd zhangsan
[root@localhost samba]# useradd lisi
[root@localhost samba]# chown zhangsan.zhangsan /tmp/zhangsan
[root@localhost samba]# chown lisi.lisi /tmp/lisi
[root@localhost samba]# touch /abc/f1.pub
[root@localhost samba]# vim /etc/samba/smb.conf
[root@localhost samba]# testparm #测试参数是否正确
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Processing section "[smbzs]"
Processing section "[smbls]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions #回车还可以查看具体配置
以sambapasswd产生samba账号库
[root@localhost samba]# service smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@localhost samba]# smbpasswd -a zhangsan
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@localhost samba]# smbpasswd -a lisi
New SMB password:
Retype new SMB password:
Added user lisi.
测试,并且public目录是只读的,张三,登录
public,只读权限
家目录权限,可读可写正常
lisi测试
所在的组,和配置文件描述一致
将服务器共享文件映射到本地盘符中
先net share再net use
本地直接管理界面
以Linux作为客户端
[root@localhost ~]# smbclient -L \\192.168.2.199
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
Sharename Type Comment
--------- ---- -------
public Disk this is a public directory
smbzs Disk this is zhangsan's share
smbls Disk this is lisi's share
IPC$ IPC IPC Service (Samba Server Version 3.6.9-151.el6)
Microsoft_XPS_Document_Writer:1 Printer Microsoft XPS Document Writer
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
Server Comment
--------- -------
LOCALHOST Samba Server Version 3.6.9-151.el6
Workgroup Master
--------- -------
MSHOME AAA
MYGROUP LOCALHOST
WORKGROUP NUO-5CA344EAA2E
[root@localhost ~]# smbclient //192.168.2.199/smbzs -U zhangsan
Enter zhangsan's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-151.el6]
smb: \> help #tcp 的ftp命令
? allinfo altname archive blocksize
cancel case_sensitive cd chmod chown
close del dir du echo
exit get getfacl geteas hardlink
help history iosize lcd link
lock lowercase ls l mask
md mget mkdir more mput
newer open posix posix_encrypt posix_open
posix_mkdir posix_rmdir posix_unlink print prompt
put pwd q queue quit
readlink rd recurse reget rename
reput rm rmdir showacls setea
setmode stat symlink tar tarmode
translate unlock volume vuid wdel
logon listconnect showconnect .. !
smb: \> quit
将samba服务器上的共享文件挂载到本地盘符:
[root@localhost ~]# setenforce 0
[root@localhost ~]# service iptables stop
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@localhost ~]# mount //192.168.2.199/smbzs /mnt/zhangsan/ -o username=zhangsan,password='123'
[root@localhost ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
//192.168.2.199/smbzs on /mnt/zhangsan type cifs (rw,username=zhangsan,password=123)
[root@localhost ~]# umount /mnt/zhangsan
[root@localhost ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
[root@localhost ~]# vim /etc/fstab
注意语法的格式,以上为常犯错误。。。
[root@localhost ~]# mount -a
mount: block device //192.168.2.199/smbzs/ is write-protected, mounting read-only
mount: cannot mount block device //192.168.2.199/smbzs/ read-only
[root@localhost ~]# chkconfig smb on
[root@localhost ~]# chkconfig nmb on
[root@localhost ~]# vim /etc/fstab
[root@localhost ~]# mount -a
[root@localhost ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
//192.168.2.199/smbzs on /mnt/zhangsan type cifs (rw,username=zhangsan,password=123)
[root@localhost ~]# vim /etc/file
[root@localhost ~]# chmod 600 /etc/file
[root@localhost ~]# mount
/dev/sda2 on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw,rootcontext="system_u:object_r:tmpfs_t:s0")
/dev/sda1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
nfsd on /proc/fs/nfsd type nfsd (rw)
//192.168.2.199/smbzs on /mnt/zhangsan type cifs (rw,username=zhangsan,password=123)
正常挂载
开机正常挂载