smb使用的netbios通讯协定
netbios (network basic input/output system) --最早由IBM发展出来的目的为让局域网内少数电脑进行网络连结的协议,
现在有所谓的netbios over tcp/ip 可以横跨不同路由
netbeui (netbios extened user interface) 为IBM在netbios基础上发展而来的改良版本
samba通过两个守护进程来控制
nmbd 用来管理workgroup,netbios name的解析等 用udp 的137,138端口
smbd 用来管理samba主机分享的目录,档案 用tcp的139和445 (TCP的可靠性)
cifs common interface file system
mount -t cifs -o username=administrator //ip/共享名 /mnt
# tail -11 /var/log/yum.log |cut -d" " -f 5 |xargs yum install -y
ma
n smb.conf --查找帮助
ls /usr/share/doc/samba-3.5.10 --帮助文档目录
# cat /etc/samba/smb.conf |grep -v "#" |grep -v ^";" |grep -v ^$
# cat /etc/samba/smb.conf |grep -v "#" |grep -v ";" |grep [a-z]
cat /etc/samba/smb.conf |grep -v '#' |grep -v ';' |egrep "\[|="
[global] --定义全局的参数
workgroup = MYGROUP --定义工作组
server string = Samba Server Version %v --定义服务器的描述
security = user --定义工作模式:share,user,server
passdb backend = tdbsam --使用本地的.tdb文件保存账号密码
load printers = yes --加载打印机
cups options = raw --打印机类型
[homes] --保留的的资源名
comment = Home Directories
browseable = no
writable = yes
[printers] --保留的资源名
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
security =
share 不用密码,包括匿名用户
user 使用samba自己的密码资料库
server 使用外部主机的密码
browseable 匿名用户是否可见
public 是否让所有可以登入的使用者看到,匿名用户是否可以登录
guest ok 和public一样,使用其中之一就可以
writable 是否可写
read only 是否只读 --这个参数与writable同时存在会有冲突,以后面出现的设定值为主
create mode umask类似
valid users 指定能够进入的使用者
# netstat -ntlup |grep bd --rhel6下只监听TCP的139和445端口
# smbclient -L //10.1.1.45
Password: --直接回车,表示以匿名用户登录,但没有看到共享资源,只有服务器的基本信息
# smbclient -L //10.1.1.45 -U a --使用用户名登录,登录失败
Password:
session setup failed: NT_STATUS_LOGON_FAILURE
原因:
1,默认security = user 模式,这种模式指定访问用户需要密码,匿名用户除外
2, samba账号有两个要求,一,要求是服务器端的系统用户 二,要把系统用户通过samba的命令把它加入到samba服务里去
# smbpasswd -a a --注意是在服务端做
smbpasswd的相关操作
-a 添加smb用户
-d 禁用smb用户
-x 删除smb用户
-e 启用被禁用的smb用户
# pdbedit -L
# pdbedit -Lv
# smbclient -L //10.1.1.45 -U a --再使用a用户登录
# smbclient //10.1.1.45/a -U a
可以看到用户登录samba的默认家目录,有上传,下载,删除,重命令的功能
windows客户端登录
在cmd下输入 \\10.1.1.45\a
然后会弹出一个登录界面,输入用户名和smbpasswd -a定义的密码
在工作组里向上,进入mygroup组,就可以看到网络上的共享,为了区分,可以去服务器改一下server string参数。
[homes] --定义共享资源的名字, 自动变成对应的用户名
comment = Home Directories --资源描述
browseable = no --指定在匿名用户使用-L时是否可见
writable = yes --表示可写,能够上传删除等操作
--
也就是说默认samba是把每个服务器端系统用户的家目录都共享了,但是需要smbpasswd -a加入smb帐号里
如果是share模式,那么smbpasswd -a加入的所有普通用户都无法用了(自己的家目录和共享的目录都登录不了)
browseable控制客户端是否可见资源
public和guest ok控制匿名是否可以登录资源
writeable控制服务是否允许所有人(包括匿名用户)可写
匿名用户以nobody的身份上传,普通用户以自己用户名的身份上传
所以服务writeable=yes,还需要共享的目录在系统级别有W权限才可以上传
--无论是什么服务,客户端访问一般都需要经过下面的过程
客户端程序 --> iptables -->pam (控制客户是否可以登录)--> selinux (程序的域是否能访问文件或目录的类型) --> 服务参数是否允许 --》系统权限rwx-->服务程序
几个常用服务的匿名用户
nfs匿名用户为nfsnobody
ftp匿名用户为ftp
samba匿名用户为nobody
share模式,不允许匿名用户登录时的讨论
guest ok = no --表示不允许匿名用户登录,或者public =no
总结: share 的特点
如果是guest ok =yes 的资源,就可以不用帐号和密码访问 ,但user模式是一样的;
如果是guest ok = no 的资源,你还是不能匿名访问,这个没有问题。
但有个注意的地方,只能在linux下的客户端才能够使用帐号和密码访问这些资源,在windows客户端不行,会发现在登录弹出框被锁了
RHEL6.5 下面的情况是不行的
--总结:对于自定义的共享资源,如果想要拒绝匿名登录,则不要用share模式,用user模式。允许匿名登录,则使用share模式。
--特殊情况:如果是share模式,guest ok =no,windows登录框被锁的情况。登录共享资源登不上去;可以有个方法绕过去:就是先用普通用户登录自己的家目录资源,也是被锁,但可以直接输密码登录上去。然后再登录共享资源,还是被锁,但这次可以直接输普通用户密码登录成功。
--或者用映射的方法解决:点我的电脑--工具--映射网络驱动器--在文件夹那栏填上\\10.1.1.45\share--再点其他用户名--写上a用户和他的密码--就完成了映射了
--rhel6下,总结
share模式和user模式用法的区别
1,share模式,允许匿名用户登录
linux客户端和windows客户端都只能通过匿名登录share
2,share模式,不允许匿名用户登录
linux客户端,匿名或者普通用户都登录不了,包括普通用户登录自己的家目录都不行
windows客户端,就是上面例4的情况;普通用户可以先登录自己的家目录(登录框被锁,但可以输密码登上去);登完自己的家目录后,又可以登录share
(也是登录框被锁,但也可以输入自己的密码登录上去)
--windows xp可以这样进去,但windows 7不行
3,user模式,允许匿名用户登录
linux客户端,匿名和普通都可以登录share,普通也可以登录自己的家目录
window客户端,普通用户登录自己的家目录和share都没问题。但不能使用匿名用户登录share
4,user模式,不允许匿名用户登录
linux客户端,匿名用户不可以登录任何资源;普通用户可以登录share,也可以登录自己的家目录
window客户端,和linux客户端一样
分析总结: 只要文件的拥有者对这个文件有可写的权限,那么别人(包括自己)就可以删除它 (200权限例子)
文件的拥有者对这个文件没有可写的权限,别人就不能删除它,连自己都不能删除 (577权限的例子)
解决方法:
chmod o+t /share
--这个与ftp和系统不同;
ftp和系统一样:就是用户对目录有写权限,就可以删除里面的任意文件
samba:,除了用户对目录要有写权限之外,还要文件的拥有者对这个文件有可写的权限,那么别人就可以删除它
但上面三种情况,想要不同用户之间不能互相删除,都是加t位来解决的
samba里默认就不允许上传同名文件,samba适合做文件服务器,多用户登录到同一个目录
create mask = 0444 --表示创建的或者上传的文件权限为444
directory mask = 0666 --表示创建的或者上传的目录权限为666
系统有umask
vsftp有anon_umask和local_umask
--这两个,一般来说都是目录的默认权限为777-umask,文件为666-umask
user模式下,实现a用户可以上传下载,b用户只能下载,拒绝匿名用户和其它用户(也用smbpasswd -a加入的用户)访问
valid users = a,b,@group --只允许a,b用户和group组访问
write list = a,@group --允许写的用户列表
--相对的,还有一个读列表 read list 表示只读(也就是下载)的用户列表,与write list相反;
--这里不要理解错了,read list不是控制哪些人只能读,也是控制哪些人只能写,只不过和write list相反而已
vim /etc/samba/smb.conf
config file = /etc/samba/smb.conf.%U --手动加上这一句,表示针对每个用户都可以单独写一个配置文件,加在上面的全局[global]里
vim /etc/samba/smb.conf.c --建立一个c用户的单独的配置文件
[share]
comment = share for c
path = /share
writeable = yes --上面的写列表里没有c,所以这里要为yes,表示能上传
create mask = 0744
1,拒绝10.1.1网段
hosts deny = 10.1.1.
1,拒绝10.1.1网段,但是允许10.1.1.35
hosts deny = 10.1.1.
hosts allow = 10.1.1.35
2,拒绝所有,但允许10.1.1网段,但又不允许10.1.1.45
hosts deny = all
hosts allow = 10.1.1. EXCEPT 10.1.1.45
linux客户端的访问除了
smbclient //10.1.1.45/share -U a
还可以挂载
mount -t smbfs -o username=a //10.1.1.45/share /mnt --samba-2.x版本
mount -t cifs -o username=a //10.1.1.45/share /mnt --samba-3.x版本
mount -t cifs -o username=root -o password=redhat //192.168.1.106/360Downloads /misc
netbios (network basic input/output system) --最早由IBM发展出来的目的为让局域网内少数电脑进行网络连结的协议,
现在有所谓的netbios over tcp/ip 可以横跨不同路由
netbeui (netbios extened user interface) 为IBM在netbios基础上发展而来的改良版本
samba通过两个守护进程来控制
nmbd 用来管理workgroup,netbios name的解析等 用udp 的137,138端口
smbd 用来管理samba主机分享的目录,档案 用tcp的139和445 (TCP的可靠性)
cifs common interface file system
mount -t cifs -o username=administrator //ip/共享名 /mnt
# tail -11 /var/log/yum.log |cut -d" " -f 5 |xargs yum install -y
ma
n smb.conf --查找帮助
ls /usr/share/doc/samba-3.5.10 --帮助文档目录
# cat /etc/samba/smb.conf |grep -v "#" |grep -v ^";" |grep -v ^$
# cat /etc/samba/smb.conf |grep -v "#" |grep -v ";" |grep [a-z]
cat /etc/samba/smb.conf |grep -v '#' |grep -v ';' |egrep "\[|="
[global] --定义全局的参数
workgroup = MYGROUP --定义工作组
server string = Samba Server Version %v --定义服务器的描述
security = user --定义工作模式:share,user,server
passdb backend = tdbsam --使用本地的.tdb文件保存账号密码
load printers = yes --加载打印机
cups options = raw --打印机类型
[homes] --保留的的资源名
comment = Home Directories
browseable = no
writable = yes
[printers] --保留的资源名
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
security =
share 不用密码,包括匿名用户
user 使用samba自己的密码资料库
server 使用外部主机的密码
browseable 匿名用户是否可见
public 是否让所有可以登入的使用者看到,匿名用户是否可以登录
guest ok 和public一样,使用其中之一就可以
writable 是否可写
read only 是否只读 --这个参数与writable同时存在会有冲突,以后面出现的设定值为主
create mode umask类似
valid users 指定能够进入的使用者
# netstat -ntlup |grep bd --rhel6下只监听TCP的139和445端口
# smbclient -L //10.1.1.45
Password: --直接回车,表示以匿名用户登录,但没有看到共享资源,只有服务器的基本信息
# smbclient -L //10.1.1.45 -U a --使用用户名登录,登录失败
Password:
session setup failed: NT_STATUS_LOGON_FAILURE
原因:
1,默认security = user 模式,这种模式指定访问用户需要密码,匿名用户除外
2, samba账号有两个要求,一,要求是服务器端的系统用户 二,要把系统用户通过samba的命令把它加入到samba服务里去
# smbpasswd -a a --注意是在服务端做
smbpasswd的相关操作
-a 添加smb用户
-d 禁用smb用户
-x 删除smb用户
-e 启用被禁用的smb用户
# pdbedit -L
# pdbedit -Lv
# smbclient -L //10.1.1.45 -U a --再使用a用户登录
# smbclient //10.1.1.45/a -U a
可以看到用户登录samba的默认家目录,有上传,下载,删除,重命令的功能
windows客户端登录
在cmd下输入 \\10.1.1.45\a
然后会弹出一个登录界面,输入用户名和smbpasswd -a定义的密码
在工作组里向上,进入mygroup组,就可以看到网络上的共享,为了区分,可以去服务器改一下server string参数。
[homes] --定义共享资源的名字, 自动变成对应的用户名
comment = Home Directories --资源描述
browseable = no --指定在匿名用户使用-L时是否可见
writable = yes --表示可写,能够上传删除等操作
--
也就是说默认samba是把每个服务器端系统用户的家目录都共享了,但是需要smbpasswd -a加入smb帐号里
如果是share模式,那么smbpasswd -a加入的所有普通用户都无法用了(自己的家目录和共享的目录都登录不了)
browseable控制客户端是否可见资源
public和guest ok控制匿名是否可以登录资源
writeable控制服务是否允许所有人(包括匿名用户)可写
匿名用户以nobody的身份上传,普通用户以自己用户名的身份上传
所以服务writeable=yes,还需要共享的目录在系统级别有W权限才可以上传
--无论是什么服务,客户端访问一般都需要经过下面的过程
客户端程序 --> iptables -->pam (控制客户是否可以登录)--> selinux (程序的域是否能访问文件或目录的类型) --> 服务参数是否允许 --》系统权限rwx-->服务程序
几个常用服务的匿名用户
nfs匿名用户为nfsnobody
ftp匿名用户为ftp
samba匿名用户为nobody
share模式,不允许匿名用户登录时的讨论
guest ok = no --表示不允许匿名用户登录,或者public =no
总结: share 的特点
如果是guest ok =yes 的资源,就可以不用帐号和密码访问 ,但user模式是一样的;
如果是guest ok = no 的资源,你还是不能匿名访问,这个没有问题。
但有个注意的地方,只能在linux下的客户端才能够使用帐号和密码访问这些资源,在windows客户端不行,会发现在登录弹出框被锁了
RHEL6.5 下面的情况是不行的
--总结:对于自定义的共享资源,如果想要拒绝匿名登录,则不要用share模式,用user模式。允许匿名登录,则使用share模式。
--特殊情况:如果是share模式,guest ok =no,windows登录框被锁的情况。登录共享资源登不上去;可以有个方法绕过去:就是先用普通用户登录自己的家目录资源,也是被锁,但可以直接输密码登录上去。然后再登录共享资源,还是被锁,但这次可以直接输普通用户密码登录成功。
--或者用映射的方法解决:点我的电脑--工具--映射网络驱动器--在文件夹那栏填上\\10.1.1.45\share--再点其他用户名--写上a用户和他的密码--就完成了映射了
--rhel6下,总结
share模式和user模式用法的区别
1,share模式,允许匿名用户登录
linux客户端和windows客户端都只能通过匿名登录share
2,share模式,不允许匿名用户登录
linux客户端,匿名或者普通用户都登录不了,包括普通用户登录自己的家目录都不行
windows客户端,就是上面例4的情况;普通用户可以先登录自己的家目录(登录框被锁,但可以输密码登上去);登完自己的家目录后,又可以登录share
(也是登录框被锁,但也可以输入自己的密码登录上去)
--windows xp可以这样进去,但windows 7不行
3,user模式,允许匿名用户登录
linux客户端,匿名和普通都可以登录share,普通也可以登录自己的家目录
window客户端,普通用户登录自己的家目录和share都没问题。但不能使用匿名用户登录share
4,user模式,不允许匿名用户登录
linux客户端,匿名用户不可以登录任何资源;普通用户可以登录share,也可以登录自己的家目录
window客户端,和linux客户端一样
分析总结: 只要文件的拥有者对这个文件有可写的权限,那么别人(包括自己)就可以删除它 (200权限例子)
文件的拥有者对这个文件没有可写的权限,别人就不能删除它,连自己都不能删除 (577权限的例子)
解决方法:
chmod o+t /share
--这个与ftp和系统不同;
ftp和系统一样:就是用户对目录有写权限,就可以删除里面的任意文件
samba:,除了用户对目录要有写权限之外,还要文件的拥有者对这个文件有可写的权限,那么别人就可以删除它
但上面三种情况,想要不同用户之间不能互相删除,都是加t位来解决的
samba里默认就不允许上传同名文件,samba适合做文件服务器,多用户登录到同一个目录
create mask = 0444 --表示创建的或者上传的文件权限为444
directory mask = 0666 --表示创建的或者上传的目录权限为666
系统有umask
vsftp有anon_umask和local_umask
--这两个,一般来说都是目录的默认权限为777-umask,文件为666-umask
user模式下,实现a用户可以上传下载,b用户只能下载,拒绝匿名用户和其它用户(也用smbpasswd -a加入的用户)访问
valid users = a,b,@group --只允许a,b用户和group组访问
write list = a,@group --允许写的用户列表
--相对的,还有一个读列表 read list 表示只读(也就是下载)的用户列表,与write list相反;
--这里不要理解错了,read list不是控制哪些人只能读,也是控制哪些人只能写,只不过和write list相反而已
vim /etc/samba/smb.conf
config file = /etc/samba/smb.conf.%U --手动加上这一句,表示针对每个用户都可以单独写一个配置文件,加在上面的全局[global]里
vim /etc/samba/smb.conf.c --建立一个c用户的单独的配置文件
[share]
comment = share for c
path = /share
writeable = yes --上面的写列表里没有c,所以这里要为yes,表示能上传
create mask = 0744
1,拒绝10.1.1网段
hosts deny = 10.1.1.
1,拒绝10.1.1网段,但是允许10.1.1.35
hosts deny = 10.1.1.
hosts allow = 10.1.1.35
2,拒绝所有,但允许10.1.1网段,但又不允许10.1.1.45
hosts deny = all
hosts allow = 10.1.1. EXCEPT 10.1.1.45
linux客户端的访问除了
smbclient //10.1.1.45/share -U a
还可以挂载
mount -t smbfs -o username=a //10.1.1.45/share /mnt --samba-2.x版本
mount -t cifs -o username=a //10.1.1.45/share /mnt --samba-3.x版本
mount -t cifs -o username=root -o password=redhat //192.168.1.106/360Downloads /misc