一、系统情况:
二、ftp安装:
使用yum命令直接安装ftp服务
# yum install vsftpd
三、ftp服务的开启与关闭命令
// 开启
service vsftpd start
//关闭
service vsftpd stop
//设置为开机启动
chkconfig vsftpd on
四、在linux中添加ftp用户,并设置相应的目录权限
创建用户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
五、限制用户只能访问/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
//编辑文件chroot_list,没有则创建此文件
//把用户名加进去 ,每个用户名一行
重启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