好久没弄这个,今天朋友问我samba服务问题。又重新弄了一遍,加深下记忆。
系统:centos6.7
1. 安装
[root@VM-241 ~]# yum install -y samba samba-client
2. 修改配置文件
[root@VM-241 ~]# vim /etc/samba/smb.conf
    [global]
    workgroup = MYGROUP
    server string = Samba Server Version %v
    #允许哪些网段访问共享服务
    hosts allow = 127\. 10.19.21\. 10.19.10.
    # logs split per machine
    log file = /var/log/samba/log.%m
    # max 50KB per log file, then rotate
    max log size = 50
    security = user
    passdb backend = tdbsam
    load printers = yes
    cups options = raw
    [homes]
    comment = Home Directories
    browseable = no
    writable = yes
    [printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = no
    guest ok = no
    writable = no
    printable = yes
    [share] #共享名
    comment = Public Stuff #共享说明
    path = /home/share #共享路径
    public = no #不允许匿名登录
    writable = yes #可写
    printable = no #关闭打印服务
    write list = @user1 #可写用户组,多个可用空格分隔
    valid users = @user1 #有效的用户组,多个可用空格分隔
    browseable = yes #用户可浏览
3. 测试配置文件语法
[root@VM-241 ~]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[share]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
    workgroup = MYGROUP
    server string = Samba Server Version %v
    log file = /var/log/samba/log.%m
    max log size = 50
    idmap config * : backend = tdb
    hosts allow = 127., 10.19.21., 10.19.10.
    cups options = raw
[homes]
    comment = Home Directories
    read only = No
    browseable = No
[printers]
    comment = All Printers
    path = /var/spool/samba
    printable = Yes
    print ok = Yes
    browseable = No
[share]
    comment = Public Stuff
    path = /home/share
    write list = @user1
    read only = No
4. 创建系统用户和smb密码
[root@VM-241 ~]# useradd user1 [root@VM-241 ~]# smbpasswd -a user1 New SMB password: Retype new SMB password:
5. 创建共享目录
[root@VM-241 ~]# mkdir /home/share [root@VM-241 ~]# chmod 777 /home/share
6. 现在本机测试
[root@VM-241 ~]# smbclient //localhost/share -U user1
Enter user1's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-20.el6]
smb: \> put hello.py
putting file hello.py as \hello.py (22.4 kb/s) (average 22.4 kb/s)
smb: \> ls
  .                                   D        0  Fri Oct 23 14:02:34 2015
  ..                                  D        0  Fri Oct 23 13:59:57 2015
  hello.py                            A      321  Fri Oct 23 14:02:34 2015
        35036 blocks of size 524288\. 20525 blocks available
smb: \> exit
7. 客户端连接
7.1 测试客户端是mac,所以打开Finder, 菜单里找到”前往”—>”连接服务器”、或者运行command+k命令

7.2 输入用户名和密码

7.3 查看刚上传的共享文件

7.4 从客户端添加文件

7.5 到服务器上查看

8.添加匿名用户访问
[root@VM-241 ~]# vim /etc/samba/smb.conf
        [global]
        ...
        security = user
        passdb backend = tdbsam
        map to guest = bad user #允许匿名访问
        ...
        [public]
        comment = Public Stuff
        path = /home/public
        public = yes
        writable = yes
        printable = no
        guest ok = yes #允许匿名访问
9.创建共享目录和添加权限
[root@VM-241 ~]# mkdir /home/public [root@VM-241 ~]# chmod 777 /home/public
10.重启服务
[root@VM-241 ~]# /etc/init.d/smb restart
11.服务器本地测试
[root@VM-241 ~]# smbclient //localhost/public
Enter guest's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-20.el6]
smb: \> ls
  .                                   D        0  Fri Oct 23 15:16:05 2015
  ..                                  D        0  Fri Oct 23 15:16:05 2015
        35036 blocks of size 524288\. 20524 blocks available
            list.txt            .ssh/
smb: \> put md5.txt
putting file md5.txt as \md5.txt (8.8 kb/s) (average 8.8 kb/s)
smb: \> ls
  .                                   D        0  Fri Oct 23 15:17:00 2015
  ..                                  D        0  Fri Oct 23 15:16:05 2015
  md5.txt                             A      153  Fri Oct 23 15:17:00 2015
        35036 blocks of size 524288\. 20524 blocks available
12.客户端测试
12.1 测试客户端是mac,所以打开Finder, 菜单里找到”前往”—>”连接服务器”、或者运行command+k命令

12.2 匿名访问,选择”客人”

12.3 查看结果

13. samba参数详解
[share] # 该共享的共享名
comment = smb share test # 该共享的备注
path = /home/share # 共享路径
allow hosts = host(subnet) # 设置该Samba服务器允许的工作组或者域
deny hosts = host(subnet) # 设置该Samba服务器拒绝的工作组或者域
available = yes|no # 设置该共享目录是否可用
browseable = yes|no # 设置该共享目录是否可显示
writable = yes|no # 指定了这个目录缺省是否可写,也可以用readonly = no来设置可写
public = yes|no # 指明该共享资源是否能给游客帐号访问,guest ok = yes其实和public = yes是一样的
user = user, @group # user设置所有可能使用该共享资源的用户,也可以用@group代表group这个组的所有成员,不同的项目之间用空格或者逗号隔开
valid users = user, @group # 指定能够使用该共享资源的用户和组
invalid users = user, @group # 指定不能够使用该共享资源的用户和组
read list = user, @group # 指定只能读取该共享资源的用户和组
write list = user, @group # 指定能读取和写该共享资源的用户和组
admin list = user, @group # 指定能管理该共享资源(包括读写和权限赋予等)的用户和组
hide dot files = yes|no # 指明是否像UNIX那样隐藏以“.”号开头的文件
create mode = 0755 # 指明新建立的文件的属性,一般是0755
directory mode = 0755 # 指明新建立的目录的属性,一般是0755
sync always = yes|no # 指明对该共享资源进行写操作后是否进行同步操作
short preserve case = yes|no # 指明是否区分文件名大小写
preserve case = yes|no # 指明是否保持大小写
case sensitive = yes|no # 指明是否对大小写敏感,一般选no,不然可能引起错误
mangle case = yes|no # 指明混合大小写
default case = upper|lower # 指明缺省的文件名是全部大写还是小写
force user = testuser # 强制把建立文件的属主是谁。如果我有一个目录,让guest可以写,那么guest就可以删除,如果我用force user= testuser强制建立文件的属主是testuser,同时限制create mask = 0755,这样guest就不能删除了
wide links = yes|no # 指明是否允许共享外符号连接,比如共享资源里面有个连接指向非共享资源里面的文件或者目录,如果设置wide links = no将使该连接不可用
max connections = 100 # 设定最大同时连接数
delete readonly = yes|no # 指明能否删除共享资源里面已经被定义为只读的文件