码迷,mamicode.com
首页 > 系统相关 > 详细

linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录

时间:2019-03-21 15:37:38      阅读:511      评论:0      收藏:0      [点我收藏+]

标签:not   ext   chroot   cli   from   出现   mod   ssh   ftpd   

linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录
1.切换到root用户

2.查看是否安装vsftp,我这个是已经安装的。

[root@localhost vsftpd]# rpm -qa |grep vsftpd
vsftpd-3.0.2-11.el7_2.x86_64
3.如果没有发现,则安装。

yum install vsftpd* -y
4.启动vsftpd服务,以及重启命令(centos7.0以上版本)

[root@localhost vsftpd]# /bin/systemctl start vsftpd.service
[root@localhost vsftpd]# /bin/systemctl restart vsftpd.service
低版本试一下这些命令:

/etc/init.d/vsftpd restart
启动ftp命令  #service vsftpd start

停止ftp命令  #service vsftpd stop

重启ftp命令  #service vsftpd restart
设置自启:chkconfig vsftpd on

5.测试一下能否登录FTP了,先安装一个ftp客户端组件。

yum -y install ftp
尝试登录一下

ftp localhost
输入用户名ftp,密码随便(因为默认是允许匿名的)

登录成功,就代表ftp服务可用了。

但是,外网是访问不了的,所以还要继续配置。

6.取消匿名登录

vi /etc/vsftpd/vsftpd.conf
把第一行的 anonymous_enable=YES ,改为NO

重启

[root@localhost vsftpd]# /bin/systemctl restart vsftpd.service
7.创建一个组,用于存放ftp用户

groupadd ftpgroups
8.创建ftp用户,并加入ftpgroups组,/home/ftp是自己建的目录,不存在就自己创建一个

useradd -d /home/ftp/ftptest -g ftpgroups ftptest
设置密码

passwd ftptest
设置不允许用于用户登录

usermod -s /sbin/nologin ftptest

可以看到已经建好了

[root@localhost vsftpd]# ls /home/ftp
ftpn ftptest
这时候重启一下vsftpd服务

/bin/systemctl restart vsftpd.service
登录一下看,可以登录了,但是发现也能访问上层目录,甚至根目录,这不是我们希望的,修改一下配置文件让其只能访问自身目录

vi /etc/vsftpd/vsftpd.conf
如下设置

chroot_local_user=YES
chroot_list_enable=YES

(default follows)

chroot_list_file=/etc/vsftpd/chroot_list
另外,从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:

allow_writeable_chroot=YES

好了,这样就只能访问自身所属目录。

如果希望某个用户可以访问根目录,把用户名加入

/etc/vsftpd/chroot_list
不存在就创建这个文件,一行一个用户名。

如果还是登陆不了ftp,那很有可能是selinux的问题,这个东西把他关掉就行

vi /etc/selinux/config

SELINUX=enforcing 设置成SELINUX=disabled

重启一下服务器

reboot

重启完了别忘了把vsftpd服务打开,默认是自启的。

如果连接不上,很可能是防火墙阻止了,尝试关闭防火墙

systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)

如果出现远程文件夹无法显示的情况,请使用主动模式连接,在你的ftp工具上设置。

vsftpd.conf文件参数中文解释请移步:

匿名用户配置

anonymous_enable=YES # 是否允许匿名ftp,如否则选择NO
anon_upload_enable=YES # 匿名用户是否能上传
anon_mkdir_write_enable=YES # 匿名用户是否能创建目录
anon_other_write_enable=YES # 修改文件名和删除文件

本地用户配置

local_enable=YES # 是否允许本地用户登录
local_umask=022 # umask 默认755
write_enable=YES
chroot_local_user=YES # 本地用户禁锢在宿主目录中

chroot_list_enable=YES # 是否将系统用户限止在自己的home目录下
chroot_list_file=/etc/vsftpd.chroot_list # 列出的是不chroot的用户的列表

chown_upload=YES # 是否改变上传文件的属主
chown_username=username # 如果是需要输入一个系统用户名

userlist_enable=YES
userlist_deny=NO

deny_email_enable=YES # 是否允许禁止匿名用户使用某些邮件地址
banned_email_file=/etc/vsftpd.banned_emails # 禁止邮件地址的文件路径

ftpd_banner=Welcome to chenlf FTP service. # 定制欢迎信息
dirmessage_enable=YES # 是否显示目录说明文件, 需要收工创建.message文件
message_file= # 设置访问一个目录时获得的目录信息文件的文件名,默认是.message

xferlog_enable=YES # 是否记录ftp传输过程
xferlog_file=/var/log/vsftpd.log # ftp传输日志的路径和名字
xferlog_std_format=YES # 是否使用标准的ftp xferlog模式

ascii_upload_enable=YES # 是否使用ascii码方式上传文件
ascii_download_enable=YES # 是否使用ascii码方式下载文件

connect_from_port_20=YES # 是否确信端口传输来自20(ftp-data)

nopriv_user=ftpsecure # 运行vsftpd需要的非特权系统用户默认是nobody

async_abor_enable=YES # 是否允许运行特殊的ftp命令async ABOR.

FTP服务器的资源限制

idle_session_timeout=600 # 设置session超时时间
data_connection_timeout=120 # 设置数据传输超时时间

max_clients=50 # 用户最大连接数 默认是0不限止
max_per_ip=5 # 每个IP地址最大连接数

anon_max_rate=102400 # 匿名的下载速度 KB
local_max_rate=102400 # 普通用户的下载速度 KB

其他配置文件

/etc/xinetd.d/vsftpd

service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/local/sbin/vsftpd

server_args =

log_on_success += DURATION USERID

log_on_failure += USERID

nice = 10
disable = no
}

/etc/pam.d/vsftpd
PAM 认证

/etc/vsftpd.chroot_list
此文件包含对服务器上所有FTP内容有权限的用户名。对其他用户来说,他们在服务器上的主目录对他们显示为根目录。

/etc/shells
在允许本地用户登录之前,系统默认检查是否有有效的用户 shell。以防 PAM 认证不可用的情况。
/etc/ftpusers
此文件包含禁止FTP登录的用户名,通常有 "root", "uucp", "news" 之类,因为这些用户权限太高,登录 FTP 误操作危险性大。

防火墙设置

如果是用默认的SuSEFirewall2,在 YaST-系统-/etc/sysconfig 编辑器,network-SuSEfirewall2

把 ftp 添加到 FW_SERVICES_EXT_TCP,比如你还要打开 ssh 那么

FW_SERVICES_EXT_TCP "ftp ssh"

如果你需要被动模式 FTP 和 nat,在 YaST-系统-/etc/sysconfig 编辑器,network-SuSEfirewall2

FW_LOAD_MODULES "ip_conntrack_ftp ip_nat_ftp"

另一种方式直接修改防火墙配置文件:

cd /etc/sysconfig/

vi SuSEfirewall2

FW_SERVICES_EXT_TCP "ftp 21 telnet 23"

rcSuSEfirewall2 restart

linux开启FTP以及添加用户配置权限,只允许访问自身目录,不能跳转根目录

标签:not   ext   chroot   cli   from   出现   mod   ssh   ftpd   

原文地址:https://blog.51cto.com/13152912/2366632

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!