linux学习笔记4-Samba

 

Samba

Samba软件包介绍

Samba项目开发-http://www.samba.org

中国镜像站:http://samba.te8.com

国内下载地址:ftp://ftp.te8.com/pub/samba


Fedora core/Redhat Linux提供的软件包

samba samba服务器软件包

samba-client samba客户端工具

samba-common 通用工具和库

安装Samba软件包

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

rpm -ivh rpmdb-fedora*.rpm

安装samba软件包,一般在第一张安装光盘

rpm -ivh --aid samba*.rpm

检查软件包内容

rpm -ql samba

rpm -ql samba-common

rpm -ql samba-client

yum install samba

yum install samba-client

yum install samba-common


rpm -qa |grep samba

/etc/rc.d/init.d/smb服务器的启动脚本

/usr/sbin/nmbd提供名称服务

/usr/sbin/smbd传输数据

/usr/share/doc/全是帮助文档

/usr/lib库文件


Samba客户端工具

smbtree

作用:显示局域网中所有的共享主机和目录列表

nmblookup

作用:显示一台主机的netbios主机台

smbclient

作用:显示、登陆局域网中的共享文件夹

用法:smbclient -L host

smbclient //host/share

smbtar

作用:远程备分网上邻局中的文件

用法:smbtar -s server -u user -p password -x sharename -t output

例: smbtar -s win2000 -u redhat -p redhat -x chinaitlab -t itlab.tar


smbtree

smbtree -b

smbtree -b -D

smbtree -b -D -U redhat%redhat

nmblookup Ghost-ed402d105

nmblookup /*

smbclient -L 192.168.0.100

smbclient -L 192.168.0.100 -U redhat

smbclient -L 192.168.0.100 -U redhat%redhat

如果想查看里面的具体内容

一种是用mount 挂载

smbmount //192.168.0.100/commonjar /mnt -o username=redhat%redhat

一种是用smbclient

smbclient //192.168.0.100/commonjar -U redhat%redhat

help帮助

ls

cd切换工作目录cd ..

get下载

put上传

exit退出


Modern versions of Linux use a cool new type of Windows file sharing called "The Common Internet File System" (CIFS). Instead of using "smbmount", try:

mount -t cifs //1.2.3.4/share /mnt/somedirectory


mount //192.168.0.100/commonjar /mnt/winxp -o username=redhat%redhat

mount -t cifs //192.168.0.100/temp /mnt/winxp -o username=redhat%redhat

cd /mnt/winxp

cp /etc/hosts ./


smbtar -s 192.168.0.100 -u redhat -p redhat -x temp -t /home/redhat/itlab.tar

which smbtar

file /usr/bin/smbtar

ls -l lab.tar

tar tvf lab.tar查看压缩包里的文件


samba服务器配置

修改配置文件/etc/samba/smb.conf

workgroup=workgroup

security=share

[docs]

path=/usr/share/doc

comment=share documents

public=yes

重新启动smb服务器

service smb restart

chkconfig smb on

测试

smbclient -L localhost



vi /etc/samba/smb.conf

workgroup = workgroup

security = share

[docs]

path=/usr/share/doc

comment=share documents

public=yes

结合public=yessecurity = share就能让所有人访问

service smb start

chkconfig smb on

chkconfig smb --list

smbclient -L localhost -N测试

samba文件服务器

windows的网上邻居

基本概念

共享与访问共享

samba工具集

samba软件与工具介绍

sambawindows提供共享

samba文件服务器

安全级别

用户账号与认证

windows的网上邻居

工作原理

通过SMB协议共享传输文件,具有自己的主机名称解析系统(wins)SMB(server message block)/CIFS(common internet file system)是基于netbios协议的,所以不能够跨越子网通信

服务器端:提供名称查询服务,输出共享文件列表,对客户端用户认证授权

客户端:寻找能够访问的资源,请求验证,请求访问文件和目录

浏览服务器:提供所有主机名和工作组名的缓冲服务

基本概念

主机名:局域网中的netbios主机名,在局域网中唯一

共享名:共享资源(目录/打印机)的名称,主机中唯一

工作组名:主机的组织机构名,主机间地位平等

域名:主机的认证管理机构名称,客户端主机需要域服务提供证,浏览,共享服务



网上邻居的认证模式

工作组模式

用户账号分别存放在每台主机上,只有通过对方主机的认证授权才能访问对方的共享资源

域服务器模式。

用户账号集中存贮在域服务器,每台主机都要经过域服务器认证授权才能访问其它主机上的资源。


Windows中访问网上邻居

Win95/98/ME/2000需要安装TCP/IPNETBEUIIPX/SPX其中任意一种协议,但跟linux共享网上邻居必须安装TCP/IP

从网上邻居中寻找到”工作组”,“主机名”,“共享目录名”

直接在浏览器地址栏中输入

//server/sharename

加密过程

在资源端文件夹-权限-选择允许访问的用户及访问权限

在客户端当前用户要为资源端的用户,才能访问

要关机注销或切换用户时可以看到当前用户是什么


linux中访问网上邻居

需要samba客户端软件的支持

使用挂载的方法

mount -t smbfs //server/sharename /localdir

smbmount //server/sharename /localdir

使用smbclient

smbclient //server/sharename -U name%passwd


samba用户账号

1.共享目录设置有效用户

[redhat]

path=/var/redhat

comment=redhat's files

valid users=<username><@groupname>

2.新建samba用户

useradd username

smbpasswd -a username

3.用户账号映射

[global]

username map=/etc/samba/smbusers

smbuseradd unixname:mapname


vi /etc/samba/smb.conf

[docs]

path=/usr/share/doc

comment=share documents

public=no

如果目录不公开,加上public=no,其实默认情况下,都是不允许匿名用户访问的

[redhat]

path=/var/redhat

comment=redhat's files

public=no

valid users=redhat

service smb restart

这里指定redhat用户,必须把redhat加进samba的账号数据库里

redhat首先必须是系统用户

useradd redhat

smbpasswd -a redhat这里指定samba的密码,这和系统用户密码是没有关系的

more /etc/samba/smbpasswd

smbpasswd –help

-d可以使用户无法登陆,但账号还是存在 -x可以删除用户

重启后不能访问linuxsamba,很可能是防火墙的原因

这里只要service iptables stop即可

Linux关闭开启 防火墙 命令

1) 永久性生效,重启后不会复原


开启: chkconfig iptables on

关闭: chkconfig iptables off


2) 即时生效,重启后复原

开启: service iptables start

关闭: service iptables stop


mkdir /var/redhat


smbpasswd redhat我们也可以修改用户的密码

我们注意到,这时redhat是一个系统账号然后才是samba账号

grep redhat /etc/passwd

为了防止客户机猜测系统账号,我们使用一种用户账号映射

首先要让服务器支持这种用户账号映射

# vi /etc/samba/smb.conf

/username map

username map=/etc/samba/smbusers

vi /etc/samba/smbusers 增加两个虚拟账号tom jack

redhat = tom jack

service smb restar

cat /etc/samba/smbusers查看文件内容

[tmp]

path=/tmp

public=no

valid users=redhat

service smb restart

tail /etc/samba/smb.conf确认配置信息


HOME目录

[homes]

comment=Home Directories

valid users=%S

browseable=no

writable=yes

是随用户名而变

security = user安全级别改成用户模式

smbclient -L 192.168.0.102 -U redhat%redhat


useradd itlab

smbpasswd -a itlab

smbclient -L 192.168.0.102 -U itlab%itlab

ls /home/itlab/

touch /home/itlab/test

smbclient //192.168.0.102/itlab -U itlab%itlab



ls -ld /home/redhat/查看用户目录权限


samba用户的权限

[redhat]

path=/var/redhat

comment=redhat's files

public = no

valid users=<username><@groupname>

write list=<username><@groupname>

create mask=0660

directory mask=0770

注意:客户端所有的请求访问身份在服务器端都会映射成登陆账号的身份



[test]

path=/var/redhat

public=no

valid users=redhat itlab

write list=redhat

ls -ld /var/redhat

chown redhat /var/redhat 改成redhat可以写

ls -ld /var/redhat


mount //192.168.0.102/test1 /mnt/itlab -o username=itlab%itlab


chgrp redhat /var/redhat

chmod g+w /var/redhat

is -ld /var/redhat

-ld /var/redhat


vi /etc/samba/smb.conf

[test]

path=/var/redhat

public=no

valid users=redhat @redhat

write list=redhat itlab @redhat

testparm 测式配置文件是否有错

test /etc/samba/smb.conf GHOST-ED402D105 192.168.0.100 察看客户机的访问情况


samba配置文件

/etc/samba/smb.conf

[global] [homes]及用户自定义的目录

:!service smb restart

hostname查看本地的主机名

nmblookup chinaitlab查找主机名


[global]

workgroup = workgroup加入遥的用户组

netbios name = redhat显示的主机名

server string = Samba server说明存放的描述

security = share/user/server安全级别

;password server = <server>

log file= /var/log/samba/log.%m根据主机生成日志文件

encrypt passwords = yes使用加密

smb passwd file = /etc/samba/smbpasswd

include = /etc/samba/smb.conf.%m跟据访问主机的不同,有不同的配置文件

interfaces = 192.168.0.0/24允许访问的网段

;name resolve order = wins lmhosts bcast寻找主机的方法

;wins support = yes

;wins server = w.x.y.z

man smb.conf

/%m搜索%m

samba的安全级别

[global]

security = <level>

1.share

windows用户不需要认证,就能访问共享名列表

2.user

客户端必须输入合法的用户才能访问共享名列表,服务器上需要建立用户账号

3.server

客户端必须输入合法的用户才能访问访服务器,但客户端霜要连到其它的服务器上进行认证


访问控制

.全局访问控制

[global]

hosts deny = ALL

hosts allow = 10.0.0.

部访问控制

[docs]

hosts deny = 10.0.0.

hosts allow = 10.0.0.241

[docs]

hosts allow = 10.0.0.

hosts deny = 10.0.0.241(失效)

许优先

man 5 hosts_access如果要允许10.0.0.但除了10.0.0.241 可以用这种方法

list_1 EXCEPT list_2


用案例

:

1.所有的员工都能够在公司内流动办公,但不管在哪台电脑上工作,都要把自己的文件数据保存在samba文件服务器上

2.市场部,技术部都有各自的目录,同一个部门的人共同拥有一个共享目录,其它部门的人都只能访问在服务器上自己个人的home目录

3.所有的用户都不允许使用服务器上的shell.

例分析

1.所有的员工都能够在公司内流动办公,但不管在哪台电脑上工作,都要把自己的文件数据保存在samba文件服务器上

:需要samba作为文件服务器,为所有的用户创建账号和目录.用户默认都在服务器上有一个home目录,只有认证通过才能看到.

2.市场部,技术部都有各自的目录,同一个部门的人共同拥有一个共享目录,其它部门的人都只能访问在服务器上自己个人的home目录

:需要为市场部和技术部创建不同的组salestech,并且分配目录,把所有市场部的员工加入sales,技术部的员工加入tech.通过samba共享salestech.

3.所有的用户都不允许使用服务器上的shell.

:建立用户账号的时候,不分配shell


例实施


1.为所有的用户创建账号和目录,不分配shell.

假设市场部有tomjack,技术部有redblue,总经理是ceo,财务是finance

2.建组salestech,把所有市场部的员工加入sales组,技术部的员工加入tech

3.创建两个目录/home/sales/home/tech,并且修改两个目录的权限,分别属于sales组和tech

4.通过samba共享/home/sales/home/tech

5.测式


vi /etc/samba/smb.conf


[root@www ~]# groupadd sales

[root@www ~]# groupadd tech

[root@www ~]# useradd -g sales -s /bin/false tom

[root@www ~]# useradd -g sales -s /bin/false jack

[root@www ~]# smbpasswd -a tom

[root@www ~]# smbpasswd -a jack

样我们加tom jack加入了sales组,并且不能执行shell,并加入了samba数据库

果用户很多时,按上法的方法就不行了

[root@www ~]# for user in red blue

> do

> useradd -g tech -s /bin/false $user

> smbpasswd -a $user

> done


more /etc/samba/smbpasswd

cat /etc/passwd


[root@www ~]# useradd ceo

[root@www ~]# useradd finance

[root@www ~]# smbpasswd -a ceo

[root@www ~]# smbpasswd -a finance


[root@www ~]# mkdir /home/sales /home/tech

[root@www ~]# ls -ld /home/sales /home/tech


[root@www ~]# chgrp sales /home/sales

[root@www ~]# chgrp tech /home/tech

[root@www ~]# chmod 770 /home/sales

[root@www ~]# chmod 770 /home/tech

[root@www ~]# chmod g+s /home/sales

[root@www ~]# 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

directory mask = 0770

[tech]

path = /home/tech

comment = tech

public = no

valid users = @tech

write list = @tech

create mask = 0770

directory mask = 0770

[root@www ~]# tail -f /etc/samba/smb.conf

[root@www ~]# service smb restart

[root@www ~]# smbclient -L 192.168.0.102 -U tom%tom

[root@www ~]# more /etc/samba/smbusers

[root@www ~]# ls /var/log/samba/可以查看日志,看错误信息

[root@www ~]# smbclient -L 192.168.0.102 -U jack%jack

[root@www ~]# smbclient -L 192.168.0.102 -U red%red


[root@www ~]# mkdir /mnt/sales

[root@www ~]# mount //192.168.0.102/sales /mnt/sales -o username=ceo%ceo看看ceo能不能访问别人的目录

mount error 13 = Permission denied

Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)

[root@www ~]# mkdir /mnt/ceo

[root@www ~]# mount //192.168.0.102/ceo /mnt/ceo -o username=ceo%ceo

windows可以用映射驱动器

linux可以挂载到某个目录


cd /usr/share/doc/samba-3.2.0/


automount自动挂载

vi /etc/auto.misc

sales -fstype=smbfs,username=tom%tom ://192.168.0.102/sales

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值