Linux系统管理实践(5):Samba文件共享配置

     Samba是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS(NFS也是需要架设服务器的)。Samba可以定位为一套功能极为强大的文件服务器软件,所谓文件服务器就是将文件服务主机上的目录分享出来,让您可以透过网络对分享出来的目录里的文件,做执行、读取、写入等动作。基本上NT/2000的网域是使用NetBEUI做计算机命名服务,使用广播封包来侦测网络上有哪些计算机、哪些目录提供资源共享,而Samba与UNIX主机间的沟通(如目录、文件分享)是透过TCP/IP协议达成任务,Samba若要与NT网域做沟通,透过TCP/IP当然是行不通的,只好使用NetBIOS对NT网域做广播,让Windows机器能够认识它,进而成为NT网域成员;因此Samba是使用smbd守护进程透过TCP/IP联系Unix主机,而使用nmbd守护进程透过NetBIOS对NT/2000网域做联系,也就是说Samba使用两种机制达成资源共享的目的。
    若没有安装Samba,在Ubuntu中可以用sudo apt-get install来安装samba和smbfs(samba的文件系统)。smb是Samba的主要启动服务器,让其它机器能知道此机器共享了什么;如果不打开nmb服务器的话,只能通过IP来访问,比如在Windows的IE浏览器上键入下面的一条来访问://192.168.1.5/共享目录。Samba服务的启动、重启和停止用"sudo /etc/samba/smb"后跟start、restart或stop。
    1、主要的Samba工具(服务器端和客户端):
smbcacls    smbcontrol  smbencrypt  smbmount    smbprint    smbstatus   smbtree
smbclient   smbcquotas  smbpasswd   smbspool    smbtar      smbumount   testparm
testprns    swat        smbd        nmbd    
    smbclient:利用这个工具可连接其它 Unix like 的 Samba Server,或是连接 Windows 机器,以取得档案分享服务。
    testparm :这个工具可让您测试smb.conf档定义是否正确。
    smbstatus:这个工具可用来显示目前client端连接到Samba Server的联机状况。
    nmblookup:这个工具可使用NT/2000网域内的主机名称查询出对应的IP地址。
    smbpasswd:这个工具可用来建立、变更登入 Samba server的加密密码。
    swat:这个工具让您可使用web接口(如:IE、Netscape)对Samba Server做组态设定。  
    2、Samba配置文件: 为/etc/samba/smb.conf,Ubuntu下的默认内容为:

    我们用得最频繁的是共享目录的设置选项,其含义如下:
    [共享名]:在客户端显示的共享名
    comment=任意字符串:是对该共享的描述,可以是任意字符串,不过最好把访问的用户名和密码写入。
    path=共享目录路径:用来指定共享目录的路径。可以用%u、%m这样的宏来代替路径里的unix用户和客户机的Netbios名,用宏表示主要用于[homes]共享域。例如,如果我们不打算用home段做为客户的共享,而是在/home/share/下为每个Linux用户以他的用户名建个目录,作为他的共享目录,这样path就可以写成path = /home/share/%u。用户在连接到这共享时具体的路径会被他的用户名代替,要注意这个用户名路径一定要存在,否则,客户机在访问时会找不到网络路径。同样,如果我们不是以用户来划分目录,而是以客户机来划分目录,为网络上每台可以访问samba的机器都各自建个以它的netbios名的路径,作为不同机器的共享资源,就可以这样写path = /home/share/%m。
    browseable=yes/no:用来指定该共享是否可以浏览。
    writable=yes/no:用来指定该共享路径是否可写。
    available=yes/no:用来指定该共享资源是否可用。
    admin user=该共享的管理者:用来指定该共享的管理员(对该共享具有完全控制权限)。在samba 3.0中,如果用户验证方式设置成“security=share”时,此项无效。例如"admin users=bobyuan,jane"(多个用户中间用逗号隔开)。
    valid users=允许访问该共享的用户:用来指定允许访问该共享资源的用户。例如"valid users = bobyuan,@bob,@tech"(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)   
    invalid users = 禁止访问该共享的用户:用来指定不允许访问该共享资源的用户。例如"invalid users=root,@bob"(多个用户或者组中间用逗号隔开。)
    write list=允许写入该共享的用户:用来指定可以在该共享下写入文件的用户。例如"write list=bobyuan,@bob"。
    public=yes/no:用来指定该共享是否允许guest账户访问。
    guest ok=yes/no:意义同"public"。
    read only=yes:共享目录是否只读。
    create mask=0700:文件创建掩码。
    directory mask=0700:目录创建掩码。
    3、Samba配置实例:
    (1)创建共享目录:我们在自己主目录下创建一个共享目录Share,它只允许new用户访问。创建共享目录的命令如下:

    注意在Ubuntu系统中创建共享目录时要使用777,让所有用户可读可写可运行。当把这个共享设置添加到smb.conf中时,我们把文件创建掩码和目录掩码设置为0755,由于掩码的作用,这样new用户对这个共享目录有读写执行权限,其他用户只有读和执行权限。修改配置文件smb.conf(修改之前先作一下备份),把下面的共享设置加入到smb.conf的末尾:

    (2)创建登录用户并添加到Samba的密码数据库中:创建new这个账号,以便远程用户能通过它来访问共享。

    要注意,上面这个new是Linux账号,我们没有给它设置本机登录密码,因此它不能从本机登录,只能从远程访问。由于客户端要用这个账号来登录Samba服务器,因此我们还要把这个账号添加到Samba服务器的smbpasswd文件中(因为登录到Samba服务器也就必须要登录到Linux系统,因此必须先在/etc/passwd中有这个账号,然后我们再把它添加到smbpasswd文件中去),并为它设置一个登录的SMB密码,注意samba的登录密码可以和本机登录密码不一样。

    以后要修改new用户的SMB密码时也用这个命令,从smbpasswd文件中移除这个账号则用命令"smbpasswd -x new"。创建了用户后,要建立用户映射文件,并且security安全级别要设置为user,这表示登录Samba服务器必须要有一个账号。修改smb.conf中的security选项,并在下面添加username map选项:

    用户映射文件smbusers用来包含所有的Samba用户名,在其中添加一行内容:new = "network username",表示new这个账号是网络上的远程用户。    
    (3)修改显示字符集以防止出现乱码:由于Ubuntu系统中通常使用UTF-8编码,而Windows主机中一般使用GBK编码,为防止在Windows中显示为乱码,找到[global],改一下workgroup选项的值,并在下面加一些字符集选项:

    这里因为大部分Windows主机的默认工作组名为WORKGROUP,因此我们改成这个值,你必须确保你的Windows主机的工作组名与smb.conf中的配置一致。注意如果你的Ubuntu中的字符集为zh_CN.GB2312或zh_CN.GBK,则display charset和unix charset都要设置为cp936(即简体中文)。设置完毕后,需要注销一次。才可以看到中文的目录。
    (4)当所有设置均完成后,运行一下testparm,检查一下配置是否有语法错误,然后重启Samba服务。
    4、访问共享目录:
    (1)Windows访问Linux中的共享:这个比较简单,像正常的Windows主机之间的共享访问一样。在“网上邻居”里查看工作组,里面会显示Ubuntu主机,点击可看到相应的共享。也可以在资源管理器的地址栏中输入://Ubuntu的IP,就会列出相应的共享。双击共享,然后输入用户名new和相应的SMB密码,即可进入共享目录。由于我们配置为可写,因此你还可以往共享目录里写东西。注意如果Window中可以看到共享目录,但是就是打不开,原因就在于权限问题。假设你在自己Ubuntu系统下右击一个文件夹,点共享,然后创建共享文件,你还必须把它设置为可读可写可运行,这样在Windows中才能访问它。
    (2)Linux访问Windows中的共享:
    第一种方法:用smb访问。直接点击系统菜单中的"位置->网络",里面有个“Windows Network",点进去,再找你要找的电脑和文件,届时可能需要被访问的那个计算机的帐号和密码。这种方法的成功率不高。
    第二种方法:用ubuntu系统自带的连接到服务器功能来访问。点击"位置->连接到服务器",在服务类型中选择“windows share”,在"Server"中输入windows计算机的ip地址或计算机名、"Folder"中输入共享文化夹名、"User Name"中输入Windows的账号、"Domain Name"中输入Windows的工作组名,点击连接,然后输入账号的密码,这样在Ubuntu系统桌面上就会显示这个共享的文件夹。这个方法的成功率比较高。接下来的两种方法是最基本的方法。
    第三种方法:用mount或smbmount把远地的共享目录挂载到本地。

    先建立一个挂载点,然后用Samba的new用户及其密码来挂载远程Windows中的共享目录。由于本地Ubuntu使用utf8,为防止显示乱码,指定传输的字符集为utf8。这样共享目录my_pictures就被挂载到/mnt/wind下了。也可用smbmount命令,它其实就是加了参数的mount(注意回车后可能还会要你输入一遍密码)。

    第四种方法:用smbclient工具来连接到共享目录,这是一个类似于ftp的工具。

    然后就可以用smbclient命令来操作共享目录,主要的命令有:
命令                            说明
?或help [command]            提供关于帮助或某个命令的帮助
![shell command]            执行所用的SHELL命令,或让用户进入SHELL提示符
cd [目录]                    切换到服务器端的指定目录,如未指定,则smbclient返回当前本地目录
lcd [目录]                    切换到客户端指定的目录
dir 或ls                      列出当前目录下的文件
exit 或quit                     退出smbclient   
get file1  file2              从服务器上下载file1,并以文件名file2存在本地机上的主目录下;如不想改名可把file2省略
mget file1 file2  filen     从服务器上下载多个文件
md或mkdir 目录                在服务器上创建目录
rd或rmdir    目录                删除服务器上的目录
put file1 [file2]            向服务器上传一个文件file1,传到服务器上改名为file2
mput file1 file2 filen      向服务器上传多个文件
  
    附:
    (1)security选项一共有四种安全级别:
    share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。
    user:Samba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。
    server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用 Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
    domain:域安全级别,使用主域控制器(PDC)来完成认证。
    (2)smb.conf中其他的一些常用选项:
    hosts allow=127. 192.168.1. 192.168.10.1:表示允许连接到Samba Server的客户端,多个参数以空格隔开。可以用一个IP表示,也可以用一个网段表示。hosts deny与hosts allow刚好相反。
    max connection=0:用来指定连接Samba Server的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0表示不限制。
    deadtime=0:用来设置断掉一个没有打开任何文件的连接的时间。单位是分钟,0代表Samba Server不自动切断任何连接。
    time server=yes/no:用来设置让nmdb成为windows客户端的时间服务器。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值