- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
而笔者每次解决用户的一个需求之后,总会有一种成就感。这不前不久笔者刚文成一个FTP服务器的搭建。不过这个案例有点特殊,因为其FTP服务器采用的操作系统是Linux。为此感悟就更多了。
心得一:为用户分配组
FTP服务器常用来放置一些工作文件。为此网络管理员在部署FTP服务器的时候,必须要注意其权限的管理。也就是说,要做到用户只能够下载自己有权利查看的工作文件;只能够往指定的目录中上传文件等等。而企业中员工很多。如果为每个员工分开来设置权限,那么工作两会很大。为此在FTP服务器管理中,最好也跟操作系统用户一样,以组为单位设置权限,然后再将用户加入到组中自动继承相关的权限。如此的话,如果10个用户其权限类似,那么笔者只需要为他们建立一个组,然后对这个组进行一次权限设置即可。所以,通过组来管理用户的话,可以简化工作量,并实现统一管理的需要。
笔者这次采用的是vsftpd服务器。这个服务器安装完成后已经为网络管理员建立好了三个组。一般来说,只要用户权限管理不特别严格的话,那么只需要采用这个默认的组即可。即使企业用户对权限管理比较苛刻,那么也可以借鉴这几个组权限的设置,以此作为模板,进行适当调整后即可使用。在 vsftpd服务器中,其默认的组分别为real组、guest组以及anonymous组。其中real组中这三个组中权限最高的组。在这个组中的用户,不仅可以访问帐户自己的主目录,而且还可以访问其他用户的目录。如现在有一个用户amy。只要在FTP服务器上建立这个帐户后,操作系统会自动在 /home目录下为这个用户建立一个主目录,即/home/amy。当用户以这个帐户登陆后,服务器会将这个用户的目录当作其主目录。但是这个用户仍然可以访问其他相关的目录,即可以切换到其他主目录中。其次guest组权限也不小。这个组跟操作系统中的guest帐户不同,其权限要比这个帐户多的多。如有些情况下,网络管理员可能要求某些用户只能够访问自己的主目录,而不能够访问别人的目录。确实,这是FTP服务器最基本的权限控制法则。如果要实现这个控制的话,则只需要将用户加入到这个guest组中即可。因为默认情况下,这个组中的用户只能够访问自己的主目录,而不得访问主目录以外的文件。第三个组是anonymous组,即匿名组。默认情况下,这个组的权限最小。其只能够在受限的目录中下载文件,但是不能够往FTP服务器上上传文件。不过一般情况下,出于安全考虑,都是禁用这个组的。即当用户没有账号时,无法从FTP服务器上下载任何文件。
心得二:为特定的应用设置组
在部署FTP服务器的过程中,笔者发现有时候FTP服务器不一定是用户使用,系统管理员也可能需要使用这个FTP服务器。如数据库管理员需要使用FTP服务器进行异地备份。即数据库管理员先将数据库执行本地备份。然后在备份成功后,再将备份文件利用FTP协议传送到异地的服务器上。当然这些操作都是通过脚本文件完成的,同时结合操作系统的任务调度功能来实现。
那么这对于网络管理员部署FTP服务器有什么启示呢?笔者接到这个需求后,第一个反应就是要为其设置独立的组。主要是因为这些备份文件往往是某个应用的精华所在。如果有用户将这些备份文件窃取了,然后再还原到自己的数据库中的话,那么企业的所有信息,包括客户、价格信息等等就都泄露了。另外这些备份文件也是日后应用服务器出现故障时挽回数据的最后保障。如果这些备份文件被恶意破坏了,则以后就很难利用这些备份文件来最大程度的恢复数据。为此笔者来了解了这家企业的需求之后,就决定为这些用户设置独立的组。由于这些用户平时主要用来文件的备份,而不做他用。为此笔者将这个组设置为只允许访问自己的主目录,而不能够访问其他目录(参考guest组的设置)。这有什么好处呢?如果企业现在有数据库服务器、邮件服务器、OA服务器等等,都需要通过FTP 服务器实现异地备份。那么笔者就可以设置三个用户,分别属于这个组。然后利用这三个帐户分别将本地的备份文件上传到FTP服务器中,以实现异地备份。由于这三个用户各自只能够访问自己的目录,为此彼此之间就相当于是独立的。任何一个帐户都不能够看到其他一个帐户上传的文件,也不能够往其他用户的主目录中上传文件。这就给他们提供了一个相对独立的工作环境,能够减少他们异地备份的干扰。
为此,笔者认为不仅要根据组来管理FTP服务器用户的权限,而且有时候还需要根据FTP服务器的用途,来设置独立的组。如在可能会在脚本程序中利用FTP协议,此时为他们设置独立的组,防止其他普通用户组对他们进行干扰,这是很有必要的。
心得三:为不同的用户设置磁盘限额
在部署FTP服务器的时候,还必须解决一个难题,即每个用户最多可以往FTP服务器上上传多少容量的文件。通常情况下,笔者建议要给用户设置一个最大空间的限额。因为一台FTP服务器不只一个用户使用。如果每个用户都可以无限制的往FTP服务器上上传文件,而又不及时清理的话,这台FTP服务器的硬盘空间很快就会被占满。所以说,FTP服务器对于普通用户来说,其只是一个文件的中转站,而不是文件到备份服务器。所以说,需要根据用户的需要,为其设置最大容量的限制。
在vsftpd服务器中,可以在组的级别上为用户设置最大容量的限制。如可以为每个部门设置一个组,然后指定这个组中的用户最多可使用的空间。如此的话,加入到这个组中的用户就会自动受到这个大小的限制。到空间受到限制后,就会强迫用户及时清理FTP服务器中的内容。一些不用的文件要及时的清理掉,这不但可以节省空间,而且也是出于安全的考虑。另外,也可以为部门设置最大可用的空间。即为每个部门设置一个组,然后给组设置最大空间限制。然后加入到这个组中的用户共享这块空间(不是平均分配,而是共享)。这就给部门负责人更大的灵活性,其可以根据需要来管理这个空间。
心得四:限制某些帐户使用FTP服务器
其实对于大部分网络管理员来说,要管理员FTP服务器还是一门不小的学问。如在某些情况下,就需要限制一些特殊的帐户使用FTP服务器。因为他们会危害FTP服务器的安全。如在Linux操作系统上部署FTP服务器,就需要限制root帐户使用FTP服务器。因为这个root帐户其具有操作系统最高的管理权限。如果允许这个用户访问FTP服务器,那么后果就是,这个帐户不会受到组权限的限制。也就是说,即使将这个root帐户分配给guest 组,这个帐户仍然可以访问主目录以外的文件。所以会破坏原有的安全体系。为此,无论在哪个操作系统上部署FTP服务器,网络管理员都需要去了解操作系统帐户中是否有类似的特权用户。如果有的话,就需要禁止其访问FTP服务器。
可见,FTP服务器虽然其部署比较简单,发展到现在也已经比较成熟了。但是企业用户的需求是在不断改变的。为此网络管理员也需要应需而变,及时调整FTP部署策略,以满足用户的需求。
我们已经在我的工作场所使用 SVN 几年了,自从我们安装它以来,除了更新和备份之外,我们真的没有对其进行任何类型的维护。我们还应该做些什么来维护 SVN,或者我们已经做了所有我们真正需要做的事情吗?
正则表达式模式如下: ".*/.*/.*/.*/.*/.*/(.*)-\d{2}\.\d{2}\.\d{2}.\d{4}.*" 确实很难维护。 我想知道,有没有这样的东西: ".*/.*/.*/.*/
我已经搜索了一些,但没有找到任何对我有帮助的问题/答案。问题是我的 jQuery 函数调用变得太大而无法维护。我想知道我是否应该进行更多重构,或者是否有更好的方法来完成所有这些调用。当我进行一次调用时
我在 mySql 中有一个记录表。我需要按照用户指定的方式为它们维护订单。所以我添加了一个“位置”列。 当我移动特定记录时更新所有记录的 SQL 语句是什么?我有类似的东西: UPDATE items
我正在使用 go channels 作为类似队列的机制,这非常适合我。我正在为每个用户打开这些类似队列的 channel 之一,并为这些 channel 中的每一个都有一个 for-range 循环。
使用 docker,您可以非常好地基于其他图像创建图像。例如,您可以制作一个镜像 Java-jdk7(基于最新的 Ubuntu LTS),并在此基础上创建镜像 elastic-search 和 tom
我正在用 Bash 编写脚本。 我的关联数组有问题,当我像这样在我的数组中放置一条记录时: declare -A arr_list_people_name 我将文本放入循环关联数组的方式(将文本排序)
我目前正在开发一个系统,该系统需要在没有可用互联网连接的情况下安装 python(或者至少我不能假设有可用的互联网连接), 我想知道维护 PIP 存储库的间接费用是多少,而且这样的存储库也可能会满足系
我正在考虑使用 Chrome 扩展的国际化支持,如 here 所述. 建议的翻译方法是先创建英文 messages.json 文件,然后将其复制并翻译成给定的语言。 我的问题是,这对于初始翻译来说工作
我想在(自托管)bitbucket 服务器中克隆 github 存储库,并不时从 github 存储库中提取最新更改。在我们的克隆中,我们将做一些永远不会离开我们的存储库的实验性内容。 为了显示;对于
我的应用程序基于银行域,需要 session 处理。当应用程序空闲时(应用程序打开后没有任何触摸事件)必须在后台计算时间。 当应用程序进入前台时,我处理 session 维护以及 AppDelegat
我可以保持 UISegmentViewControl 段的选定状态吗?即,即使用户选择了另一个段,也可以保持一个段显示为选中状态?我似乎在任何地方都找不到任何可以做到这一点的东西!! 最佳答案 这是不
我的要求:我想将登录详细信息(电子邮件、密码)发送到服务器,必须保持有效用户名的 session 。 如何使用 iphone SDK 的“NSURLConnection”创建和维护 session ?
就像Carl's question over here我想问你(因为我自己找不到 :( ) 删除既不是静态也不是动态(例如通过反射)使用的程序集引用是否有任何好处。 最佳答案 除了清理项目之外,删除未
我使用的是Bootstrap 3。我目前有2个页面,一个是查看页面,一个是编辑页面。两个页面都有许多导航选项卡,例如 id= tab1、tab2、tab3。 我想要实现的是,当我在查看页面的 tab2
我正在创建 Chrome 应用程序,我希望我的用户在首次进入应用程序时登录或创建用户。 目标: 在 Chrome 打包的应用程序上维护登录状态。 问题: Cookie - Chrome 打包的应用程序
我有arm模板来使用资源及其设置重新创建资源组。这工作得很好。 用例: 一些开发人员访问 Azure 门户并更新某些资源的某些设置。有没有办法获得可以应用于我的模板的精确更改以使这些更改生效? (更新
我有一个包含三个组合框的表单,一个代表该月(可能的)31 天,第二个代表代表月份的 12 个数字,第三个代表与 future 五年相对应的年份值。 我将它们连接在一起形成一个日期 TheDay = C
我有一个打开多个 JIF 的应用程序,但我只想创建 JIF 的单个实例,因此我使用这些函数来检查这一点,并在按下某个键后使用 dispose 关闭 JIF(JDesktopPane. getSelec
我想为一个项目制作一个帐户屏幕,但我对 GUI 还很陌生。这是我第一次使用 JComboBox,但遇到了一些麻烦。我基本上想将 JComboBox 放置在一个盒子内,这将成为我的背景图像的一部分。我尝
我是一名优秀的程序员,十分优秀!