linux安装ftp并对用户设置只能访问某一个文件夹的权限

1.查看ftp是否安装

rpm -qa |grep vsftp

2.ftp卸载命令

yum remove vsftpd

3.安装ftp

yum install vsftpd

4.ftp服务的开启与关闭命令

//  开启
service vsftpd start
 
//关闭
service vsftpd stop
 
//设置为开机启动
chkconfig vsftpd on   

5.创建用户ftpuser (可随意起名)

useradd -d /home/ftpuser ftpuser    // 指定此用户的主目录即家目录。(可直接设置成目标权限目录)
 
passwd ftpuser                     //为ftpuser 设置密码
 
// 可更改主目录
usermod -d /opt/FTP ftpuser       //更改用户ftpuser的主目录为/opt/FTP
 
// 更改用户相应的权限设置
 
// 限定用户ftpuser不能telnet,只能ftp
usermod -s /sbin/nologin ftpuser  
 
//当然如果想恢复为正常用户,可以执行以下命令:
usermod -s /sbin/bash ftpuser
 

6.限制用户只能访问/opt/FTP,不能访问其他路径

修改/etc/vsftpd/vsftpd.conf如下:
 
anonymous_enable=NO   //不允许匿名用户访问,默认是允许。
 
chroot_local_user=NO
 
chroot_list_enable=YES
// 打开此注释
chroot_list_file=/etc/vsftpd/chroot_list
 
// 加入限制目录地址  (可不加)
local_root = /opt/FTP

7.编辑文件chroot_list,没有则创建此文件

touch chroot_list

把用户名加进去 ,每个用户名一行
8.重启vsftpd服务器,完成。

service vsftpd restart

在这里插入图片描述
如果用户不能上传文件,记得修改文件夹权限

chmod -R 777 /file

/etc/vsftpd/vsftpd.conf 整体配置示例参考:

anonymous_enable=no
chroot_local_user=yes
local_enable=YES
write_enable=YES
allow_writeable_chroot=YES
local_umask=022
chown_uploads=YES
chown_username=ftpuser
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

六、说明:

anonymous_enable=YES    #设置是否允许匿名用户登录 
local_enable=YES        #设置是否允许本地用户登录 
local_root=/home        #设置本地用户的根目录 
write_enable=YES        #是否允许用户有写权限 
local_umask=022        #设置本地用户创建文件时的umask值 
anon_upload_enable=YES    #设置是否允许匿名用户上传文件 
anon_other_write_enable=YES    #设置匿名用户是否有修改的权限 
anon_world_readable_only=YES    #当为YES时,文件的其他人必须有读的权限才允许匿名用户下载,单单所有人为ftp且有读权限是无法下载的,必须其他人也有读权限,才允许下载 
download_enbale=YES    #是否允许下载 
chown_upload=YES        #设置匿名用户上传文件后修改文件的所有者 
chown_username=ftpuser    #与上面选项连用,表示修改后的所有者为ftpuser 
ascii_upload_enable=YES    #设置是否允许使用ASCII模式上传文件 
ascii_download_enable=YES    #设置是否允许用ASCII模式下载文件 

FTP 用户指定目录禁用上级目录:

在默认配置下,本地用户登入FTP后可以使用cd命令切换到其他目录,这样会对系统带来安全隐患。可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO(NO)
设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list
用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_local_user=YES/NO(NO)
用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
通过搭配能实现以下几种效果:
①当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
②当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
③当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
④当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。

 

七:相关命令:

0、查看FTP账户情况 : tail -1 /etc/passwd

1、useradd命令加参数-D查看系统创建账户的默认值

[root@localhost hcy]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

解释:
1)新用户添加到GID为100的公共组
2)新用户的HOME目录将会位于/home/username
3)新用户账户密码在过期后不会被禁用
4)新用户账户未被设置为某个日期后就过期
5)新用户账户将bash shell作为默认shell
6)系统会将/etc/skel目录下的内容复制到用户的HOME目录下
7)系统为该用户账户在mail目录下创建一个用于接收邮件的文件

可以用-D参数后面跟一个要修改的值的参数,来修改系统默认的新用户值。这些参数如下表:

-b default_home 更改默认的创建用户HOME目录的位置
-e expiration_date 更改默认的新账户的过期日期
-f inactive_days 更改默认的新用户从密码过期到账户被禁用的天数
-g group 更改默认的组名称或GID
-s shell 更改默认的登录shell

2、useradd添加账户和userdel删除账户

[root@localhost ~]# useradd test
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
[root@localhost ~]# tail -1 /etc/passwd
ftpuser:x:500:500::/home/ftpuser:/bin/bash
[root@localhost ~]# userdel -r ftpuser
[root@localhost ~]# useradd test
[root@localhost ~]# tail -1 /etc/passwd
ftpuser:x:500:500::/home/ftpuser:/bin/bash

由于我之前创建过ftpuser账户,删除账户的时候没有加-r参数,所以再次创建相同账户的时候会提示文件目录或者邮箱文件夹已存在。加-r参数重新删除账户再创建不会出现任何提示,然后在/etc/passwd下查看账户基本信息。

 PS:加上参数-r,userdel会删除用户的HOME目录以及mail目录。

userdel删除账户时可能会遇到以下问题:

[root@localhost /]# userdel ftpuser
userdel: user ftpuseris currently logged in

提示ftpuser账户当前状态是已登录,因此需要退出账户才能够userdel删除,退出用exit或者logout。

 

3、useradd参数

在创建用户时,可以使用下面的命令行参数改变默认值或默认行为:

-c comment 给新用户添加备注
-d home_dir 为主目录指定一个名字(如果不想用登录名作为主目录名的话)
-e expire_date 用YYYYY-MM-DD格式指定一个账户过期的日期
-f inactive_days 指定这个帐户密码过期后多少天这个账户被禁用;0表示密码一过期就立即禁用,-1表示禁用这个功能
-g initial_group 指定用户登录组的GID或组名
-G group ... 指定用户除登录组之外所属的一个或多个附加组
-k 必须和-m一起使用,将/etc/skel目录的内容复制到用户的HOME目录
-m 创建用户的HOME目录
-M 不创建用户的HOME目录(当默认设置里指定创建时,才用到)
-n 创建一个同用户登录名同名的新组
-r 创建系统账户
-p passwd 为用户账户指定默认密码
-s shell 指定默认登录shell
-u uid 为账户指定一个唯一的UID
 

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
20.1 ftp服务 ftp采用客户/服务器工作模式,这里采用的是vsftpd ftp服务器软件。ftp工作方式分为两种,一种port主动模式,一种pasv被动模式,是服务主动与被动进行连接。一般ftp服务器都为被动模式 。 20.1.1 vsftp概述 rpm -qc vsftpd /etc/logrotate.d/vsftpd.log /etc/pam.d/vsftpd /*vsftp的安全验证文件*/ /etc/vsftpd/ftpusers /*其中的用户不能登陆ftp*/ /etc/vsftpd/user_list /*其中的用户不能登陆ftp同上一样*/ /etc/vsftpd/vsftpd.conf /*ftp主配置文件*/ /etc/vsftpd/vsftpd_conf_migrate.sh vsftp的主目录的位置在/var/ftp下,并且是系统默认,不能更改。vsftp在通过rpm包安装好后,打开其服务并设为自动运行后,ftp就可以 提供服务了。 20.1.2 vsftp安装与启动 如果没有安装的话,通过以下方式进行安装。 rpm -ivh vsftpd-2.0.4-1.2.i386.rpm warning: vsftpd-2.0.4-1.2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 4f2a6fd2 Preparing... ########################################### [100%] 1:vsftpd ########################################### [100%] vsftpd服务采用是独立启动方式来启动的。 chkconfig --level 345 vsftpd on设为开机自启动 service vsftpd start 启动ftp服务。 20.2 vsftp访问配置 20.2.1 vsftp匿名用户 匿名用户:ftp 与anonymous其主目录为/var/ftp 普通用户:用户名为登录用户名,主目录为/home/用户名 20.2.2 vsftp默认配置文件 去掉#后配置选项如下: vi vsftpd.conf anonymous_enable=YES /*匿名用户启用*/ local_enable=YES /*本地用户可登陆*/ write_enable=YES /*是否允许写*/ local_umask=022 /*锁定创建文件权限*/ #anon_upload_enable=YES /*是否允许匿名用户上传*/ #anon_mkdir_write_enable=YES /*是否允许匿名用户创建目录*/ dirmessage_enable=YES /*允许显示目录信息*/ xferlog_enable=YES /*启用记录上传与下载日志*/ connect_from_port_20=YES /*开启20端口*/ #chown_uploads=YES #chown_username=whoever #xferlog_file=/var/log/vsftpd.log /*上传与下载日志文件*/ xferlog_std_format=YES /*使用标准日志格式*/ #idle_session_timeout=600 /*会话空闲时间*/ #data_connection_timeout=120 /*连接超时时间*/ #nopriv_user=ftpsecure #async_abor_enable=YES #ascii_upload_enable=YES /*是否使用ascii格式上传*/ #ascii_download_enable=YES /*是否使用ascii格式下载*/ #ftpd_banner=Welcome to blah FTP service. /*服务器banner*/ #deny_email_enable=YES /*启用电子邮件阻止*/ #banned_email_file=/etc/vsftpd/banned_emails /* 阻止的邮件地址文件*/ #chroot_list_enable=YES /*是否允许用户改变主目录*/ #chroot_list_file=/etc/vsftpd/chroot_list /*允许改变主目录的用户*/ #ls_recurse_enable=YES /*是否允许用户ls -R循环显示每一个目录*/ pam_service_name=vsftpd /*验证服务名*/ userlist_enable=YES /*用户列表中的用户不能登录FTP*/ #userlist_file=/etc/vsftpd/user_list listen=YES /*监听模式*/ tcp_wrappers=YES 说明:默认配置文件就已经能够实现匿名用户对/var/ftp文件内容的下载,以及本机用户对自已主目录的访问(上传与下载)。 20.3 vsftp配置基本实例 20.3.1 改变端口号 vi vsftpd.conf #新增底下一行,原有的配置不动 listen_port=2121 #重启服务 service vsftpd restart 20.3.2 特定用户不能更改目录 使用者的预设目录为/home/username,若是我们不希望使用者redhat在ftp 时能够切换到上一层目录/home,则可参考以下步骤。 #去掉注释 chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #或以上选项注释掉,所有用户都不能更改目录。 #编辑下列文件 vi /etc/vsftpd/chroot_list #加入内容 redhat #重启服务 service vsftpd restart 20.3.3 允许匿名上传 vi vsftpd.conf #修改以下内容 anon_upload_enable=YES /*是否允许匿名用户上传*/ anon_mkdir_write_enable=YES /*是否允许匿名用户创建目录*/ #重启服务 service vsftpd restart 注意:对于上传目录,必须设为可写才行。 chmod o+w /var/ftp 20.3.4 取消匿名登录 说明:取消匿名登录后,系统用户都可以通过用户名与密码来访问FTP服务器了。 vi vsftpd.conf #修改以下内容 anonymous_enable=NO #重启服务 service vsftpd restart 20.3.5 设置欢迎信息 vi vsftpd.conf #修改以下内容 ftpd_banner=Welcome to koumm’s FTP service. /*服务器欢迎信息*/ dirmessage_enable=YES /*默认是开启状态*/ #然后在/var/ftp中建立.message文件。 #该文件为目录说明文件,用于对目录的说明,每个目录中都可有。 vi /var/ftp/.message 欢迎访问ftp主目录。 /*通过SecureCRT登录可以打汉字,并可显示*/ #重启服务 service vsftpd restart 20.3.6 以独立进程联机 vi vsftpd.conf #新加入以下内容 setproctitle_enable=YES /*默认是开启状态*/ #重启服务 service vsftpd restart #测试 ps -ef|grep ftp #该功能可能只是在管理上可以查看用户登录的情况吧。 20.3.7 限制下载速度 vi vsftpd.conf #新加入以下内容 anon_max_rate=100000 /*匿名最高速为100KB*/ local_max_rate=200000 /*本机用户最高速为200KB */ #实际速度会在80-120%之间。 #重启服务 service vsftpd restart 20.3.8 使用pasv联机模式 vi vsftpd.conf #新加入以下内容 listen_port=2121 /*监听2121端口,用于防火墙 */ pasv_enable=YES /*启用pasv模式*/ pasv_min_port=9981 /*pasv端口范围*/ pasv_max_port=9986 #重启服务 service vsftpd restart 20.3.9 超级守护程序启动 vi vsftpd.conf #修改以下内容 listen=NO /*监听2121端口,用于防火墙 */ #在/etc/xinetd.d/新建以下内容 vi /etc/xinetd.d/vsftpd service vsftpd { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd port = 21 log_on_success += PID HOST DURATION log_on_failure += HOST } #重启服务 service xinetd restart 注:该配置是对以前服务的一个加深的理解,也相应的也提供了一个处理问题的思路。 20.3.10 最大连机数 vi vsftpd.conf #加入以下内容 max_clients = 100 /*服务器最大连机默认为0无限制*/ max_per_ip = 5 /*单IP最大连机默认为0无限制*/ #重启服务 service xinetd restart 注:该配置是对以前服务的一个加深的理解,也相应的也提供了一个处理问题的思路。 20.3.11 特定用户不能登录方法一 #其中的用户不能登陆ftp /etc/vsftpd/ftpusers #可以通过以下文件来进行控制的,第二行内容。 vi /etc/pam.d/vsftpd #%PAM-1.0 auth required pam_listfile.so item=user sense=deny file= /etc/vsftpd/ftpusers onerr=succeed auth required pam_shells.so auth include system-auth account include system-auth session include system-auth session required pam_loginuid.so #如果把上面的sense=deny改为allow后,也就是说只有/etc/vsftpd/ftpusers中的用户才能够访问ftp服务器了。这里提供了一个配置思路, 以供在实际环境中使用。 20.3.12 特定用户不能登录方法二 #编辑下列文件 vi /etc/vsftpd/chroot_list #修改或加入内容user_list文件本身就有,如没有,请手动添加。 # userlist_enable=YES userlist_file=/etc/vsftpd/ user_list #重启服务 service vsftpd restart 20.4 ftp虚拟用户配置 虚拟帐户与samba中的虚拟帐户有点像,就是为了防止别人用真正的帐户登录系统,而采用的一个帐户的别名帐户,而虚拟帐户只能够登录 ftp,而不能用做其它目的。 20.4.1 创建虚拟帐户文件 [root@redhat vsftpd]# vi vuser.txt bill /*用户名*/ password /*密码*/ koumm abc,.123 通过以上文件来创建用户数据库。 20.4.2 创建虚拟帐户数据库文件 [root@redhat vsftpd]# db_load -T -t hash -f vuser.txt /etc/vsftpd_login.db [root@redhat vsftpd]# chmod 600 /etc/vsftpd_login.db [root@redhat vsftpd]# ll /etc/vsftpd_login.db -rw------- 1 root root 12288 6月 15 17:06 /etc/vsftpd_login.db 修改权限以保证安全。 20.4.3 配置pam文件 为了能够使用ftp服务器能够使用数据库文件对用户进行身份验证,还需要修改vsftpd的PAM文件,把以前的pam中的内容注释掉,并加入以下 内容。 [root@redhat etc]# vi /etc/pam.d/vsftpd #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed #auth required pam_stack.so service=system-auth #auth required pam_shells.so #account required pam_stack.so service=system-auth #session required pam_stack.so service=system-auth auth required pam_userdb.so db=/etc/vsftpd_login account required pam_userdb.so db=/etc/vsftpd_login 20.4.4 创建虚拟帐户目录 mkdir /var/ftp/vuser useradd -d /var/ftp/vuser vuser useradd ftpvip 说明:创建一个帐户,指定主目录,也是ftp的主目录。不指定就是/home/vuser chown vuser.vuser /var/ftp/vuser chmod o+rw /var/ftp/vuser 20.4.5 编辑配置文件 1.编辑配置文件 [root@redhat pam.d]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO /*不能允许匿名用户登录*/ local_enable=YES /*本地用户登录*/ write_enable=NO local_umask=022 anon_upload_enable=NO anon_mkdir_write_enable=NO #加入以下内容 guest_enable=YES /*开启虚拟帐户访问*/ guest_username=vuser /*虚拟帐户对应的系统帐户*/ 说明:虚拟用户的上传下载权限的配置是用匿名配置选项来进行配置的,前提是不能允许匿名用户登录,可以匿名用户可写,虚拟用户就可 以写或上传了。 2.编辑独立配置文件 (1)虚拟帐户配置文件目录 vsftpd可以为不同的虚拟用户创建不同的单独的配置文件,来实现不同的功能,思想就是:可以为不同的虚拟用户对应不同的实体用户,从 而实现不能的功能。 [root@redhat pam.d]# vi /etc/vsftpd/vsftpd.conf 加入以下内容: vi /etc/vsftpd/vsftpd.conf user_config_dir=/ftpconfig /*虚拟用户主配置文件目录*/ (2)单独创建虚拟帐户配置文件 vi /ftpconfig/bill /*创建的虚拟用户*/ guest_enable=yes guest_username=vuser /*设置ftp对应的系统帐号为ftpuser*/ anon_world_readable_only=no /*允许匿名用户浏览文件系统*/ anon_max_rate=50000 /*限定传输速率为50KB/s*/ vi /ftpconfig/koumm /*创建的虚拟用户*/ guest_enable=yes /*开启虚拟帐号登录*/ guest_username=ftpvip /*设置ftp对应的系统帐号为ftpvip*/ anon_world_readable_only=no /*允许匿名用户浏览器整个服务器的文件系统*/ write_enable=yes /*允许在文件系统写入权限*/ anon_mkdir_write_enable=yes /*允许创建文件夹 */ anon_upload_enable=yes /*开启匿名帐号的上传功能*/ anon_max_rate=100000 /*限定传输速度为100KB/s*/ 说明:以上实体用户还需要事先创建,用户的主目录如是事先安装的话在/home中。以上方法可以应用一些复杂的应用环境中。 20.5 ftp客户端 20.5.1 ftp命令 ftp命令的功能是在本地机和远程机之间传送文件。 该命令的一般格式如下: ftp 主机名/IP 最常用的命令有: ls 列出远程机的当前目录 cd 在远程机上改变工作目录 lcd 在本地机上改变工作目录 ascii 设置文件传输方式为ASCII模式 binary 设置文件传输方式为二进制模式 close 终止当前的ftp会话 hash 每次传输完数据缓冲区中的数据后就显示一个#号 get(mget) 从远程机传送指定文件到本地机 put(mput) 从本地机传送指定文件到远程机 open 连接远程ftp站点 quit 断开与远程机的连接并退出ftp ? 显示本地帮助信息

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值