Better

Ethan的博客,欢迎访问交流

Linux下FTP与SFTP权限设置

最近需要给同事配置一个FTP帐号,没想到权限配置还挺麻烦的,记录一下

FTP基本命令

#which vsftpd
/usr/sbin/vsftpd
#service vsftpd status
#service vsftpd start
#service vsftpd restart

FTP权限设置

是否允许切换到上级目录

# 设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
# chroot_list_enable为NO时,理解成配置的用户列表为空,直接控制所有用户。
chroot_list_enable=YES/NO(NO)
# 用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_list_file=/etc/chroot_list
# 用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
# NOTE:chroot_local_user为NO时,list中配置的用户不能切换到其他目录。为YES时表示列出的用户可以切换到其他目录。
chroot_local_user=YES/NO(NO)

控制用户访问

# 控制用户访问FTP的文件,里面写着用户名称
userlist_file=/etc/vsftpd/user_list
# 是否启用vsftpd.user_list文件
userlist_enable=YES/NO(NO)
# 决定vsftpd.user_list文件中的用户是否能够访问FTP服务器。若设置为YES,则vsftpd.user_list文件中的用户不允许访问FTP,若设置为NO,则只有vsftpd.user_list文件中的用户才能访问FTP。
userlist_deny=YES/NO(YES)
# 文件专门用于定义不允许访问FTP服务器的用户列表,优先级比以上配置规则要高。
/etc/vsftpd/ftpusers

SFTP 关闭与开启

vsftpd是专门针对ftp协议进行配置的,使用中注意区分sftp,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。但ssh可配置是否开启sftp功能,ssh目前主要功能远程登录+ftp功能

vi /etc/ssh/sshd_config
Subsystem sftp /usr/libexec/openssh/sftp-server //注释此处
service sshd restart //重启生效

SFTP设置可访问路径

按群组控制,修改/etc/ssh/sshd_config文件

# 需要注释掉Subsystem,UsePAM,添加如下代码:
Subsystem sftp internal-sftp  #指定使用sftp服务使用系统自带的internal-sftp
Match Group sftpusers  #匹配用户,如果要匹配多个组,多个组之间用逗号分割
ChrootDirectory %h #ChrootDirectory则为允许访问的sftp目录,%h是用户主目录,也可以写指定路径;

控制单一用户

Subsystem sftp internal-sftp  
Match User ftpuser  
ChrootDirectory %h

注意

ChrootDirectory目录权限设置上要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。
针对多个用户或者用户组,设置不同的访问路径,可以设置多个Match和ChrootDirectory。如果设置相同的Match,只有第一个生效。ChrootDirectory不能设置多个。


留言