Linux实践工程师学习笔记:samba

Linux实践工程师学习笔记:samba

samba软件包使用

Fedora core/Redhat Linux提供的软件包

samba       samba服务器软件包

samba-client    samba客户端工具

samba-common    通用工具和库



安装rpmdb-fedora/rpmdb-redhat软件包(一般在第三张光盘)

但在FC5已找不到这个软件包

安装了rpmdb可以解决依赖性问题

#rpm –ivh rpmdb-fedora*.rpm

#rpm –ivh --aid samba*.rpm 装了rpmdb才有效



1.#rpm –ivh cups-libs*.rpm     第一张光盘

2.#rpm –ivh samba*.rpm 第一张光盘(client,common)

3.#rpm –ivh samba*.rpm 第二张光盘

#rpm –qa |grep samba    查看所有软件包列表

#rpm –ql 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 –L host

     smbclient //host/share

     smbclient –L 192.168.0.22 –U redhat%redhat      以redhat用户登录并显示共享目录

     smbclient //192.168.0.22/linux –U redhat%redhat      

登入目录,查看目录内容,通过put,get上下载文件



smbtar(先要修改/usr/bin/smbtar命令,把最后一行的参数-N匿名登陆删掉)

远程备份网上邻居中的文件

smbtar –s win2000 –u redhat –p redhat –x chinalab –t itlab.tar



将共享目录挂载到本地目录,然后再访问

mount.cifs //192.168.0.22/linux /mnt –o 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 –L localhost



chkconfig smb –list          查看服务的启动状态



SMB   提供名称解释服务

NMB   提供数据传输服务

两个总是一起工作的



samba文件服务器

(WINS)在网上邻居看不到主机列表,可以在地址栏直接输入IP如\\192.168.0.1查看共享目录

网上邻居看到的主机列表,主要有三个来源,一是配置文件lmhosts,主机名与IP的对应关系

二是通过浏览服务器 三是通过广播方式获取主机列表


linux访问网上邻居

1.挂载方法
       #mount –t smbfs //192.168.0.1/linux /mnt   
或   #mount.cifs //192.168.0.1/linux /mnt
2.#smbclient //192.168.0.1/linux –U redhat%123

访问控制
public = yes           允许所有人访问
        = no             不允许匿名访问
1.共享目录设置有效用户
[redhat]
       path = /var/redhat
       comment = redhat’s files
       valid users = <username> <@groupname>
2.创建samba用户
       #useradd username        新建一个系统用户
       #smbpasswd –a 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 –lh       显示目录里各个文件的详细信息
ls –ld /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 = <username> <@groupname>
       write list  = <username> <@groupname>
       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 = <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 = <level>
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 –g sales –s /bin/false tom
#useradd –g sales –s /bin/false jack
#smbpasswd –a tom
#smbpasswd –a jack
#for user in red blue
>do
>    useradd –g tech –s /bin/false  $user
>     smbpasswd –a $user
>     done

#useradd ceo
#useradd finance
#smbpasswd –a ceo
#smbpasswd –a 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
[global]
       path = /home/sales
       comment = sales
       public = no
       valid users = @sales
       write list = @sales
       create mask = 0770
       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 –L 192.168.0.22 –U tom%tom
2.mount.cifs //192.168.0.22/ceo –o username ceo%ceo
windows客户机映射网络驱动器,再设定“我的文档”位置,就可随时随地将文件保存在samba服务器上。
学习中
很全面,强!受用中……
[fly]php忠实网迷[/fly]
初学者!~尝试一下。谢谢提供!~简直太爽了~