以下是samba 的配置方法。(RH9)
首先要安装几个软件包
第一个是rpm -ivh rpmdb-redhat*.rpm(第三张光盘)
再装rpm -ivh --aid samba*.rpm
第一个是基本的软件包,
只有装了第一个软件包时,第二条才能生效。
第二条的作用是安装包含samba的所有软件包。
包括rpm -ql samba
rpm -ql samba-common
rpm -ql samba-client
(这几个都在第一张光盘里)
安装好后用VI编辑/etc/samba/smb.conf
其中workgroup=这里我们可以填你的工作组名也可以填你所在的域控制器的名字。
security=这是安全级别的意思。和下面的public一起用。如果要共享的话填share,那么别的用户不用密码就可以登录
相当于匿名登录,
剩下的我们自己编辑了
[docs] 共享的目录名
path=/user/share/doc 你本地服务器上的共享目录的路径
comment= share docummentaiton 这是共享目录的注释
public=yes 和上面的share一起允许匿名访问,如果填no,上面的security=user,那就要输入用户和口令。
重启samba服务器
service smb restart
chkconfig smb on
测试smbclient -L localhost
这样做你会觉的所有的用户都可以访问共享目录
我们可以把public设为no
再加上一句
valid users=用户名或@组名
但用户名必须是系统用户才可以
但这样又出现问题了,黑客可能知道你的用户名后猜你的密码。
所谓矛有多尖,盾就有多固。
linux提供了一种用户帐号映射的办法。
先要用VI编辑/etc/samba/smb.conf
将username map=/etc/samba/smbusers启用
然后用vi 编辑/etc/samba/smbusers
假如redhat用户是你的系统用户,你写了一句redhat=lin dong
那么你给别人lin 或者dong 这两个帐号
当别人用lin 或者用dong 这两个帐户登陆服务器是其实是用redhat这个系统帐户登陆的
lin 和dong这只是个虚拟给windows 主机的帐号,(密码还是redhat 帐号的密码)。
下面说一个综合的应用
假如我们在/etc/samba/smb.conf中编辑如下
[redhat]
path=/var/redhat
comment=share documentations
public=no
valid users= lin dong
write list=lin
create mask =0660
directory mask =0770
这时,我们要在客户机上访问linux服务器上的/var/redhat就可以用lin 和dong 这两个帐号
(假设lin和dong 是系统帐号)但还要保证访问redhat这个目录本身必须的权限。
但只有 lin这个帐号可以写,而dong 这个帐号只有访问的权限,没有写的权限
create mask = 0660是指,在 /var/redhat中些一个文件,这个文件自身的权限
directory mask =0770,理所当然新建的目录权限是770
如果一个文件是从客户机写进服务器的那么在客户机和服务器上访问时会有两种不同的方式,
因为客户机和服务器是两套不同的帐号。帐号的关系会影响到服务器的安全性。
举个例子吧:
我们把远端服务器上的一个目录挂载到本地目录下,有lin登陆
smbmount //10.0.0.254/wang /mnt -o username=lin%123
先touch /mnt/aa
这是我们可以 ls -l /mnt/aa(客户端)
ls -l /var/redhat/aa(服务器端)
访问。、
这是两中不同路径出现的访问方法
对于第一个来说我是用root登陆
但对于第二个来说是用客户机登陆帐号写进去的(lin)
我觉的有一句话很重要:客户端所有的请求访问身份在服务器端都会映射成登陆帐号的身份、(细细体会,有点象域控制器)
我们可以用testparm /etc/samba/smb.conf host 10.0.0.254这个命令来查看host这台主机能访问我们的那些目录
还有一些配置命令我应该说说
比如:
service string =这是你的服务器的注释信息
netbios name = 这是提供的主机名 可以和dns 提供的不一样
security = share/user/server上面简单的 提到了 缺省是user 它只对windows有效,如果你的客户机是linux照样可以访问
而server他指你的网内有一台域控制器,登陆信息应在域控制器上验证,所以密码也自然不是在linux服务器上了
同时要制定passwd server密码
log file = /var/log/samba/%m.log这指记录登陆你的服务器的主机名,这里的主机名是netbios主机名
把%m 改成%I 就记录登陆你服务器的主机的ip
encrypt passwd=这是说是否使用加密密码,如果用加密密码,那WINDOWS客户机也用加密密码
windows缺省是加密的,如果不使用加密的话,那应该修改windows 的注册表
smbpasswd file = /etc/samba/smbpasswd不用说你也能猜出来是记录你的smb密码的文件
include = /etc/samba/smb.conf%m这是我们用来为不同的用户提供不同的共享文件
%m和上面的一样(和windos里的隐藏共享加权限差不duo)
interfaces=192.168.0.0/24这是你的服务器所服务的网段
name resolve order = wins lmhosts bcast这是主机名的顺序
其中wins是给wins服务器解析用这个时必须加上wins server=ip地址,告诉他wins的ip地址
而lmhosts是你自己的服务器解析但你必须vi /etc/samba/lmhosts这个文件,往里添加ip 和对应的主机名
(有点象在dns服务器里手动添加记录)
wins support = yes 用你的服务器做wins服务器
wins server = ip地址 你是wins的客户机配这项
hosts deny=这是拒绝那些主机访问 ,你可以填如:.sina.com(一个域)也可以填如:10.0.0. 这个网段
hosts allow=自然是允许了 (我是学网络工程的,感觉这有点象路由器中的访问控制列表)
这有一个原则:允许优先!!!
问题出现了:如果我象要10.0.0. 这个网段除了254 这台主机不能访问其它主机都可以是不是要输253个主机名?
用EXECPT
hosts allow = 10.0.0. EXECPT 10.0.0.254
samba也可以用在linux主机之间共享文件,linux之间共享文件还可以用nfs,在论坛里听一位前辈说nfs存在漏洞
别人可能用它,获得超级用户的密码。所以nfs适合在内网使用。
但linux主机共享的nfs , windows 是不能用的,因为windows没有nfs 客户端