最近导师给了一项任务:在组内某台服务器上创建一个子用户,可以用在windows端用ssh连接到该用户做运算,也允许windows端的用户上传数据,但是禁止向win端下载数据,也禁止删除文件。

开始以为很简单,在Ubuntu系统上分设一个子用户,然后设定该用户的特定文件夹读写权限即可。但是,操作起来发现“图样图森破”,不是那么回事,设定文件夹权限不能实现导师的要求。顿感捉鸡,于是乎寻求CSDN的助攻,参照了几位大神的帖子,终于搞定了。为表示衷心的感谢,本文在最后的参考资料中给出了参考帖子的链接。

本人站在巨人的肩膀上,博采众家之长,悉心整理自己的操作经验,分享给大家,希望对大家有用。

基本步骤如下:

1、安装vsftpd软件包,命令如下:

sudo apt-get install vsftpd

2、查看vsftpd的运行状态,命令如下:

sudo netstat -nltp | grep 21

一般情况下,vsftpd安装完成后会自动启动,如下图所示通过 netstat 命令可以看到系统已经监听了 21 端口

特殊情况下,假如vsftpd没有自启动,可以手动开启:

sudo systemctl start vsftpd.service

3、配置ftp登录用户及权限

在这一步中,网上基本所有的帖子都用useradd,但是使用useradd时,如果后面不添加任何参数选项,例如:#sudo useradd test创建出来的用户将是默认“三无”用户:无Home Directory、无密码,无系统Shell,还需要自己配置,比较麻烦。

而使用adduser,创建用户的过程更像是一种人机对话,系统会提示你输入各种信息,然后会根据这些信息帮你创建新用户,所以,我用adduser来创建新的ftp登录用户。

 sudo adduser ftp

创建用户的过程如下图所示,创建完了后home下会自动出现一个对应的文件夹。

4、删除掉 pam.d 中 vsftpd,因为该配置文件会导致使用用户名登录 ftp 失败

sudo rm /etc/pam.d/vsftpd

5、限制用户 ftp只能通过 FTP 访问服务器,而不能直接登录服务器

sudo usermod -s /sbin/nologin ftp

注:此处一定要谨慎操作,如果新建的ftp用户只用来上传数据,可以这么操作。如果该用户还要ssh来连接,就不能这么操作。

6、配置vsftpd,这一步很关键,直接决定

sudo chmod a+w /etc/vsftpd.conf
sudo vim /etc/vsftpd.conf

主要添加以下几项权限:

# 限制用户对主目录以外目录访问
chroot_local_user=YES#是否允许匿名访问,NO为不允许
anonymous_enable=NO#是否允许本地用户访问,就是linux本机中存在的用户,YES允许
local_enable=YES#是否开启写模式,YES为开启
write_enable=YES#不允许下载
download_enable=NO#新建文件权限,一般设置为022,那么新建后的文件的权限就是777-022=755
local_umask=022#是否启动userlist为禁止模式,YES表示在userlist中的用户禁止登录ftp(黑名单),NO表示黑名单失效,我们已经让userlist作为一个白名单,所以无需使用黑名单功能
userlist_deny=NO#是否启动userlist为通过模式,YES的话只有存在于userlist文件中的用户才能登录ftp(可以理解为userlist是一个白名单),NO的话,白名单失效,和下面一个参数配合使用
userlist_enable=YES#指定哪个文件作为userlist文件,我们稍后编辑这个文件
userlist_file=/etc/vsftpd.user_list# 不配置可能导致莫名的530问题
seccomp_sandbox=NO#修改用户上传文件的所属主
chown_uploads=YES
chown_username=ftp#是否限制本地所有用户切换根目录的权限,YES为开启限制,即登录后的用户不能访问ftp根目录以外的目录,当然要限制
chroot_local_user=YES#是否启动限制用户的名单list为允许模式,上面的YES限制了所有用户,可以用这个名单作为白名单,作为例外允许访问ftp根目录以外
chroot_list_enable=YES#设置哪个文件是list文件,里面的用户将不受限制的去访问ftp根目录以外的目录
chroot_list_file=/etc/vsftpd.chroot_list#是否开启写模式,开启后可以进行创建文件夹等写入操作,添加后可以解决“500 OOPS: vsftpd: refusing to run with writable root inside chroot ”的问题
allow_writeable_chroot=YES# 使用utf8编码
utf8_filesystem=YES

7、新建文件 /etc/vsftpd.user_list,用于存放允许访问 ftp 的用户

修改 /etc/vsftpd.user_list ,加入刚刚创建的用户,一行一个用户

sudo touch /etc/vsftpd.user_list
sudo chmod a+w /etc/vsftpd.user_list

8、设置访问权限

防止用户下载可以通过以下两个途径:

(1)在vsftpd.conf中后面添加download_enable=NO(已经添加)

(2)修改local_umask=477,默认是=700,自动把上传的文件修改权限为“----r---w-”

9、禁止ftp用户具有删除文件的权利

(1)创建文件vsftpd_user_conf

mkdir -p /etc/vsftpd/vsftpd_user_conf

(2)编辑vsftpd_user_conf

vim /etc/vsftpd/vsftpd_user_conf/ftp

注意:后面的 ftp对应自己要限制权限的账户,此处我限制的是ftp 账户的权限

在里面写入下面的一句话,这句话的意思是 禁止使用 删除命令。

cmds_denied=DELE

10、重新打开配置文件

vim /etc/vsftpd/vsftpd.conf

然后添加

user_config_dir=/etc/vsftpd/vsftpd_user_conf

11 重启vsftpd 服务:

sudo systemctl restart vsftpd.service

至此Ubuntu上配置vsftpd,并且设定用户的权限为只可上传,禁止下载和删除。

虽然从FTP的层面,我禁止了用户下载数据的权限,但是sftp、scp和winscp层面的权限还是存在的。为了防止数据泄露,还必须禁掉这三个权限。具体操作见下一篇博文《Ubuntu16.04下禁用scp、sftp和winscp》

参考博文

(1)创建VSFTPD服务
https://www.cnblogs.com/guguobao/p/10498662.html
https://blog.csdn.net/u012743859/article/details/79019583
https://blog.csdn.net/baidu_39200025/article/details/86511336(2)Linux下useradd与adduser的区别
https://blog.csdn.net/u011499425/article/details/52397014

Ubuntu16.04 搭建FTP服务器,设置用户权限为只许上传、禁止下载和删除相关推荐

  1. Java连接FTP服务器并且实现对其文件的上传和下载

    概述 FTP是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文传协议".FTP作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用.F ...

  2. Python操作FTP服务器实现文件和文件夹的上传与下载,python清理ftp目录下的所有文件和非空文件夹

    Python 连接 FTP 服务器并实现文件夹上传实例演示 第一章:连接 FTP 服务器并实现文件夹上传 ① 连接 FTP 服务器 ② 区分文件和文件夹名 ③ 文件夹名包含空格处理 ④ 使用递归实现: ...

  3. ubuntu16.04搭建ftp服务器

    因为习惯了vs进行开发,所以对于Linux的代码编辑开发都在vs里面进行,通常我们都是ssh远程登录到Linux,使用ftp或者sftp共享Linux目录里面的文件方便对文件的共享,这里介绍一下在ub ...

  4. 搭建FTP服务器,设置用户权限775 ,并只许上传、禁止下载和删除

    1.安装vsftpd软件包,命令如下: sudo yum -y install vsftpd 2.查看vsftpd的运行状态,命令如下: sudo netstat -nltp | grep 21 一般 ...

  5. Ubuntu16.04 搭建SVN服务器(建立版本仓及import和checkout代码)

    Ubuntu16.04 搭建SVN服务器(建立版本仓及import和checkout代码) 1.    安装subversion sudo apt-get install subversion 2.  ...

  6. Ubuntu16.04搭建GitLab服务器教程

    GitLab官方搭建教程地址: https://about.gitlab.com/install/#ubuntu 1.安装包下载 Ubuntu16.04下载地址:http://releases.ubu ...

  7. win7 ftp服务器修改读写权限,局域网ftp服务器设置不同权限

    在计算机网络发展的短短几十年的时间里,信息共享一直伴随着我们,那么你知道局域网ftp服务器设置不同权限的方法吗?下面是学习啦小编整理的一些关于局域网ftp服务器设置不同权限的相关资料,供你参考. 什么 ...

  8. Ubuntu18.04搭建FTP服务器

    Ubuntu18.04搭建FTP服务器 1.安装vsftpd sudo apt-get install vsftpd 2.启动 service vsftpd start 3.查看运行状态 servic ...

  9. [CentOs7]搭建ftp服务器(3)——上传,下载,删除,重命名,新建文件夹

    摘要 上篇文章介绍了如何为ftp添加虚拟用户,本篇将继续实践如何上传,下载文件. 上传 使用xftp客户端上传文件,如图所示 此时上传状态报错,查看详情 从错误看出是应为无法创建文件造成的.那么我们就 ...

最新文章

  1. java 获取字符串长度_ava练习实例:java字符串长度与Java String charAt() 方法 (建议收藏)...
  2. python 函数 日期区间_python-如何获取两个日期之间的日期
  3. const 和 static 的作用
  4. [css] 怎样修改chrome记住密码后自动填充表单的黄色背景?
  5. pythonturtle画彩虹蟒蛇_python如何用turtle库画蟒蛇?
  6. 122. 买卖股票的最jia时机||(JavaScript)
  7. python裁剪图片box并保存_python实现图像随机裁剪
  8. Xbox360游戏收藏
  9. C#获取文件夹下的所有文件名
  10. CSU Scientific Conference
  11. 案例介绍ps去除网纹的方法
  12. 计算机基础表格制作教学设计,word中表格制作教学设计精选
  13. windows server 2019 安装CA-证书服务器
  14. 微信发送语音功能测试用例
  15. qemu在window使用树莓派
  16. 最萌吸血鬼猎人,螺旋猫COS『BLOOD C』更衣小夜
  17. 基于matlab的汽车牌照识别程序
  18. gii无法访问 yii2_YII2框架访问gii、debug页面404的错误解决方法
  19. html5怎么引入苹方简,css 引入苹方字体
  20. Linux下Vim的常用命令操作大全

热门文章

  1. shell脚本基础.md
  2. 湖北武汉机械员培训施工现场机械设备管理策略建筑七大员培训
  3. php实现crc16算法
  4. python数据清洗工具包_python 数据库 工具包
  5. 西电IEEE Fellow团队出品!最新《Transformer视觉表征学习全面综述》
  6. 海天味业组建智能生产线,打造完美海天酱油
  7. 焦作大学计算机课程表,焦作大学《计算机工程制图》试卷(一).doc
  8. Principle for Mac 6.12 中文版 优秀的交互原型设计工具
  9. windows 下 pycuda 安装问题
  10. Quantum LeaPs(QP)介绍