共计 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 等用于存储数据。
这样的组合最大化保证了运行速度和数据安全。以下是大概的图示:
————————————– 分割线 ————————————–
玩转 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 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
然后会询问分区类型和分区数量等,我这里都采用默认设置,即直接按回车就好,以下为截图:
上面的参数是把整块新硬盘设置为一个大的分区,但这些设置尚未生效,我们还要在最后确认一次
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 级别会需要相当时间,请耐心等待。
完成后会看到:
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)
标题本想使用关键词 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 等用于存储数据。
这样的组合最大化保证了运行速度和数据安全。以下是大概的图示:
————————————– 分割线 ————————————–
玩转 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