现在的位置: 首页 > 综合 > 正文

samba的配置及使用

2013年10月21日 ⁄ 综合 ⁄ 共 2719字 ⁄ 字号 评论关闭

前几天使用winscp在windows和linux之间拷贝文件,结果由于编码的设置不当,导致在windows下查看linux上的文件时中文字符全是乱码,而且不能拷贝。google了下winscp乱码相关的问题,但是根据这些方法都没能解决这个问题。于是决定使用大名鼎鼎的samba。下面以Ubuntu 10.04为例,简单的说明samba的配置和使用方法。

 

1. 安装samba

 

# apt-get install samba smbfs

 

启动samba服务

# /etc/init.d/smbd start

 

# /etc/init.d/smbd restart

 

停止samba服务

 

# /etc/init.d/smbd stop

 

2. 配置samba

 

samba的配置文件是/etc/samba/smb.conf,该配置文件主要可以分成两部分,一部分是以"[global]"开始的全局设置部分,剩下的则各个共享的设置。下面通过一个简单的例子来说明,配置文件中常用的一些配置的含义,配置文件的内容如下:

 

 

[global]

workgroup = WORKGROUP

        server string = %h server

netbios name = nc1
server string = Linux Samba Server TestServer
security = share

 

[public]
        path = /opt/public
        writeable = yes
        browseable = yes
        guest ok = yes

上面这段配置文件的含义如下:

[global]这段是全局配置,是必段写的。

workgroup 就是Windows中显示的工作组;
netbios name 就是在Windows中显示出来的计算机名;
server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是其中一种;

另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;

 

[public] 这个在Windows中显示出来是共享的目录;
path = 可以设置要共享的目录放在哪里;
writeable 是否可写,这里我设置为可写;
browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。

如果您不想显示出来,那就设置为 browseable=no;

guest ok 匿名用户以guest身份登录

 

添加上述配置后,创建/opt/public目录,并将其所属的用户改为nobody,如下:

 

# mkdir -p /opt/public

# chown -R nobody:nogroup /opt/public

 

重启samba,在windows的地址栏中输入“//linux主机ip地址”,就应该可以看到一个public的文件夹,而且你可以往该文件夹写东西,创建新的文件。呵呵,是不是很简单啊,下面在看看其他的一些应用场景。

 

场景1.  创建一个共享目录,所有的人都读写,且不需要登录

 

[global]

。。。
security = share

 

[scene1]
        path = /opt/scene1
        writeable = yes
        browseable = yes
        guest ok = yes

 

 

# mkdir -p /opt/scene1

# chown -R nobody:nogroup /opt/scene1

 

 

场景2. 创建一个共享目录,所有的人都只能读,不能写,且不需要登录

 

 

 

[global]

。。。
security = share

 

[scene2]
        path = /opt/scene2
        writeable = no
        browseable = yes
        guest ok = yes

 

 

# mkdir -p /opt/scene2

# chown -R nobody:nogroup /opt/scene2

 

场景3. 创建一个共享目录,匿名用户不能访问,必须登录才能读写

 

 

# 添加用户

# mkdir -p /home/user1

# groupadd user1

# useradd -g user1 -d /home/user1 -s /sbin/nologin user1

# chown -R user1:user1  /home/user1

 

# 将该用户添加到samba,并为其设置登录密码

#smbpasswd -a user1

New SMB password:

Retype new SMB password:

 

# 修改samba配置文件

[user1]

        path = /home/user1

directory mask = 0755

create mask = 0644
        writeable = yes
        browseable = yes

valid user = user1

 

 

其他的情况可以参考上述配置进行自由的更改。

 

关于乱码的解决方法:

编码的设置需要根据linux系统的配置做出调整,如果系统的locale是zh_HK.UTF-8等含有UTF-8的编码,则在global中添加

 

display charset = UTF-8
unix charset = UTF-8

dos charset = cp936

 

如果locale是zh_CN.GBK或zh_CN.gb2312,则如下设置:

 

display charset = cp936
unix charset = cp936
dos charset = cp936

 

隐藏打印机:

 

如果你使用samba只是进行文件共享,那么你可以不想看到打印机的图标,通过在global中添加如下的配置可以很容易做到。

 

disable spoolss = yes

 

3. 使用samba

 

通过适当的配置,现在直接在windows的地址栏中输入“//linux主机ip地址”就应该能够看到那些共享的文件了。如果你想长期的占用,可以通过windows的“映射网络驱动器”来实现。

 

同样,在linux下想要访问windows下的文件也很简单,通过mount命令即可。

 

# mount -t smbfs  -o codepage=cp936,username=用户名,password=密码  //ip地址或计算机名/共享文件夹名   挂载点

# smbmount  -o codepage=cp936,username=用户名,password=密码 //ip地址或计算机名/共享文件夹名    挂载点

 

除了mount和smbmount,linux还有很多工具可以查看通过samba共享的文件,这里不再一一细说。

抱歉!评论已关闭.