SAMBA软件用于在不同平台之间(Linux/Unix/Windows)共享文件。
1
SMB:Service Message Block 程序全名
CIFS: Common Internet FileSystem 程序全名
2
samba启动的的三个进程,都是为了与Windows主机实现文件共享向工作的
smbd:共享文件
nmbd:向Windows主机广播自己的IP
winbind:默认不启动,Linux主机在Windiws域中时使用
3
Port:137/UDP(netbios),138/UDP(netbios),139/TCP(netbios),445/TCP(smb over TCP/IP)
4
软件包:
samba.i386服务器端软件包
samba-swat.i386 网页功能的samba
5
配置文件:
/etc/init.d/smb
/etc/samba/smb.conf
6
Ps:在新版本中,samba接受selinux的控制,所以在配置时,我们最好先关闭selinux
7
配置文件:
[global]
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24监听的IP
; hosts allow = 127. 192.168.12. 192.168.13. 允许的IP
; log file = /var/log/samba/%m.log 记录日志 宏%m表示当前主机的主机名
; max log size = 50 日志文件大小
security = user samba安全级别,主要根据用户验证方式
share:公共
user:根据用户名密码
domain:根据域
server:集中式认证
ads:
passdb backend = tdbsam 账号的数据库文件
[homes]
comment = Home Directories 说明信息
browseable = no 不允许随意浏览
writable = yes 允许上传文件
; valid users = %S 定义哪些用户可以访问此共享
[printers]
comment = All Printers 显示所有打印机
path = /var/spool/samba 能够访问到的打印机
browseable = no 不允许匿名访问打印机
guest ok = no 来宾账号是否允许访问打印机
writable = no
printable = yes
; [netlogon]
; comment = Network Logon Service
; path = /var/lib/samba/netlogon
; guest ok = yes
; writable = no
; share modes = no
; [Profiles]
; path = /var/lib/samba/profiles
; browseable = no
; guest ok = yes
8
我们使用用户登录时,需要创建专供samba使用的用户名密码,直接将本地存在的用户添加为samba用户即可,使用smbpasswd命令
smbpasswd
-a 添加samba用户
-x 删除用户
-d 临时禁用某个用户
-e 启用禁用的账号
9
testparm检查配置文件,敲回车显示在生效的命令
10
实例:
#yum install samba
#vim /etc/samba/smb.conf
在最后面添加共享目录:
[share] 这里起得名字是表示共享的目录
comment = my share folder
path = /sharing
browseable = Yes
guest ok = Yes
writable =Yes
(writable = Yes 和 read only =No 的作用是一样的)
#testparm 检查配置文件
#useradd zoe 创建用户
#smbpasswd -a zoe 将用户添加到samba中并添加密码
#chcon -R -t samba_share_t /sharing/ 递归修改其标签在,这个在selinux中会讲到
#setfacl –m u:zoe:rwx /sharing 修改用户对于/sharing的权限
结束
现在你就可以在windows中使用网上邻居工作组搜索该主机,登陆进去访问sharing目录了
11
如何使用Linux作为客户端访问samba共享文件:
在这里我们使用的命令是smbclient:
Smbclient
-L hostname/IP 查看指定主机上的共享资源
-U username[%password] 使用指定用户名登陆
smbclient //HOST/SHARE -U username%passwd
例子:smbclient //192.168.0.3/share -U zoe%redhat
12
访问控制:
在前面的[share]中添加即可对/sharing目录进行限制
hosts allow = 192.168.12. 允许192.168.12.0网段的主机访问
testpqrm /etc/samba/smb.conf station34.example.com 192.168.0.34 测试指定主机是否能够访问指定的共享文件
写访问控制:
write list = @peguin 表示只有组中的成员可写
write list = @zoe 表示只有zoe用户可写
13
让一个组都有写权限:
groupadd peguin
useradd -G peguin fedora
usradd -G peguin gentoo
smbpasswd -a fedora
smbpasswd -a gentoo
setfacl -m g:peguin:rwx /sharing/
此时,peguin族中的成员都可以访问共享文件夹
14
我们在前面就关闭了selinux,那么我们也可以打开selinux,修改它的规则以支持我们samba的工作。
修改selinux 以支持samba的部分功能:
selinux默认为不支持samba使用家目录
getsebool -a | grep samba 查看selinux中包含samba的选项
samba_domain_controller --> off
samba_enable_home_dirs --> off 该项表示不允许使用家目录
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_share_nfs --> off
use_samba_home_dirs --> off
virt_use_samba --> off
setsebool -P samba_enable_home_dirs=1 -P表示修改原文件,使它永久生效
这样子selinux就不影响我们的samba了
15
我们也可以直接将别的linux主机共享的samba目录挂载到本机使用,这样子是不是就十分方便了~
挂载其他主机共享的samba目录:
mount -t cifs //192.168.0.73/share /mnt -o username=redhat
表示挂载0.73主机上共享的share目录到本地的/mnt目录,使用的用户名是redhat
16
关于samba-swat
可以讲samba-swat看做网页版的samba,就是痛过网页管理samba,这样很方便我们进行远程管理,这里不多说了,大家英文好的看看就明白了。
它属于非独立守护进程
监听tcp 901端口
默认只允许来自127.0.0.1的地址访问
实例:
#yum –y install samba-swat
#cd /etc/xinetd.d/
#vim swat
修改为下面的内容
service swat
{
port = 901
socket_type = stream
wait = no
only_from = 192.168.0.0/24 这里表示允许192.168.0.0网段主机访问,根据情况自己修改
user = root
server = /usr/sbin/swat
log_on_failure += USERID
disable = no 表示启动
}
#Service xinetd restart
完成,下面就可以通过浏览器访问控制了,假如我的samba主机是0.3
http://192.168.0.3:901/
使用用户名密码登陆就OK啦
网页的使用方法大家就自己研究吧~