LINUX安装FTP代码上传文件

一:安装ftp

1、检查是否安装了 ftp :(下图是已安装的效果,没安装没有展示)

rpm -qa|grep vsftpd

2、安装指令:(找一个 -y 指令)

yum install -y vsftpd

3、安装完成后执行步骤1 就可以看到ftp的版本信息

4、安装完成后,启动 FTP 服务:

service vsftpd start

5、启动后,可以看到系统已经监听了 21 端口:

netstat -nltp | grep 21

6、禁用匿名用户

vi /etc/vsftpd/vsftpd.conf (anonymous_enable=NO-----yes改为no)

7、保存后重启

service vsftpd restart

二:创建用户权限

1、创建用户,并指定分组和主目录(根据自己的需求设定参数)

    useradd -d /opt/reconciliation -s /sbin/nologin -g ftpGroup -G root ftpUser

    解析:

          useradd 添加用户ftpUser

          -d 指定用户根目录为/opt/reconciliation

          -s 指定shell脚本为/sbin/nologin,表示不允许shell登录   (vi /etc/passwd  编辑用户shell权限的地方)

          -g 创建分组ftpGroup

          -G 指定root分组

    PS:创建有问题可以删除重新创建 userdel -r ftpUser

2、设定密码
  passwd ftpUser

3、设置访问权限

   chown ftpUser /opt/reconciliation/

更改ftp配置文件
  修改配置文件/etc/vsftpd/vsftpd.conf并设定或删掉注释:

userlist_enable=NO
  anonymous_enable=NO
  chroot_list_enable=YES
  chroot_list_file=/etc/vsftpd/chroot_list

打开vi /etc/vsftpd/user_list并增加一行:
  ftpUser
  新建文件vi /etc/vsftpd/chroot_list并增加一行
  ftpUser

4、配置用户ftp权限及访问路径限制:

此时用usertest登陆系统ftp,是否可以访问?如果无法访问,说明我们的ftp做了限制。打开/etc/vsftpd/vsftpd.conf,查找userlist_enable、userlist_deny、userlist_file。如果 userlist_deny=NO:只允许userlist_file文件中的用户可访问ftp;如果 userlist_deny=YES:userlist_file文件中列举的用户不能通过ftp访问系统。userlist_enable是该功能的开 关。我们的系统配置如下:

userlist_enable=YES
  userlist_deny=NO
  userlist_file=/etc/vsftpd/user_list
  所以需要把用户加入到/etc/vsftpd/user_list文件中,每个用户一行。

由于该主目录是mpsp用户建的,usertest是mpsp组的成员,所以usertest默认具有增删查改权限;而usertest作为 mpsp组成员,对/home/mpsp下的所有路径具有访问权限(根据各目录的权限设置,默认是这样),登录ftp后会发现,usertest用户可以 访问其他目录,并且具有mpsp组的权限,这样做是不允许的,我们需要将usertest用户的访问范围控制在其主目录下。方法如下:

1. cd /etc/vsftpd 进入ftp配置文件目录
  2. vi vsftpd.conf编辑此文件,找到#chroot_list_enable=YES,删除前面的那个#号,表示开启此限制功能
  找到chroot_list_file:chroot_list_file=/etc/vsftpd/chroot_list
  3. 编辑chroot_list文件,加入你要限制的用户名,一行一个用户。

如果更新了vsftpd.conf,一定要重启ftp,命令如下:
  [root@linux sir001 root]# /etc/init.d/vsftpd restart
  关闭vsftpd:[ 确定]
  为vsftpd 启动vsftpd:[ 确定]
  启动FTP服务
  service vsftpd start
  还有两个参数:stop、restart

三:权限设置

-rw-r–r--. 1 root root 1944 5月 18 17:21 initial-setup-ks.cfg

一共有10位数
  其中: 最前面那个 - 代表的是类型,如果是目录,最前面这个是d
  中间那三个 rw- 代表的是所有者(user)
  然后那三个 rw- 代表的是组群(group)
  最后那三个 r-- 代表的是其他人(other)
  然后我再解释一下后面那9位数:
  r 表示文件可以被读(read)
  w 表示文件可以被写(write)
  x 表示文件可以被执行(如果它是程序的话)
  - 表示相应的权限还没有被授予  现在该说说修改文件权限了:
  在终端输入:
  chmod o+w xxx.xxx
  表示给其他人授予写xxx.xxx这个文件的权限
  chmod go-rw xxx.xxx
  表示删除xxx.xxx中组群和其他人的读和写的权限  其中:
  u 代表所有者(user)
  g 代表所有者所在的组群(group)
  o 代表其他人,但不是u和g (other)
  a 代表全部的人,也就是包括u,g和o
  r 表示文件可以被读(read)
  w 表示文件可以被写(write)
  x 表示文件可以被执行(如果它是程序的话)
  其中:rwx也可以用数字来代替
  r ------------4
  w ------------2
  x ------------1
  - ------------0  行动:
  + 表示添加权限
  - 表示删除权限
  = 表示使之成为唯一的权限  当大家都明白了上面的东西之后,那么我们常见的以下的一些权限就很容易都明白了:
  -rw------- (600) 只有所有者才有读和写的权限
  -rw-r–r-- (644) 只有所有者才有读和写的权限,组群和其他人只有读的权限
  -rwx------ (700) 只有所有者才有读,写,执行的权限
  -rwxr-xr-x (755) 只有所有者才有读,写,执行的权限,组群和其他人只有读和执行的权限
  -rwx–x--x (711) 只有所有者才有读,写,执行的权限,组群和其他人只有执行的权限
  -rw-rw-rw- (666) 每个人都有读写的权限
  -rwxrwxrwx (777) 每个人都有读写和执行的权限

举例:

chmod 777 /home/user 注:仅把/home/user目录的权限设置为rwxrwxrwx

如果想把单独的文件给对应的账号设置权限,要用对应的账户去登录linux去设置这个账号例如:我想把 /home/user这个文件给admin权限只读权限

就要用admin账号登录 设置 chmod 500 /home/user(4是只读,最好每次把1加上 也就是5)

特殊的时候:

setfacl -m u:admin:rwx /home/mengniu_xm/mengniu_r 用的这个命令 给单独用户 单独文件设置权限(mengniu_r给admin账号rwx权限)

setfacl -R -m u:admin:rwx /home/mengniu_xm/mengniu_wr(加个-R 实际过程中出现admin账号不能删除文件的情况 加上这个就可以了)

--------------------------JAVA上传文件***--------------------------------------

public class FtpUtil {
	 /** 
     * FTP上传单个文件测试 
	 * @throws IOException 
     */ 
	public static void uploadFile() throws IOException {
        
		String ip = "你的IP";            //服务器IP地址	
		String userName = "ftpqb";        //用于登陆服务器的用户名				
		String passWord = "awpakm4";             //登陆密码
		String remoteDirectoryPath = "/data/test/recruitment/tmp/word/resume";    //远程文件夹的绝对路径   	
		String localFilePath = "D:/JAVA面试题.doc";    //要上传到服务器的本地文件的绝对路径
		String remoteFileName = "777VA.doc";    //将本地文件上传到服务器后文件的名字			
		
		FTPClient ftpClient = new FTPClient();
		ftpClient.setConnectTimeout(10*1000);
		
		try {
			ftpClient.connect(ip,21);
//			ftpClient.enterLocalPassiveMode();//本地把此处关闭,部署服务器将此处关闭
//			ftpClient.setFileTransferMode(FTP.STREAM_TRANSFER_MODE);//上传有问题自行搜索该方法,看是否需要打开
			boolean isLogin = ftpClient.login(userName, passWord);
			System.out.println("uploadFile 登陆成功? " + isLogin);
			ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
//			ftpClient.setFileTransferMode(FTP.BINARY_FILE_TYPE); //上传有问题自行搜索该方法,看是否需要打开
			ftpClient.changeWorkingDirectory(remoteDirectoryPath);
			InputStream is = new FileInputStream(new File(localFilePath));
			boolean isStore = ftpClient.storeFile(remoteFileName, is);
			System.out.println("上传成功? " + isStore);
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				ftpClient.logout();
				ftpClient.disconnect();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
    
    public static void main(String[] args) {
    	try {
			uploadFile();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值