samba--文件服务器

来源:互联网 发布:iphone微信多开软件 编辑:程序博客网 时间:2024/05/22 16:40
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
0 0
原创粉丝点击