在Linux上安装开启FTP服务及FTP权限设置(好亲测)
在Linux上安装开启FTP服务及FTP权限设置(好...
别名:
分类:Linux 教程 | 收藏:0 | 评论: | 更新:2023-06-27 16:54:46 | 人气:0
用VSFTP来架设FTP服务器,VSFTP服务器是目前最好的FTP服务器软件,优点是体积小,可定制强,效率高。在安装Linux时会有ftp SERVER这个选项 安装的时候选中的话就把ftp功能给安装上了。 安装系统时没有安装也可以以后再进行安装,步骤如下:主菜单-->系统设置-->添加删除应用-->选中ftp SERVER,点击update;展开弹出的界面看到需要安装vsftpd-0:1.2.1...

免费阅读 打赏作者

在Linux上安装开启FTP服务及FTP权限设置(好亲测)

VSFTP来架设FTP服务器,VSFTP服务器是目前最好的FTP服务器软件,优点是体积小,可定制强,效率高。

在安装Linux时会有ftp SERVER这个选项 安装的时候选中的话就把ftp功能给安装上了。

 

安装系统时没有安装也可以以后再进行安装,步骤如下:

主菜单-->系统设置-->添加删除应用-->选中ftp SERVER,点击update;

展开弹出的界面看到需要安装vsftpd-0:1.2.1-3E.1.i386;

单击继续 需要插入安装盘-->OK

 

[root@mopx001 root]# cat /etc/redhat-release

Red Hat Enterprise Linux AS release 3 (Taroon Update 5)

检查vsftpd rmp包是否已安装

[root@mopx001 root]# rpm -qa|grep vsftpd

vsftpd-1.2.1-3E.1

 

启动ftp服务

[root@mopx001 root]# /sbin/service vsftpd start

Starting vsftpd for vsftpd: [ OK ]

 

几个重要的相关文件

[root@mopx001 etc]# ls vsf*

vsftpd.ftpusers vsftpd.user_list

 

vsftpd:

vsftpd.conf

 

文件的用处

vsftpd.ftpusers # Users that are not allowed to login via ftp

vsftpd.user_list # vsftpd userlist

vsftpd.conf # vsftp parameters config file

 

一、添加专门的ftp用户

[root@mopx001 etc]# groupadd ftpadmin

[root@mopx001 etc]# useradd ftpadmin -g ftpadmin

[root@mopx001 etc]# passwd ftpadmin

Changing password for user ftpadmin.

New UNIX password:

BAD PASSWORD: it is based on a dictionary word

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

二、//修改FTP配置文件

[root@mopx001 etc]# vi vsftpd.user_list 

// i插入

添加ftpadmin用户

//esc :x 保存退出。

 

设定使用者不得更改目录。这样做的目的也是基于安全性的考虑。

一般情况下,使用者的预设目录为/home/username

[root@mopx001 etc]# cd vsftpd

[root@mopx001 vsftpd]# vi vsftpd.conf

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

 

取消anonymous登录的功能。在vsftpd.conf文件中找到如下一行,并将其值改为“NO

anonymous_enable=YES

 

[root@mopx001 etc]# touch /etc/vsftpd.chroot_list

[root@mopx001 etc]# vi vsftpd.chroot_list

添加ftpadmin

 

三、重新vsFTPD服务器。

[root@mopx001 vsftpd]# /etc/init.d/vsftpd restart

Shutting down vsftpd: [ OK ]

Starting vsftpd for vsftpd: [ OK ]

 

四、测试

$ ftp 211.157.224.143

Connected to 211.157.224.143.

220 (vsFTPd 1.2.1)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (211.157.224.143:test): ftpadmin

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> put result3.txt

local: result3.txt remote: result3.txt

227 Entering Passive Mode (211,157,224,143,225,135)

150 Ok to send data.

226 File receive OK.

172427 bytes sent in 0.023 seconds (7.4e+03 Kbytes/s)

ftp> get temp.ls

local: temp.ls remote: temp.ls

227 Entering Passive Mode (211,157,224,143,31,50)

150 Opening BINARY mode data connection for temp.ls (0 bytes).

226 File send OK.

ftp>

 

至此配置成功~

至于 ftp 登录时提示“-bash: ftp: command not found”的话,是缺少 ftp 客户端的包,安装上就好了。

 

 

五、解决vsftp错误500 OOPS: cannot change directory:/home/****

 

  打开/etc/selinux/config

 

selinux=enforcingpermissive改成disabled

 

记得要重新启动服务器!

 

 当然还要确定以下问题:

 

1, 用户是否被 vsftpd 限制登录, 比如用户名在 /etc/ftpusers ,并被阻止登录了

 

2, /etc/vsftpd/vsftpd.conf 中是否打开了pam认证的选项 (自己编译安装的时候常因为这个出错) (vsftpd.conf中是否有pam_service_name=ftpvsftpd.

       到底是哪个要看PAM模块的服务文件/etc/pam.d/vsftpd.conf下是谁.我的是ftp且它的配置如下:

 

#%PAM-1.0

auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

auth required /lib/security/pam_unix.so shadow nullok

auth required /lib/security/pam_shells.so

account required /lib/security/pam_unix.so

session required /lib/security/pam_unix.so

如果/etc/ftpusers有的用户将被deny

 

3, 相关文件夹的权限是否正确.

 

关于“vsftpd 部分本地用户不能登录,部分可以”的问题,

系统中原来就有的本地帐号都不能登录,我的/etc/vsftpd/vsftpd.conf文件的配置如下:

 

local_enable=YES

write_enable=YES

chroot_local_user=YES

pam_service_name=vsftpd

/etc/pam.d/vsftpd存在且正常。

 

 

六、如果删掉某FTP用户的默认根目录:

[root@localhost home]#mkdir ftpuser

[root@localhost ~]# cat /etc/group     //查看共有哪些组

[ftpuser@localhost ~]$ groups ftpuser   //查看用户所属组

最后我们可以将文件夹赋给相应用户以及所在组

ftpadmin组中的ftpuser相应的拥有者权限

 

[root@localhost home]# chown -R ftpuser.ftpadmin /home/ftpuser/  //ll 命令检测/home/ftpuser/目录的拥有者及组权限

 

然后指定相应的用户或组的相应权限

[root@localhost home]# chmod -R 700 /home/ftpuser/

 

因为ftpuser目录是空文件夹,所以需要将shell脚本复制进去否则会出现问题(linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法)

[root@localhost home]# cp -pr /etc/skel/.bash* /home/ftpuser/       //说明此命令没有完全复制完/etc/skel/此目录的文件。

 

 

七、在linux中添加ftp用,并设置相应的权限,操作步骤如下:

 

1、环境:ftpvsftp。被限制用户名为test。被限制路径为/home/test

 

2、建用户:在root用户下:

 

       useradd -d /home/test test     //增加用户test,并制定test用户的主目录为/home/test

 

       passwd  test    //test设置密码

 

3、更改用户相应的权限设置:

          cat /etc/passwd | grep -v 'nologin'  //查看SSH权限的用户

         

          usermod -s /sbin/nologin test  //限定test用户不能telnet,只能ftp //关掉SSH

       或者#vi /etc/passwd 更改为: lynn:x:500:500::/home/lynn:/sbin/nologin

 

       usermod -s /bin/bash test    //用户test恢复正常   //开启SSH

 

       usermod -d /test test   //更改test用户的主目录为/test (或者#test:x:500:500:: :/sbin/nologin

 

passwd -l lynn 这就话的意思是锁定lynn用户,这样该用户就不能登录了。(禁止用户登录

psswd -u lynn 上面是对锁定的用户lynn进行解锁,用户可登录了。

 

禁止所有用户登录。
touch /etc/nologin 除root以外的用户不能登录了。(本人觉得慎用)

 

4、限制用户只能访问/home/test,不能访问其他路径

 

      修改/etc/vsftpd/vsftpd.conf如下: 

 

      chroot_list_enable=YES             //限制访问自身目录

 

       # (default follows)

 

        chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

 

        编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行改完配置文件,不要忘记重启vsFTPd服务器

              [root@ www.linuxidc.com root]# /etc/init.d/vsftpd restart

 

5、如果需要允许用户修改密码,但是又没有telnet登录系统的权限:

 

    usermod  -s /usr/bin/passwd test   //用户telnet后将直接进入改密界面

 

 

6、修改FTP端口:

 

步骤:1.修改/etc/services文件(默认分配的端口号和协议类型)

 

             # vi /etc/services

 

             21/tcp修改为2021/tcp

                      

                     ftp 21/tcp 改为 ftp 2121/tcp

                     ftp 21/udp 改为 ftp 2121/udp

 

       2.修改(新增)FTP配置文件vsftpd.conf

 

             # vi /etc/vsftpd/vsftpd.conf            

 

             如果文件中有Listen_port=21,则将21修改为2021

 

             否则添加一行Listen_port=2021

 

       3.启动TFP服务

 

             # service vsftpd restart

                      

                     执行/etc/init.d/vsftpd restart 重新启动vsftpd 服务。启动完成后可以使用netstat -tnulp | grep vsftpd

 

       4.检查TFP服务

 

         # service vsftpd status

 

 

[root]# service vsftpd stop //-->ftp服务

[root]# service vsftpd start //-->ftp服务

[root]# service vsftpd status //-->查看ftp服务状态