FTP服务器搭建与权限配置

来源:互联网 发布:淘宝抢购秒杀快速付款 编辑:程序博客网 时间:2024/05/22 14:38

原始需求

1. 在Ubuntu16.04系统上搭建FTP服务器;

2. 每个项目只有项目参与人才能访问项目目录;

3. 管理员可以访问所有项目目录;

 

可行性分析

基于附录中的LINUX权限说明,每个新建的用户都只属于自己命名的群组,用户新建的文档、目录也都属于该群组。如果我们让管理员加入该群组,增加文档的群组权限,就能让管理员也访问该目录;我们将其他不在群组的用户权限设置为0,则其他人都没有权限访问该文档、目录。从而我们就能够实现FTP服务器权限控制。

与需求不一致的原始需求要求所有参加项目的用户也能够访问到,此需求与上层沟通后废除了此项要求。

 

最终需求

1. 在Ubuntu16.04系统上搭建FTP服务器;

2. 每个项目只有项目主负责人才能访问项目目录;

3. 管理员可以访问所有项目目录;

 

FTP搭建步骤

前提设置

1.    所有的项目目录放置在:/home/mrdata/project 目录下,目录下每个子目录为一个单独的项目。

2.    每个项目目录及内部文档由项目主负责人创建上传。

 

FTP服务安装

使用命令:$sudo apt-get install vsftpd

测试本地服务运行正常

$sudo /etc/init.d/vsftpd start  开启服务

$sudo /etc/init.d/vsftpd stop  关闭服务

$sudo /etc/init.d/vsftpd status 查看服务状态

注意: 即使开始服务失败,指令输出的信息也可能是成功的。每次开启后,需要使用指令查询服务的启动状态日志信息。

创建用户

$sudo useradd  -d /home/mrdata/project -s /bin/bash XXX

为新用户设置密码

$sudo passwd XXX

服务配置

打开FTP服务配置文件
$sudo gedit /etc/vsftpd.conf

write_enable=YES  #可以上传(全局控制) 、删除、重命名操作
local_umask=007  #本地用户上传文件的umask,默认为077即只有文件拥有者具有访问权限,群组和其他用户都没有权限访问文件。配置为007表示群组用户也拥有访问文件权限。

chroot_list_enable=YES #如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
chroot_list_file=  #指定限制的用户文件,文件内部每个用户名一行

user_config_dir=  #后面跟存放配置文件的目录。

通过与chroot_local_user=YES/NO搭配能实现以下几种效果:
1、当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
2、当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
3、当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
4、当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

local_root= #此项设置每个用户登陆后其根目录位置
allow_writeable_chroot=YES   #此项设置允许进入可写的目录下

 

管理员加入群组

$sudo usermod -G XXX  YYY

YYY为管理用户名,XXX为新建用户的群组

此命令是将管理用户YYY外加到群组XXX中,不改变YYY的其他群组信息。

 

连接测试

附录

文件权限

使用命令ls -l中显示的内容如下:

-rwxrw-r‐- 1 root root 1213 Feb 2 09:39 abc

1)第一列的10个字符确定不同用户的权限

- 第一个字符代表文件(-)、目录(d),链接(l)

- 其余字符每3个一组(rwx),读(r)、写(w)、执行(x)

- 第一组rwx:文件所有者的权限是读、写和执行

- 第二组rw-:与文件所有者同一组的用户的权限是读、写、不能执行

- 第三组r--:不与文件所有者同组的其他用户的权限是读不能写和执行

也可用数字表示为:r=4,w=2,x=1  因此rwx=4+2+1=7

2)第二列 1 表示连接的文件数

3)第三列 root 表示文档拥有者

4)第四列 root  表示用户所在的组

5)第五列 1213 表示文件大小(字节)

6)第六列 Feb 2 09:39 表示最后修改日期

7)第七列 abc 表示文件名

 

 

Linux权限说明

创建用户时,比如运行如下指令

指令说明: 新用户的主目录为project,使用的shell为bash,新用户为liugx

/etc/passwd 文件保存用户的基本信息;

/etc/shadow文件保存用户加密后的密码等,看到!表示尚未设置密码;

groups用来查看用户所属的群组,以及群组内的成员;

使用passwd指令给liugx设置密码后,shadow中的对应字段改变;

 

结论:新建一个用户liugx时,默认新建一个群组liugx,该群组只有liugx一个用户。

 

新用户创建一个文档,查看文档的权限分配

使用su 质量切换当前用户为liugx;

使用echo 将一段文本写入文档中,文档不存在会新建一个;

使用ls -l 指令列举文档的信息;详细说明见附录1。

 

结论:liugx创建的文档、目录拥有者是liugx,文档的群组是liugx。

 

原创粉丝点击