1 Samba 客户端配置
1.1 Linux 客户端访问Samba 共享linux 客户端访问服务器主要有两种方法1)使用smbclient 命令在 Linux 中,samba 客户端使用smbclint 这个程序来访问samba 服务器时,先要确保客户端已经安装了samba-client 这个rpm包。smbclient 可以列出目标主机共享目录列表。smbclient 命令格式:smbclient -L 目标IP 地址或主机名-U 登录用户名%密码当我们查看主机的共享目录列表时,提示输入密码,这时候可以不输入密码,我们直接按回车,这样表示匿名登录,然后就会显示匿名用户可以看到的共享目录列表。smbclient -L 主机名 或者smbclient -L 目录IP[root@rusky2 samba]# smbclient -L rusky2Password: Anonymous login successfulDomain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.23c-2]Sharename Type Comment
--------- ---- ------- homes Disk Home Directories public Disk Public sales Disk sales data IPC$ IPC IPC Service (Samba Server)Anonymous login successfulDomain=[MYGROUP] OS=[Unix] Server=[Samba 3.0.23c-2]Server Comment
--------- ------- RUSKY2 Samba ServerWorkgroup Master
--------- ------- MYGROUP RUSKY2如果想使用 samba 帐号相看samba 服务器端共享了什么目录,我们可以加上-U参数~,后面跟上用户名%密码。smbclient -L 192.168.0.188 -U boss%boss这样就显示了只有 boss 帐号才显示的tech 技术部共享目录。注意:不同用户使用smblient 浏览的结果可能是不一样,这要根据服务器设置的访问控制权限而定。我们还可以在使用smbclient命令行共享访问模式浏览共享的资料。smbclient 命令行共享访问模式命令格式:smbclient //目标IP 地址或主机名/共享目录-U 用户名%密码2)使用mount 命令挂载共享目录mount 命令挂载共享目录格式:mount -t cifs //目标IP 地址或主机名/共享目录名称挂载点 -o username=用户名[root@client ~]# mount -t cifs //192.168.0.188/tech /mnt/sambadata/ -o username=boss%boss这表示挂载192.168.0.188主机上的共享目录tech 到/mnt/sambadata 目录下,cifs 就是samba 所使用的文件系统1.2 Samba 的打印共享默认情况下,samba 的打印服务是开放~所以我们只要把打印机安装好后客户端的用户就可以使用打印机了。1)设置global 配置项修改 smb.conf 全局配置,开启打印共享功能# If you want to automatically load your printer list rather# than setting them up individually then you'll need thisload printers = yes# you may wish to override the location of the printcap file printcap name = /etc/printcap# on SystemV system setting printcap name to lpstat should allow# you to automatically obtain a printer list from the SystemV spool# system printcap name = lpstat# It should not be necessary to specify the print system type unless# it is non-standard. Currently supported print systems include:# bsd, cups, sysv, plp, lprng, aix, hpux, qnx printing = cups# This option tells cups that the data has already been rasterizedcups options = raw# NOTE: If you have a BSD-style print system there is no need to # specifically define each individual printer[printers]comment = All Printers path = /usr/spool/samba browseable = yes# Set public = yes to allow user 'guest account' to print guest ok = no writable = noprintable = yes安装完打印机后必须重新启动samba 服务,否则客户端可能无法看到共享的打印机。如果设置只允许部分员工使用打印机,我们可以使用valid users、hosts allow 或hosts deny 字段来实现。2 Samba 企业实战与应用
2.1 企业环境及需求samba 服务器目录:企业数据目录:/companydata公共目录:/companydata/share销售部目录:/companydata/sales技术部:/companydata/tech企业员工情况:总经理:gm销售部:销售部经理redking、员工sky、员工jane技术部:技术部经理michael、员工bill、员工joy搭建samba 文件服务器,建立公共共享目录,允许所有人访问,权限为只读,为销售部和技术部分别建立单独的目录,只可以总经理和相应部门员工访问,并且公司员工禁止访问非本部门的共享目录。这是个典型的企业文件服务器案例。2.2 需求分析对于建立公共目录 public 字段就可以实现匿名访问,员工只能访问本部门的共享目录,禁止访问非本部门的共享目录,我们可以通过设置目录共享字段“browseable = no”及字段“valid users”来实现其隐藏功能和相应的访问权限。这样设置不能很好得解决同一目录多种需求的权限设置,所以我们需要建立独立配置文件,为每个部门建立一个组后并为每个组建立配置文件来实现隔离用户权限会比较灵活~2.3 解决方案2.31 建立各部门专用共享目录使用 mkdir 建立需求的共享目录以便分门别类的存储相应资料,授权:chmod -R 777 /company/[root@rusky2 /]# cd companydata/[root@rusky2 companydata]# ls -ltotal 12drwxrwxrwx 2 root root 4096 Jul 10 02:42 salesdrwxrwxrwx 2 root root 4096 Jul 16 20:27 sharedrwxrwxrwx 2 root root 4096 Jul 16 20:27 tech2.32添加samba 服务器描述及设置smbpasswd 文件# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH workgroup = companydomain# server string is the equivalent of the NT Description field server string = Company Samba File Server默认/etc/samba/目录下没有smbpasswd 文件,我们要先关闭samba 的tdbsam验证。解决方法:在smb.conf 文件中注释掉passdb backend = tdbsam 一行,为了指定samba用户的验证我们加上这一条smb passwd file = /etc/samba/smbpasswd,然后保存退出。; passdb backend = tdbsam smb passwd file = /etc/samba/smbpasswd2.33 添加用户和组先建立销售部组 sales,技术部组tech,然后使用useradd 命令添加总经理帐号gm及各个员工的帐号并加入相应的用户组。[root@rusky2 samba]# pwd/etc/samba[root@rusky2 samba]# lsgm.smb.conf lmhosts sales.smb.conf secrets.tdb smb.conf smbpasswd smbusers tech.smb.conf2.34 配置smb.conf 文件(1)建立单独配置文件用户配置文件使用用户名命令,组配置文件使用组名命令。[root@rusky2 samba]# lsgm.smb.conf lmhosts sales.smb.conf secrets.tdb smb.conf smbpasswd smbusers tech.smb.conf(2)设置主配置文件smb.conf这里我们配置 smb.conf 主配置文件,在global中添加相应字段,确保samba 服务器的主配置文件可以调用独立的用户配置文件和组配置文件。include = /etc/samba/%U.smb.conf 表示使samba服务器加载/etc/samba 目录下格式为“用户名.smb.conf”的配置文件。include = /etc/samba/%G.smb.conf 表示使samba服务器加载/etc/samba 目录下格式为“组名.smb.conf”的配置文件。# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH workgroup = companydomaininclude = /etc/samba/%U.smb.conf include = /etc/samba/%G.smb.conf# server string is the equivalent of the NT Description field server string = Company Samba File Server设置共享目录/companydata/share[public] comment = Public data path = /companydata/share public = yes(3)设置总经理gm 配置文件vi /etc/samba/gm.smb.conf# A publicly accessible directory, but read only, except for people in# the "staff" group[sales] comment = sales data path = /companydata/sales writable = yes valid users = gm[tech] comment = tech data path = /companydata/tech writable = yes valid users = gm(4)设置销售部组sales 配置文件[sales] comment = sales data path = /companydata/sales valid users = @sales.gm writable = yes(5)设置技术部组tech 配置文件vi /etc/samba/tech.smb.conf[tech] comment = tech data path = /companydata/tech valid users = @tech.gm #表示允许tech用户组和gm访问tech目录。 writable = yes(6)重启samba 服务service smb restart(7)测试gm账号登录后可看到所有共享目录,其它人登录后只能看到所属部门下的共享目录,并且对public目录只有可读权限。