linux的ftp权限,ftp的读取和写入权限
今天给各位分享linux的ftp权限的知识,其中也会对ftp的读取和写入权限进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
如何在linux下开启FTP服务
Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令rpm-qa|grepvsftpd来查看是否安装相应的包,如果没有安装那么可以执行yum-yinstallvsftpd来安装,安装之后首先创建ftp用户,比如ftp_test,命令如下:
useradd-s/sbin/nologin-d/home/ftp_testftp_test
目录尽量不要选择根目录下,这里是/home/ftp_test,并且ftp_test这个目录不要手动创建,否则权限会有问题,执行命令的时候会自动创建,
可以看到权限现在是对于ftp_test用户是可读可写可执行的,其他用户和组下面的都没有任何权限,现在为ftp_test用户创建密码:
passwd ftp_test
执行之后输入2次密码确认就设置好了密码
然后编辑vsftpd配置文件,位置是:vim/etc/vsftpd/vsftpd.conf
找到anonymous_enable这个配置项,默认是YES,修改成NO,表示不允许匿名用户登录
现在直接保存配置文件,执行systemctl start vsftpd.service启动vsftp服务,然后可以通过命令:systemctl status vsftpd.service查看ftp服务的运行状态,现在就可以用ftp客户端进行连接了,这里用FileZilla测试,连接正常
现在基本的ftp服务就部署完了,客户端可以正常上传,下载,修改文件;但是这样有个问题就是所有的目录都暴露给客户端了,虽然客户端不能随意修改删除其余的文件,但是因为目录可见,所以总会有一些风险,所以接下来还需要配置让ftp用户只在自己的家目录下面活动,而无法查看其它任何目录,同样是打开配置文件/etc/vsftpd/vsftpd.conf,找到chroot_local_user=YES这个配置,默认是注释的,这里去掉注释,表示只让用户在自己的目录里面活动,如果只是保存这一个配置的话,用ftp连接客户端会返回500 OOPS: vsftpd: refusing to run with writable root inside chroot()的错误,即禁止运行在可写的家目录中,因为刚才ftp_test这个目录有w权限,而现在我们使用的vsftpd版本是3.0.2属于比较新的版本,为了安全性做了一些限制,如果你此时想通过chmoda-w/home/ftp_test来去掉目录的写权限,那么连接成功是没问题的,但是无法上传文件了,所以网上很多说修改权限的方法是不可取的,正确的做法是应该在下面添加一行配置allow_writeable_chroot=YES表示允许对家目录的写权限,具体配置如下:
配置完这两项以后保存退出,然后执行systemctl restart vsftpd.service重启vsftpd服务,现在重新使用ftp连接就成功了,并且任何操作也是没问题的
现在可以看到上面的路径是一个/,对于ftp用户来说也就是根目录了,只能在这个目录下操作,而无法跳出这个目录
以上就是vsftpd服务的基本搭建过程,实际使用时可以分配多个用户
实现Linux上的FTP权限控制linux设置ftp权限
随着工作和生活的全面进行,FTP的使用越来越多,这也使得在Linux上使用FTP变得不可避免,因为如果没有恰当的FTP权限控制,未经授权的访问者可能会破坏系统或损坏数据。
在Linux上实现FTP权限控制,最常用的方式就是使用vsftpd服务器软件,但必须实现特定的设置,才能有效地实现FTP权限控制。
事实上,VSFTPD的安装并不难,一般情况下可以使用一行命令实现安装,例如:
sudo apt-get install vsftpd
此外,在配置/etc/vsftpd.conf文件中,也需要进行一些必要的设置:
#定义匿名用户和本地用户的工作目录
anon_root=/var/ftp
local_root=/home/username
#设置允许本地用户登录
local_enable=YES
#设置可以使用各自的ftp文件夹
chroot_local_user=YES
#禁止匿名用户下载
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
#设置不允许lfs(本地文件访问)
ls_recurse_enable=NO
完成上述配置后,重新启动vsftpd服务,使其生效:
sudo service vsftpd restart
可以看到,要在Linux上实现FTP权限控制,使用vsftpd服务器软件就已经足够了,而且安装和配置都不难。如果想知道更多关于FTP的使用方法,也可以参考其他文档资料,进一步了解。
Linux上设置用户通过SFTP访问目录的权限的方法
sftp和ftp是两种协议是不同的,sftp是ssh内含的协议,只要sshd服务器启动了,它就可用,它本身不需要ftp服务器启动。
1.查看openssh软件版本,想sftp服务用户只能访问特定的文件目录,版本需要4.8以上
代码如下:
[root@localhost ftp]# rpm-qa| grep openssh
openssh-server-5.3p1-81.el6_3.x86_64
openssh-5.3p1-81.el6_3.x86_64
openssh-clients-5.3p1-81.el6_3.x86_64
2.新增用户,限制用户只能通过sftp访问
代码如下:
[root@localhost ftp]# useradd-m-d/opt/ftp/dave-s/sbin/nologin dave
3.限制用户通过sftp登录进来时只能进入主目录,修改/etc/ssh/sshd_config文件
代码如下:
[root@localhost ftp]# vim/etc/ssh/sshd_config
#Subsystem sftp/usr/libexec/openssh/sftp-server
Subsystem sftp internal-sftp
Match User dave
ChrootDirectory/opt/ftp/dave
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
重启ssh
4.测试访问
代码如下:
root@10.1.1.200:test# sftp-oPort=22 dave@10.1.6.175
Connecting to 10.1.6.175...
dave@10.1.6.175's password:
Read from remote host 10.1.6.175: Connection reset by peer
Couldn't read packet: Connection reset by peer
发现连接不上,查看日志
代码如下:
[root@localhost ftp]# tail/var/log/messages
Jan 6 11:41:41 localhost sshd[4907]: fatal: bad ownership or modes for chroot directory"/opt/ftp/dave"
Jan 6 11:41:41 localhost sshd[4905]: pam_unix(sshd:session): session closed for user dave
解决方法:
目录权限设置上要遵循2点:
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,属主和属组必须是root;
ChrootDirectory设置的目录权限及其所有的上级文件夹权限,只有属主能拥有写权限,权限最大设置只能是755。
如果不能遵循以上2点,即使是该目录仅属于某个用户,也可能会影响到所有的SFTP用户。
代码如下:
[root@localhost ftp]# ll
total 4
drwxr-xr-x 3 dave dave 4096 Jan 5 13:06 dave
[root@localhost ftp]# chown root:root dave
[root@localhost ftp]# chmod 755 dave
[root@localhost ftp]# ll
total 4
drwxr-xr-x 3 root root 4096 Jan 5 13:06 dave
然后在测试通过
代码如下:
root@10.1.1.200:test# sftp-oPort=22 dave@10.1.6.175
Connecting to 10.1.6.175...
dave@10.1.6.175's password:
sftp ls
test
sftp cd..
sftp ls
test
sftp cd test
sftp ls
1.txt
sftp get 1.txt
Fetching/test/1.txt to 1.txt
/test/1.txt
可以看到已经限制用户在家目录,同时该用户也不能登录该机器。