阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

用Ubuntu Server架设基于独立硬盘的Windows文件共享和FTP服务器

110次阅读
没有评论

共计 8301 个字符,预计需要花费 21 分钟才能阅读完成。

标题本想使用关键词 NAS,但考虑到并不打算建立 Web 管理页面,和一些其他复杂的功能,未避免造成误导,就把范围强调在“Windows 文件共享”和“FTP 服务器”上。更精确地说,就是使用 Samba 和 vsftpd 两个 Linux 程序。

安装和使用 Samba 和 vsftpd 都不是难点,本文也只是作为留给自己的笔记来发表。之所以放弃使用 FreeNAS 或 NAS4Free 等现成 NAS 服务器专注发行版,是因为与 Hyper- V 的兼容不够好。如果看过我之前文章的朋友,应该会记得,我的家庭服务器是一台(现在是两台了)配置还不错的旧机器,上面运行了微软 Hyper- V 服务器,而所有其他的 Windows Server、Linux Server 则以虚拟服务器的形式存在,并各自专注做少量的事情。

前不久我升级了主服务器,现在配置为双 Xeon L5420 + 32GB 内存,这足够折腾了。上面的虚拟服务器分别包括了:Windows Home Server 2011(备份和文件共享)、Windows Server 2012 R2 Core(域控制器和 DNS)、Windows 2012 R2(VPN 和 DFS)、Ubuntu Server 14.04 LTS(代理服务器)、Xubuntu 14.04(Matlab 服务器)。

所有虚拟服务器文件存放于 SSD 上,两块 SSD 组成 RAID 1。所有需要大容量存储的服务器都外挂传统硬盘,4 块 1.5TB 硬盘组成 RAID 10,供 Windows Home Server 2011 和 Ubuntu 等用于存储数据。

这样的组合最大化保证了运行速度和数据安全。以下是大概的图示:

用 Ubuntu Server 架设基于独立硬盘的 Windows 文件共享和 FTP 服务器

————————————– 分割线 ————————————–

玩转 vsftpd 服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd 配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu 实用简单的 FTP 架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设 FTP 服务器和 Apache 服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6 平台下 SeLinux 和 vsftpd 的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux 系统 vsftpd 源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

vsftpd 的安全配置案例分析 http://www.linuxidc.com/Linux/2012-12/76501.htm

————————————– 分割线 ————————————–

这次的 Ubuntu 文件服务器 +FTP 服务器在功能上看似与 Windows Home Server 2011 存在重叠,但实则这是我考虑了很久的一个计划。

Windows Home Server 2011 毕竟是微软停止推新的产品,尽管官方技术支持会一直持续到 2017 年之后,但终归是要考虑替换的。

另外就是最近 iCloud 闹出的明星 *** 事件,再次证明了我对云存储的担忧是正确的。我觉得云可以方便我们协同工作,共享不敏感文件,但绝对不是所谓的一切资料的最终存储解决方案。就像你不可能把现金放在保险箱里,然后把保险箱放在别人的地方,即使这个人承诺你“他会随传随到,随时为你服务”。

没有人可以保证数据的存储会绝对安全。如果数据足够敏感,任何时候可以相信的人都还是自己。所以,请不要把敏感的东西放在别人的地方,多买些硬盘花不了几个钱。

抛开难用的 iTunes 后,在不考虑云备份的前提下,iPhone 备份方案可以选择的就只有 NAS 和 FTP,于是就有了我在 Ubuntu 上自建 FTP 的想法。当然,在 Windows Home Server 2011 加入 FTP 支持也并不难,但我的 Windows Home Server 是对外的,而且我始终觉得这最后是会被我淘汰的,因此并不希望太依赖这个系统。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-09/106212p2.htm

本章内容大致包括 Ubuntu Server 的环境配置和新硬盘添加及设置。

1)Ubuntu Server 的安装和配置

安装就不细说了,只提一点,在过程中可以选择服务器角色的时候,记得勾选 OpenSSH Server 和 Samba File Server。实在忘记了,或者已经安装好但不记得是否装了这两项的,也没有关系,根据下面两行指令就可以安装。

sudo apt-get install openssh-server

sudo apt-get install samba

这里还不需要配置,具体配置在后边。SSH 其实也非必要,只是没有这个东西操作起来很不方便(不能远程,不能在 Windows 下用 Putty)。

用 Ubuntu Server 架设基于独立硬盘的 Windows 文件共享和 FTP 服务器

上面准备工作完成后,接下来是给服务器添加硬盘。

Ubuntu Server 13.10 安装 (ProFTP、Tomcat6、FFMpeg)  http://www.linuxidc.com/Linux/2014-02/96950.htm

2)Mount 新硬盘

我测试用的虚拟机配置为 8GB 系统硬盘 +20GB 存储硬盘。之所以把存储硬盘单独分出来,好处在于今后拆解、更换、拓展什么的都方便。个人强烈不建议用一块大硬盘把系统、存储都放在一起。

加入一块新硬盘后,我们要做的第一件事就是初始化、格式化它,然后 mount 到 Ubuntu 系统下(Linux 下没有盘符的概念,所以就是创建一个文件夹,然后让这个文件夹和硬盘关联起来)。

具体操作:

a) 执行以下指令

ls /dev/sd*

该指令会列出当前所有系统盘符和侦测到的硬盘,执行后结果如下:

/dev/sda /dev/sda1 /dev/sda2 /dev/sda5 /dev/sdb

其中,/dev/sdb 是新添加硬盘,前面的都是一个硬盘情况下系统默认配置。这里我们记住“sdb”这个关键词。

b) 执行以下指令

sudo fdisk /dev/sdb

注意,上面的 /dev/sdb 就是前面对应的新硬盘。执行该指令后,会出现一段描述,最下面要求输入命令代码:

Command (m for help):

我们先输入 p 命令

Command (m for help):p

回车后会看到一些有关新硬盘的信息,如容量等等,并要求再次输入指令,这一次我们输入 n:

Command (m for help):n

然后会询问分区类型和分区数量等,我这里都采用默认设置,即直接按回车就好,以下为截图:

用 Ubuntu Server 架设基于独立硬盘的 Windows 文件共享和 FTP 服务器

上面的参数是把整块新硬盘设置为一个大的分区,但这些设置尚未生效,我们还要在最后确认一次

Command (m for help):w

w 指令是把内存中的参数设定写入到硬盘上。输入 w 后回车,会看到

The partition table has been altered!

然后系统命令行会返回到 bash

c) 执行 ls /dev/sd* 检查一下:

/dev/sda  /dev/sda1  /dev/sda2  /dev/sda5 /dev/sdb  /dev/sdb1

多出一个 /dev/sdb1,分区成功!

d) 接下来要对新分区进行格式化

sudo mkfs.ext3 -L /storage /dev/sdb1

这里的 /storage 是可以更改的,就是对分区的一个命名而已,相当于 Windows 下盘符的命名。

/dev/sdb1 对应的是新分区,前面我们检查时看过了。

根据硬盘大小不同,以上指令完成的时间会不同。大硬盘,尤其是 TB 级别会需要相当时间,请耐心等待。

完成后会看到:

用 Ubuntu Server 架设基于独立硬盘的 Windows 文件共享和 FTP 服务器

e) 再接着我们要把新格式化好的分区 mount 到 Ubuntu 系统下

sudo mkdir /storage

前面说了,Linux 没有盘符的概念,分区对应的就是系统下一个文件夹,所以我在根目录下创建一个 storage 文件夹。

这个硬盘不是移动硬盘,是需要每次重启后自动 mount 的,所以我们需要修改 /etc/fstab 的内容

sudo nano /etc/fstab

在最下方加入

/dev/sdb1      /storage        auto    defaults        0      0

保存退出。重启后执行 mount 指令,应该会看到最后一段写着:

/dev/sdb1 on /storage type ext3 (rw)

用 Ubuntu Server 架设基于独立硬盘的 Windows 文件共享和 FTP 服务器

标题本想使用关键词 NAS,但考虑到并不打算建立 Web 管理页面,和一些其他复杂的功能,未避免造成误导,就把范围强调在“Windows 文件共享”和“FTP 服务器”上。更精确地说,就是使用 Samba 和 vsftpd 两个 Linux 程序。

安装和使用 Samba 和 vsftpd 都不是难点,本文也只是作为留给自己的笔记来发表。之所以放弃使用 FreeNAS 或 NAS4Free 等现成 NAS 服务器专注发行版,是因为与 Hyper- V 的兼容不够好。如果看过我之前文章的朋友,应该会记得,我的家庭服务器是一台(现在是两台了)配置还不错的旧机器,上面运行了微软 Hyper- V 服务器,而所有其他的 Windows Server、Linux Server 则以虚拟服务器的形式存在,并各自专注做少量的事情。

前不久我升级了主服务器,现在配置为双 Xeon L5420 + 32GB 内存,这足够折腾了。上面的虚拟服务器分别包括了:Windows Home Server 2011(备份和文件共享)、Windows Server 2012 R2 Core(域控制器和 DNS)、Windows 2012 R2(VPN 和 DFS)、Ubuntu Server 14.04 LTS(代理服务器)、Xubuntu 14.04(Matlab 服务器)。

所有虚拟服务器文件存放于 SSD 上,两块 SSD 组成 RAID 1。所有需要大容量存储的服务器都外挂传统硬盘,4 块 1.5TB 硬盘组成 RAID 10,供 Windows Home Server 2011 和 Ubuntu 等用于存储数据。

这样的组合最大化保证了运行速度和数据安全。以下是大概的图示:

用 Ubuntu Server 架设基于独立硬盘的 Windows 文件共享和 FTP 服务器

————————————– 分割线 ————————————–

玩转 vsftpd 服务器的四大高级配置:http://www.linuxidc.com/Linux/2013-09/90565.htm

vsFTPd 配置教程:http://www.linuxidc.com/Linux/2013-09/90562.htm

Ubuntu 实用简单的 FTP 架设 http://www.linuxidc.com/Linux/2012-02/55346.htm

Ubuntu 上架设 FTP 服务器和 Apache 服务器 http://www.linuxidc.com/Linux/2011-04/35295.htm

Ubuntu 13.04 安装 LAMP\vsftpd\Webmin\phpMyAdmin 服务及设置 http://www.linuxidc.com/Linux/2013-06/86250.htm

RHEL6 平台下 SeLinux 和 vsftpd 的匿名上传的简单案例 http://www.linuxidc.com/Linux/2013-04/82300.htm

Linux 系统 vsftpd 源码安装 http://www.linuxidc.com/Linux/2013-03/81475.htm

vsftpd 的安全配置案例分析 http://www.linuxidc.com/Linux/2012-12/76501.htm

————————————– 分割线 ————————————–

这次的 Ubuntu 文件服务器 +FTP 服务器在功能上看似与 Windows Home Server 2011 存在重叠,但实则这是我考虑了很久的一个计划。

Windows Home Server 2011 毕竟是微软停止推新的产品,尽管官方技术支持会一直持续到 2017 年之后,但终归是要考虑替换的。

另外就是最近 iCloud 闹出的明星 *** 事件,再次证明了我对云存储的担忧是正确的。我觉得云可以方便我们协同工作,共享不敏感文件,但绝对不是所谓的一切资料的最终存储解决方案。就像你不可能把现金放在保险箱里,然后把保险箱放在别人的地方,即使这个人承诺你“他会随传随到,随时为你服务”。

没有人可以保证数据的存储会绝对安全。如果数据足够敏感,任何时候可以相信的人都还是自己。所以,请不要把敏感的东西放在别人的地方,多买些硬盘花不了几个钱。

抛开难用的 iTunes 后,在不考虑云备份的前提下,iPhone 备份方案可以选择的就只有 NAS 和 FTP,于是就有了我在 Ubuntu 上自建 FTP 的想法。当然,在 Windows Home Server 2011 加入 FTP 支持也并不难,但我的 Windows Home Server 是对外的,而且我始终觉得这最后是会被我淘汰的,因此并不希望太依赖这个系统。

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-09/106212p2.htm

创建 samba 文件共享其实也不难,要点就是创建好 Linux 账户(要和 samba 账户对应),设置好共享文件夹权限。尤其是权限部分,比较没有 Windows 那么直观,理解以后并不难,但这里不打算复杂深入的讲解。

我的设置目的基本就一个要求,让 ftp 这个组的所有成员用户可以在 storage 这个共享文件夹里拥有读写权限,并且希望所有在 storage 下创建的新文件夹都继承 storage 的权限设定。

组:ftp

成员:xin、gong

系统安装时创建的用户为 xin,gong 用户还不存在,ftp 组也还未创建,所以我们先进行成员添加及组的添加。

sudo useradd gong -m -s /bin/bash

sudo passwd gong

# 以上指令可以创建用户 gong 并设置密码,然后我们创建 ftp 组

sudo groupadd ftp

# 再将用户 xin、gong 加入到 ftp 组中

sudo usermod -a -G ftp xin

sudo usermod -a -G ftp gong

# 通过 id xin 这个指令可以查看是否添加组成功。

有了用户,有了组,现在要给 /storage 这个文件夹设置相应的权限,并为 samba 设置相应的用户

# 去根目录下执行 ls -l,可以看到:

drwxr-xr-x    3    root    root    4096    Sep    4    12:20    storage

# 这说明 storage 这个文件夹当前所有人为 root,所有组为 root。

# 所有人不需要更改,把组改为 ftp,并让所有 ftp 组的成员都具备读写权。

sudo chown :ftp /storage

sudo chmod 775 /storage    # 如果不想其他账户看到,用 770 的权限也可以

# 执行 ls - l 查看结果:

drwxrwxr-x    3    root    ftp    4096    Sep    4    12:20    storage

# 添加 samba 用户:

sudo smbpasswd -a xin

sudo smbpasswd -a gong

执行上述指令时,每添加一用户就会自动要求为该用户设置 samba 密码。这个密码与登录 Ubuntu 系统的密码可以不同,它是 Windows 访问共享文件夹时需要的账户和密码。为了方便,通常你可以设置一个匹配 Windows 账户的 samba 用户和密码,这样 Windows 打开共享文件夹时就不需要输入口令了。

另外,samba 添加的用户一定要存在,就是必须先用 useradd 添加一个对应的 Linux 登录账户,否则会出错。

到这一步,其实还差点。之前说过了,要让 storage 共享文件夹下创建的新文件夹集成母文件夹权限,不然就会出现 xin 创建的文件 gong 不能访问(当然你需要这样的效果也可以)。要实现这个目的,需要再执行一行指令:

sudo chmod g+s /storage

到这一步就完成了权限的配置了。最后再照着下面的指令更改 /etc/samba/smb.conf 的内容:

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

sudo nano /etc/samba/smb.conf

# 用编辑器打开 smb.conf 后,默认设置什么都不用改,直接跳到最末端,新建以下内容:

[storage]

comment = Ubuntu File Server    # 对共享文件夹的描述

path = /storage    # 共享文件夹路径

available = yes    # 是否可用

valid users = @ftp    # @ftp 指 ftp 这个组,如果是用户则不需 @,多个用户用空格隔开

read only = no    # 是否只读

browsable = yes    # no 的话打开共享路径时将看不到文件夹,只能通过输入路径访问

writable = yes    # 是否可写

hide unreadable = yes    # 此项为可选,如没有,将看到一个名为 lost+found 的文件夹

# 保存退出后,重启服务:

sudo restart smbd

现在去 Windows 下 -> 运行 ->\\192.168.1.XX(Ubuntu 的 IP 地址)

应该能看到 storage 的文件夹,进入后尝试创建新文件,如果一切正常,那么共享就完成了。

之前将 storage 文件夹(背后是挂载的整块新硬盘)通过 samba 服务与 Windows 共享。之所以先共享,是为了完成 FTP 后方便文件管理。

软件:vsftpd

目标:让用户登录 FTP 后可以上传文件(主要用于 iPhone 照片备份),不同用户备份在各自的文件夹下。Windows 下打开共享的 storage 文件夹可以看到这些备份。高级一点的话,用户之间设置一下权限,不能相互读写(我个人不需要这个设定)。

第一步,安装 vsftpd

sudo apt-get install vsftpd

第二步,在 storage 下为 xin 和 gong 两个用户各自创建一个文件夹

sudo mkdir /storage/xin

sudo mkdir /storage/gong

然后修改用户默认文件夹路径

sudo usermod -d /storage/xin xin

sudo usermod -d /storage/gong gong

第三步,编辑 /etc/vsftpd.conf 配置文件

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak    # 编辑前先备份

sudo nano /etc/vsftpd.conf

# 找到以下几行代码,把前面的注释符删除(井字键)

write_enable=YES

chroot_local_user=YES   

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

# 搜索 umask,找到下面一行代码,将内容改为 002

# 022 将保留 755 权限,002 保留 775,默认是 077 的值,即上传文件只给 700 权限

local_umask=002

# 滚动到最末端,加入下面一行内容

allow_writeable_root=YES    # 注意,writeable 这个词有字母 e,不是我笔误

# 保存退出

第四步,编辑 /etc/vsftpd.chroot_list 文件(就是前一步定义的用户配置文件)

sudo nano /etc/vsftpd.chroot_list

# 正常情况下,这个文件里是没有内容的,是一个新文件。

# 将所有 ftp 用户的名字逐一写在该文件中,一行一个名字。最后保存退出。

第五步,重启服务

sudo service vsftpd restart

更多 Ubuntu 相关信息见 Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-20发表,共计8301字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中