samba软件包使用
Fedora core/Redhat Linux提供的软件包
samba samba服务器软件包
samba-client samba客户端工具
samba-common 通用工具和库
安装rpmdb-fedora/rpmdb-redhat软件包(一般在第三张光盘)
但在FC5已找不到这个软件包
安装了rpmdb可以解决依赖性问题
#rpm �Civh rpmdb-fedora*.rpm
#rpm �Civh --aid samba*.rpm 装了rpmdb才有效
1.#rpm �Civh cups-libs*.rpm 第一张光盘
2.#rpm �Civh samba*.rpm 第一张光盘(client,common)
3.#rpm �Civh samba*.rpm 第二张光盘
#rpm �Cqa |grep samba 查看所有软件包列表
#rpm �Cql samba | more 查讯某个软件列表
samba客户端工具
smbtree
作用:显示局域网中的所有共享主机和目录列表(默认使用当前用户登录)
用法:smbtree [-b] [-D] [-U username%password]
-D 表示只显示工作组名,不显示主机
-b 使用广播查询列表,不用WINS服务器
-D和-U 不能共用,因为不可能用同一个用户登录域上所有主机
nmblookup
作用:显示一台主机的nethios主机名
nmblookup my-server 查询服务器的IP
nmblookup \* 查询所有活动的主机的IP
smbclient
作用:显示/登录局域网中的共享文件夹
用法:smbclient �CL host
smbclient //host/share
smbclient �CL 192.168.0.22 �CU redhat%redhat 以redhat用户登录并显示共享目录
smbclient //192.168.0.22/linux �CU redhat%redhat
登入目录,查看目录内容,通过put,get上下载文件
smbtar(先要修改/usr/bin/smbtar命令,把最后一行的参数-N匿名登陆删掉)
远程备份网上邻居中的文件
smbtar �Cs win2000 �Cu redhat �Cp redhat �Cx chinalab �Ct itlab.tar
将共享目录挂载到本地目录,然后再访问
mount.cifs //192.168.0.22/linux /mnt �Co username=redhat%redhat
tar tvf lab.tar 显示备份包里的文件
samba服务器配置
1.修改配置文件/etc/samba/smb.conf
workgroup = WORKGROUP
security = share
[docs]
path = /usr/share/doc
comment = share documents #说明共享目录
public = yes
2.重启smb服务器
#service smb restart
#chkconfig smb on 让smb每次自动启动
3.测试
#smbclient �CL localhost
chkconfig smb �Clist 查看服务的启动状态
SMB 提供名称解释服务
NMB 提供数据传输服务
两个总是一起工作的
samba文件服务器
(WINS)在网上邻居看不到主机列表,可以在地址栏直接输入IP如 \\192.168.0.1 查看共享目录
网上邻居看到的主机列表,主要有三个来源,一是配置文件lmhosts,主机名与IP的对应关系
二是通过浏览服务器 三是通过广播方式获取主机列表
linux访问网上邻居
1.挂载方法
#mount �Ct smbfs //192.168.0.1/linux /mnt
或 #mount.cifs //192.168.0.1/linux /mnt
2.#smbclient //192.168.0.1/linux �CU redhat%123
访问控制
public = yes 允许所有人访问
= no 不允许匿名访问
1.共享目录设置有效用户
[redhat]
path = /var/redhat
comment = redhat’s files
valid users =
2.创建samba用户
#useradd username 新建一个系统用户
#smbpasswd �Ca username 将用户加入到samba中
3.用户账号映射
[global]
username map = /etc/samba/smbusers
4.修改上面指定的smbusers文件,添加虚拟用户名
redhat = tom jack
也可以直接用以下命令:
#smbuseradd unixname:mapname
5.需重启smb服务读取映射文件
HOME目录(用于用户访问用户自己的主目录)
[global]
[homes]
comment = Home Directories
validusers = %S %S目录属主
browseable = no 默认不允许浏览home目录
writable = yes 允许写
valid users = 有效用户列表
write list = 可写用户列表
create mask = 0660 定义创建文件的默认权限
directory mask = 0770 定义创建目录的默认权限
chown redhat /var/redhat 改变目录属主
ls �Clh 显示目录里各个文件的详细信息
ls �Cld /usr/redhat 只显示目录本身的详细信息
#testparm 测试配置默认文件smb.conf的正确性
#testparm /etc/samba/smb.conf my-server 192.168.0.1
测试客户机能访问服务器的哪些目录
[redhat]
path = /var/redhat
comment = redhat’s files
public = no
valid users =
write list =
create mask = 0660
directory mask = 0770
注意:客户端所有请求访问身份在服务器端都会映射成登录账号的身份
samba配置文件
/etc/samba/smb.conf
[global]
workgroup = WORKGROUP 组或域名
server string = samba server 服务器描述
netbios name = redhat 指定samba服务器名
security = share/user/server share不需验证用户,user要验证
;password server =
需与security=server配合使用
log file = /var/log/samba/log.%m %m指客户机的netbios名,日志按客户机名分类
encrypt passwords = yes
加密密码,windows客户机一般使用加密密码,所以为yes.如果不加密直接用明文密码,可改为no,但windows客户机需修改注册表指定不加密
smb passwd file = /etc/samba/smbpasswd
上面两句要一起使用!
include = /etc/samba/smb.conf.%m 包含外部配置文件,如根据不同的客户机名称,定义不同的共享资源
;interfaces = 192.168.0.0/24 samba应用在哪个接口上,默认是在所有网卡,所有接口上
;name resolve order = wins lmhosts bcaast 名称解释顺序
;wins support = yes 自己作为WINS服务器,并提供给客户机查询
;wins server = w.x..y.z 与WINS配合使用,作为WINS服务器,请求会发送到w.x.y.z
/etc/samba/lmhosts文件(保存客户机IP与名称的对应关系)
左边IP 右边名称
127.0.0.1 localhost
wins support,wins server 不能同时使用
wins server 说明本身作为客户机,而指定一台wins服务器的IP
samba的安全级别
[global]
security =
1.share
windows用户不需要认证就能访问共享列表
2.user
windows客户机需输入用户才能访问共享名列表,服务器上需建立用户账号
3.server
客户端需输入合法用户帮能访问,但认证过程在另一服务器进行,用户账号保存在认证的那台服务器上。
share,user只对windows客户机有效,linux客户机在user级别不用密码也能访问共享名列表。security只保护主机的共享名列表,具体到目录的访问则由目录的规则决定。
#hostname 查看主机名
#nmblookup my-server 查询主机IP(与samba netbios name有关)
#man smb.conf 查看相关帮助
vi搜索技巧:
/%m 先输入”/”再输入要查找的字符串
/redhat 如查找”redhat”字符串
shift+G 跳到文件尾
默认服务器名与机器DNS的第一部分相同
如Fedora.cyrich.com则这台samba服务器的名称就是Fedora
访问控制
一、全局控制
[global]
hosts deny = ALL
hosts allow = 192.168.0.
二、局部访问控制
[docs]
hosts deny = 192.168.0.
hosts allow = 192.168.0.1
[redhat]
hosts allow = 192.168.0.
host deny = 192.168.0.1 (失效)
允许优先!!
hosts 后面的格式语法,可以通过man 5 host.access查看帮助
1.点开头 .edu.cn
2.点结尾 192.168.0.
3.192.168.0.0/255.255.255.0
192.168.0.0/24
4.ALL LOCAL UNKNOWN DNS不能解析的
5./开头 指定一个文件
6.hosts allow = 192.168.0.0 EXCEPT 192.168.0.1
允许192.168.0网段主机访问,但192.168.0.1除外
技巧:
#tail /etc/samba/smb.conf
显示文件最后的十行
应用案例
要求:
1.所有员工都能够在公司内流动办公,但不管在哪台电脑上工作,都要把自己的文件数据保存在samba文件服务器上。
2.市场部,技术部都各有自己的目录,同一个部门的人共同拥有一个共享目录,其他部门的人都只能访问在服务器上自己个人的home目录
3.所有用户都不允许使用服务器上的shell
分析:
1.需要samba作为文件服务器,为所有用户创建账号和目录,用户默认都 在服务器上有一个home目录,只有认证通过才能看到。
2.需为市场部和技术部创建不同的组sales和tech,并且分配目录,把所有市场部员工加入sales组,技术部员工加入tech组,通过samba共享sales和tect
3.建立用户账号时,不分配shell
案例实施:
1.为所有用户创建账号和目录,不分配shell,假设市场部有tom,jack,技术部有red,blue,总经理ceo,财务finance
2.建组sales和tech,把所有市场部员工加入sales组,技术部员工加入tect组
3.创建两个目录/home/sales和/home/tech,并修改两个目录的权限,分别属于sales组和tect组
4.通过samba共享/home/sales和/home/tect
5.测试
如有错误,检查
/etc/samba/smbpasswd 确定账户
/etc/samba/smbusers 查看映射文件
tail /var/log/samba/redhat.log 查看/var/log/samba/目录下的日志
具体操作:
#vi /etc/samba/smb.conf 安全级别为user
#groupadd sales
#groupadd tech
#useradd �Cg sales �Cs /bin/false tom
#useradd �Cg sales �Cs /bin/false jack
#smbpasswd �Ca tom
#smbpasswd �Ca jack
#for user in red blue 批量添加用户red,blue
>do
> useradd �Cg tech �Cs /bin/false $user
> smbpasswd �Ca $user
> done
#useradd ceo
#useradd finance
#smbpasswd �Ca ceo
#smbpasswd �Ca finance
#mkdir /home/sales /home/tech
#chgrp sales /home/sales
#chgrp tech /home/tech
#chmod 770 /home/sales
#chmod 770 /home/tech
#chmod g+s /home/sales 防止权限发生混乱
#chmod g+s /home/tech
#vi /etc/samba/smb.conf
[sales]
path = /home/sales
comment = sales
public = no
valid users = @sales
write list = @sales
create mask = 0770 其实效果就是0760,因为samba服务器会自动把可执行权限拿掉
directory mask = 0770
[tech]
path = /home/tech
comment = tech
public = no
valid users = @tech
write list = @tech
create mask = 0770
directory mask = 0770
linux测试
1.smbclient �CL 192.168.0.22 �CU tom%tom
2.mount.cifs //192.168.0.22/ceo �Co username=ceo%ceo
windows客户机映射网络驱动器,再设定“我的文档”位置,就可随时随地将文件保存在samba服务器