感谢作者苏振老师
samba
协议:netbios(135、139、445)
功能:文件服务器,linux和windows磁盘与打印机共享
共享(安全)级别:共享级共享(win98)、用户级共享(win2k)、服务器级共享(server)、域级共享(domain)
守护进程名:smb(server提供服务)、nmb(client使用服务)
rpms:samba(服务器端程序)、samba-common(配置文件)、samba-client(客户端程序)
# rpm -q samba samba-common samba-client<Enter> 或 # rpm -qa | grep samba<Enter>
# rpm -ivh /包路径/包名<Enter>
# rpm -ql samba-common | grep conf<Enter>
注意:samba服务要求主机名唯一
关于smb.conf的注释:"#"号开头注释,说明注释、";"号开头的注释,参数注释
说明:Linux用户级共享,samba帐户必须是本地帐户
# useradd -s /sbin/nologin adder<Enter>
# smbadduser adder:adder<Enter> // 系统帐户:samba帐户,==>指明samba密码
# smbpasswd adder<Enter>// 给adder改samba密码
# vi /etc/samba/smb.conf<Enter>
[global]
workgroup = mygroup;组名或域名
server string = my samba server ;注释内容
hosts allow =网络或主机 ;允许访问的网络和主机IP
security = security_level ;共享(安全)级别
[homes];共享名
; comment =Home Directoies;注释内容
;browseable = no;控制在浏览器列表中能否看见自己的主目录
; path = /tmp; 本地共享路径,必须存在
; vlaid users = bob alice; 合法用户 bob、alice 可访问,默认=%S表示所有用户(本地)
; vlaid users = @haha; 合法组haha可访问(本地)
; public = yes; 都能看到该共享名,否则为隐藏共享
; writable = yes; 共享时写的权限(注意本地权限)
; write list = @haha; haha 组的人有写权限
; read only = yes; 只读权限
; printable = no; 该共享不是打印机共享
; create mask = 0765; 新建文件默认权限
; create mode = 0664; 新建文件默认权限
; directory mode = 0775; 新建文件夹默认权限
; only guest = yes; 只有匿名帐户可访问
实验一、共享级共享
# vi /etc/samba/smb.conf<Enter>
security = share// 默认是user,改为share
[sharename]// 共享名
comment = zhu shi// 注释
path = /// 共享本地目录,必须存在
public = yes// 是否所有人可以访问
writable = yes// 共享写权限,注意权限:共享权限、本地权限
# service smb start<Enter>
# chkconfig smb on<Enter>
测试
win<win>+<r> => //ip // 不需要用户名和密码可访问
linux# smbclient -L //ip -N<Enter>// 查看共享
-L list,列出共享
-N No password,不用指明密码
·# smbclient //ip/共享名 -N<Enter>
·# mount -t smbfs //ip/共享名 /mnt/cdrom -o username=anonymous%""<Enter>
·# mount -t smbfs //ip/共享名 /mnt/cdrom -o username=anonymous,password=""<Enter>
·# smbmount //ip/共享名 /mnt/cdrom -o username=anonymous%""<Enter>
·# smbmount //ip/共享名 /mnt/cdrom -o username=anonymous,password=""<Enter>
练习1、
1、将本地的/www文件夹共享为web
2、服务器要求和你的win2k在同一个工作组
3、只允许本网段可访问文件服务器
4、用户能通win2k拷贝文件到web中
5、文件服务器描述为"public file server"
6、在网上邻居中,可能看到主机名为"suzhen",自已的姓名
# mkdir /www<Enter> => # chmod a+w /www<Enter>
# vi /etc/samba/smb.conf<Enter>
[global]// 全局区域
workgroup = workgroup// 2
hosts allow = 192.168.0. 127.// 3
security = share
server string = public file server// 5
[web]// 1
path = /www// 1
writable = yes// 4
public = yes// 4
#service smb restart
#chkconfig smb on
方法一// 6
# hostname suzhen.wnt.com<Enter>
# vi /etc/sysconfig/network<Enter>
hostname=suzhen.wnt.com
方法二// 6
# vi /etc/samba/smb.conf<Enter>
[global]
netbios
测试
win
x:/> ping -a ip<Enter>// 可以看到返回主机名
直接在网上邻居当中能看到。
实验二、用户级共享
# useradd alice; useradd bob<Enter>
# smbadduser alice:alice<Enter>// 指明samba密码a
# smbadduser bob:bob<Enter>// 指明samba密码b
# vi /etc/samba/smb.conf<Enter>
security = user// 默认,需确认
# service smb restart<Enter>
# chkconfig smb on<Enter>
测试
win<win>+<r> => //ip // 需要用户名和密码才可访问
linux# smbclient -L //ip -U bob%b<Enter>
-L list,列出共享
-U user,用户
·# smbclient //ip/共享名 -U bob%b<Enter>
·# mount -t smbfs //ip/共享名 /mnt/cdrom -o username=bob%b<Enter>
·# smbmount //ip/共享名 /mnt/cdrom -o username=bob%b<Enter>
说明:当在win当中用一个身份测试过一次之后,再也不弹出对话框啦。
解决:
方法一、删除会话,有时会不好用。
x:/> net use<Enter>
x:/> net use //ip/ipc$ /del<Enter>
方法二、注销一下,永远好用。
额外实验:
1、windows 禁用netbios,结果?无法访问
2、用户级共享和共享级可以配合使用。
额外实验:
目的:利用/etc/fstab,自动挂载windows的c$共享。
# netconfig<Enter>
# chkconfig smb on<Enter>
# ping win<Enter>
# mkdir /mnt/c<Enter>
# vi /etc/fstab<Enter>
//192.168.0.251/c$/mnt/csmbfsdefaults,username=administrator,password="" 1 1
# sync<Enter>
# shutdown -r 0<Enter>