如何搭建与Windows客户机结合使用的Samba文件服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何搭建与Windows客户机结合使用的Samba文件服务器相关的知识,希望对你有一定的参考价值。

据Samba项目网站声称,Samba是一组开源/免费软件套件,它为SMB/CIFS客户机提供了无缝顺畅的文件和打印服务。不像实现SMB/CIFS网络协议的其他系统(比如面向HP-UX的LM Server、面向OS/2的LAN Server或VisionFS),Samba(及其源代码)可以免费获取(最终用户不需要支付任何费用),并且允许Linux/Unix服务器和Windows/Unix/Linux客户机之间实现协同运行。
正是由于这些原因,在不同的操作系统(并非仅仅只有Linux)共存的网络环境下,Samba是文件服务器的优选解决方案――而最常见的网络架构就是多个微软Windows客户机访问一台安装有Samba的Linux服务器,我们将在本文中探讨这种情形。
要注意:另一方面,如果我们的网络完全由基于Unix的客户机(比如Linux、AIX或Solaris等等)组成,可以考虑使用NFS(不过在这种情况下Samba仍是一种选择),这时NFS的速度更快。
将Samba安装在Debian和CentOS上
在我们开始着手安装之前,可以使用操作系统的软件包管理系统,寻找关于Samba的信息:
在Debian上:
# aptitude show samba

在CentOS上:
# yum info samba

在下面这个屏幕截图中,我们可以看到“aptitude show samba”的输出结果(“yum info samba”会得到类似的结果):

现在不妨安装Samba(下面这个屏幕截图对应于安装到Debian 7 [Wheezy]服务器上的情况):
在Debian上:
# aptitude install samba

在CentOS上:
# yum install samba

将用户添加到Samba
如果是4.x之前的版本,想将用户添加到Samba,就需要一个本地Unix帐户:
# adduser <username>

下一步,我们需要使用带“-a”选项的smbpasswd命令,将用户添加到Samba,该选项指定随后用户名应添加到本地smbpasswd文件。系统会提示我们输入一个密码(该密码没必要与本地Unix帐户的密码一样):
# smbpassword -a <username>

最后,我们将访问系统中用作Samba共享区的一个目录的权限授予用户xmodulo(如果需要的话,还可以将访问权限授予其他用户)。要完成这一步,只需用文件编辑器(比如Vim)打开/etc/samba/smb.conf文件,浏览到文件末尾,使用描述性名称,创建一段代码(将名称括在方括号内),比如[xmodulo]:
# SAMBA SHARE [xmodulo] path = /home/xmodulo available = yes valid users = xmodulo read only = no browseable = yes public = yes writeable = yes

现在我们必须重启Samba;为了以防万一,使用testparm命令检查smb.conf文件,查找有无语法错误:
# service samba restart # testparm

要是有什么错误,testparm结束运行后,就会如实报告。
将Samba共享区映射为Windows 7 PC上的网络驱动器
鼠标右击Computer(电脑),选择“Map network drive”(映射网络驱动器):

键入安装有Samba的那台机器的IP地址,随后键入共享区的名称(这是smb.conf文件中刮在单括号内的名称),并确保“Connect using different credentials”(使用不同的登录资料来连接)复选框已勾选:

输入之前用“smbpasswd -a”设置的用户名和密码:

进入到Computer(电脑),检查网络驱动器是否已正确添加上去:

为了测试一下,不妨利用Samba的参考手册页创建一个PDF文件,并将它保存到/home/xmodulo目录中:

下一步,我们可以证实该文件可以从Windows来进行访问:

我们可以使用默认的pdf阅读软件打开该文件:

最后,不妨看一下我们能否将来自Windows的一个文件保存到刚映射的网络驱动器。我们将打开change.log文件,该文件列出了Notepad++的功能特性:

然后试着将它作为一个明文文件(.txt扩展名)保存到Z:\;然后,不妨看一下该文件在Linux中是否能浏览:

启用配额
第一步,我们需要证实当前内核是不是已经过编译并支持配额:
# cat /boot/config-$(uname -r) | grep -i config_quota

每一个文件系统最多有五种配额限制可予以实施:用户软限制、用户硬限制、用户组软限制、用户组硬限制和宽限时间。
现在我们将为/home文件系统启用配额,为此在/etc/fstab文件中对应/home文件系统的那一行,将usrquota和grpquota挂载选项添加到现有的defaults选项;为了让变更生效,我们将重新挂载文件系统:

下一步,我们需要在/home中创建两个文件,它们将充当用户配额和用户组配额的数据库:分别是aquota.user和aquota.group。之后,我们将针对启用配额的文件系统,创建当前磁盘使用表:
# quotacheck -cug /home # quotacheck -avugm

尽管我们已为/home文件系统启用了配额,但我们还没有对任何用户或用户组设置任何限制。检查现有用户/用户组的配额信息:
# quota -u <username> # quota -g <groupname>

最后,后几步包括:使用quotatool命令,为每个用户及/或每个用户组指定配额(注意:可以使用edquota来执行这项任务,但quotatool更直观简单,不太容易出错)。
想为名为xmodulo的用户将软限制设置在4 MB、将硬限制设置在5 MB,并为xmodulo用户组将软限制和硬限制分别设置在10 MB和15 MB:
# quotatool -u xmodulo -bq 4M -l '5 Mb' /home # quotatool -g xmodulo -bq 10M -l '15 Mb' /home
参考技术A 据Samba项目网站声称,Samba是一组开源/免费软件套件,它为SMB/CIFS客户机提供了无缝顺畅的文件和打印服务。不像实现SMB/CIFS网络协议的其他系统(比如面向HP-UX的LM Server、面向OS/2的LAN Server或VisionFS),Samba(及其源代码)可以免费获取(最终用户不需要支付任何费用),并且允许Linux/Unix服务器和Windows/Unix/Linux客户机之间实现协同运行。
正是由于这些原因,在不同的操作系统(并非仅仅只有Linux)共存的网络环境下,Samba是文件服务器的优选解决方案――而最常见的网络架构就是多个微软Windows客户机访问一台安装有Samba的Linux服务器,我们将在本文中探讨这种情形。
要注意:另一方面,如果我们的网络完全由基于Unix的客户机(比如Linux、AIX或Solaris等等)组成,可以考虑使用NFS(不过在这种情况下Samba仍是一种选择),这时NFS的速度更快。
将Samba安装在Debian和CentOS上
在我们开始着手安装之前,可以使用操作系统的软件包管理系统,寻找关于Samba的信息:
在Debian上:
# aptitude show samba

在CentOS上:
# yum info samba

在下面这个屏幕截图中,我们可以看到“aptitude show samba”的输出结果(“yum info samba”会得到类似的结果):

现在不妨安装Samba(下面这个屏幕截图对应于安装到Debian 7 [Wheezy]服务器上的情况):
在Debian上:
# aptitude install samba

在CentOS上:
# yum install samba

将用户添加到Samba
如果是4.x之前的版本,想将用户添加到Samba,就需要一个本地Unix帐户:
# adduser <username>

下一步,我们需要使用带“-a”选项的smbpasswd命令,将用户添加到Samba,该选项指定随后用户名应添加到本地smbpasswd文件。系统会提示我们输入一个密码(该密码没必要与本地Unix帐户的密码一样):
# smbpassword -a <username>

最后,我们将访问系统中用作Samba共享区的一个目录的权限授予用户xmodulo(如果需要的话,还可以将访问权限授予其他用户)。要完成这一步,只需用文件编辑器(比如Vim)打开/etc/samba/smb.conf文件,浏览到文件末尾,使用描述性名称,创建一段代码(将名称括在方括号内),比如[xmodulo]:
# SAMBA SHARE [xmodulo] path = /home/xmodulo available = yes valid users = xmodulo read only = no browseable = yes public = yes writeable = yes

现在我们必须重启Samba;为了以防万一,使用testparm命令检查smb.conf文件,查找有无语法错误:
# service samba restart # testparm

要是有什么错误,testparm结束运行后,就会如实报告。
将Samba共享区映射为Windows 7 PC上的网络驱动器
鼠标右击Computer(电脑),选择“Map network drive”(映射网络驱动器):

键入安装有Samba的那台机器的IP地址,随后键入共享区的名称(这是smb.conf文件中刮在单括号内的名称),并确保“Connect using different credentials”(使用不同的登录资料来连接)复选框已勾选:

输入之前用“smbpasswd -a”设置的用户名和密码:

进入到Computer(电脑),检查网络驱动器是否已正确添加上去:

为了测试一下,不妨利用Samba的参考手册页创建一个PDF文件,并将它保存到/home/xmodulo目录中:

下一步,我们可以证实该文件可以从Windows来进行访问:

我们可以使用默认的pdf阅读软件打开该文件:

最后,不妨看一下我们能否将来自Windows的一个文件保存到刚映射的网络驱动器。我们将打开change.log文件,该文件列出了Notepad++的功能特性:

然后试着将它作为一个明文文件(.txt扩展名)保存到Z:\;然后,不妨看一下该文件在Linux中是否能浏览:

启用配额
第一步,我们需要证实当前内核是不是已经过编译并支持配额:
# cat /boot/config-$(uname -r) | grep -i config_quota

每一个文件系统最多有五种配额限制可予以实施:用户软限制、用户硬限制、用户组软限制、用户组硬限制和宽限时间。
现在我们将为/home文件系统启用配额,为此在/etc/fstab文件中对应/home文件系统的那一行,将usrquota和grpquota挂载选项添加到现有的defaults选项;为了让变更生效,我们将重新挂载文件系统:

下一步,我们需要在/home中创建两个文件,它们将充当用户配额和用户组配额的数据库:分别是aquota.user和aquota.group。之后,我们将针对启用配额的文件系统,创建当前磁盘使用表:
# quotacheck -cug /home # quotacheck -avugm

尽管我们已为/home文件系统启用了配额,但我们还没有对任何用户或用户组设置任何限制。检查现有用户/用户组的配额信息:
# quota -u <username> # quota -g <groupname>

最后,后几步包括:使用quotatool命令,为每个用户及/或每个用户组指定配额(注意:可以使用edquota来执行这项任务,但quotatool更直观简单,不太容易出错)。
想为名为xmodulo的用户将软限制设置在4 MB、将硬限制设置在5 MB,并为xmodulo用户组将软限制和硬限制分别设置在10 MB和15 MB:
# quotatool -u xmodulo -bq 4M -l '5 Mb' /home # quotatool -g xmodulo -bq 10M -l '15 Mb' /home

Linux搭建Samba服务以供Windows用户使用

需求

  公司客户机Linux服务器上需要共享目录提供给客户上传下载文件(特别要求是傻瓜式的),Windows共享我倒是用过,Linux的话,之前没接触过这个业务,所以特此编写本篇文章以备不时之需。

 

环境准备

服务器:1台

系统版本:CentOS Linux release 7.7.1908 (Core)

# samba提供共享服务,client是客户端用于测试
[root@k8s-master smds]# yum -y install samba samba-client

# 查看Selinux状态
[root@k8s-master smds]# sestatus
SELinux status:                 disabled
 
# 关闭防火墙或开通以下端口
  <port protocol="tcp" port="139"/>
  <port protocol="tcp" port="389"/>
  <port protocol="tcp" port="445"/>
  <port protocol="tcp" port="901"/>
  <port protocol="udp" port="137"/>
  <port protocol="udp" port="138"/>

samba配置文件

# 备份默认配置文件
cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

# 修改配置文件(ntlm auth = yes开启后,变成了匿名访问,暂不深究)
cat >/etc/samba/smb.conf<<EOF
[global]
        workgroup = WORKGROUP
        server string = Samba Server Version %v
        security = user
        passdb backend = tdbsam
        load printers = yes
        cups options = raw
        ntlm auth = yes
    
[share]
        comment = share for users
        path = /var/oa_public/saveFiles
        browseable = yes
        writable = yes
        public = no
EOF

创建共享目录及分配权限

mkdir -p /var/oa_public/saveFiles
chmod -R 777 /var/oa_public/saveFiles

samba访问测试

[root@k8s-node2 ~]# smbclient //192.168.12.222/share/ -U sambauser
Enter WORKGROUP\\sambauser\'s password: 
Try "help" to get a list of possible commands.
smb: \\> ls
  .                                   D        0  Fri May  8 12:45:30 2020
  ..                                  D        0  Fri May  8 11:04:22 2020

        38680576 blocks of size 1024. 1329076 blocks available
smb: \\> lcd /etc/
smb: \\> put passwd
putting file passwd as \\passwd (155.0 kb/s) (average 155.0 kb/s)
smb: \\> ls
  .                                   D        0  Fri May  8 12:59:15 2020
  ..                                  D        0  Fri May  8 11:04:22 2020
  passwd                              A     1111  Fri May  8 12:59:15 2020

        38680576 blocks of size 1024. 1329072 blocks available

Windows用户访问

 

 

 

 

至此,可以随意上传下载文件了

其他(smbpasswd命令介绍)

smb用户是基于Linux系统用户的,所以得先创建Linux系统用户

useradd test

# 创建smb用户
[root@k8s-master smds]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.

smbpasswd -参数
-a 添加用户 #smbpasswd -a test
-x 删除用户 #smbpasswd -x test
-d 禁用帐号 #smbpasswd -d test
-e 取消禁用 #smbpasswd -e test
-n 清除密码 #smbpasswd -a test

 

以上是关于如何搭建与Windows客户机结合使用的Samba文件服务器的主要内容,如果未能解决你的问题,请参考以下文章

Samba服务器搭建

在Linux上搭建Samba服务器,用于与Windows之间的跨平台文件共享

Linux搭建Samba服务以供Windows用户使用

Linux搭建Samba服务以供Windows用户使用

samba服务器的功能

Linux如何详细搭建samba服务