FTP
14
20201104
ftpClient.storeFile()上传中文文件名的文件失败
只需 要做如下设置,
ftpClient.storeFile(new String(filename.getBytes(“GBK”),“iso-8859-1”))成功
因为ftp协议规定所以必须用iso-8859-1,
不需要ftpClient.sendCommand(“OPTS UTF8”, “ON”)
同时:
- 经过debug发现中文文件名中如果含有中文右括号)则上传失败,否则即使中文件名也能上传。
- ftpClient.storeFile(new String(filename.getBytes(“UTF-8”),“iso-8859-1”)).上传失败
- ftpClient.storeFile(new String(filename.getBytes(),“iso-8859-1”))失败,debug发现getBytes(),获取到的默认编码就是UTF-8.
- ftpClient.storeFile(new String(filename.getBytes(“UTF-8”),“UTF-8”))失败
- ftpClient.storeFile(new String(filename.getBytes(“iso-8859-1”),“iso-8859-1”))失败
- ftpClient.sendCommand(“OPTS UTF8”, “ON”)如果不修改文件名编码,仍然是失败
ftpClient下载时同样要做文件名编码转换
LOCAL_CHARSET=“GBK”
ftpClient.connect(server,port)之后
if(FTPReply.isPositiveCompletion(ftpClient.sendCommand(“OPTS UTF8”),“on”)){LOCAL_CHARSET=“UTF-8”}
ftpClient.setControlEncoding(“iso-8859-1”)(编码大小写都行)
ftpClient.login(username,password)
下载文件流:
ftpClient.retrieveFileStream(new String(filename.getBytes(LOCAL_CHARSET),“iso-8859-1”)))
首先检查一下你的远程服务器是否已经安装了FTP服务。
#rpm -qa | grep vsftpd
查看ftp用户名和密码
/usr/bin/db_dump -d a /etc/vsftpd/vsftpd_login.db
yum install vsftpd
安装好后,要启动vsftpd服务:service vsftpd start
停止服务:service vsftpd stop
重启服务:service vsftpd restart
查看状态:service vsftpd status
新增ftp用户 vftpuser
#/usr/sbin/adduser -d /mnt/ftp -g ftp -s /sbin/nologin vftpuser
ftpConfig文件增加userlist_deny=NO之后需要在在/etc/vsftpd/user_list中增加刚才创建的用户,重启vsftp
新增用户后关键一部:在/etc/vsftpd/user_list中增加刚才创建的用户,重启vsftp
centos7防火墙管理
安装防火墙
yum install firewalld systemd -y
查看已经开放的端口:
firewall-cmd --list-ports
开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙:
systemctl reload firewalld
cat /etc/passwd | grep apache
touch Test.ini
Test.ini
tar -zxvf git-2.22.0.tar.gz
vi /etc/profile
export PATH=$PATH:/usr/local/git/bin
source /etc/profile
chmod u+w /etc/sudoers
//进行修改,修改完成之后:
chmod u-w /etc/sudoers
查看linux所有用户
cat /etc/passwd
在创建新用户时,将修改以下 4 个文件。
/etc/passwd
: 用户账户的详细信息在此文件中更新。/etc/shadow
: 用户账户密码在此文件中更新。/etc/group
: 新用户群组的详细信息在此文件中更新。/etc/gshadow
: 新用户群组密码在此文件中更新
whoami命令用于显示登入的用户名。
使用w命令查看登录用户正在使用的进程信息
1.ftp客户端连接ftp报:vsftp:…writeable…是因为vsftp限制了用户目录但是vsftp发现该目录有“写”权限
解决办法
chmod u-w ftpdata
2.新增用户后bash连接时间长,是因为创建用户时没有指定主目录。
解决办法
useradd -d /home/ftpdata myUser或者 useradd myUser -m
2.新用户指定主目录后,ssh登录仍然报 /usr/bin/xauth: file /home/chenwi/.Xauthority does not exist,是因为没有授权主目录owner为该user
解决办法
chown myUser:myUser -R /home/ftpdata
20220614
排查ftp连接问题
cat /etc/selinux/config 查看SELINU是否enable,如果enable需要设置下面ftp_full_access=on
getsebool -a|grep ftp
setsebool allow_ftpd_full_access on
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误
要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:
allow_writeable_chroot=YES
getenforce
setenforece 0 (宽松策略,临时修改)
永久修改
vim /etc/sysconfig/selinux
或者
输入命令vi /etc/selinux/config,将SELINUX=enforcing改为SELINUX=disabled,然后保存退出。
reboot
19.配置selinux允许ftp访问home和外网访问
[root@master ~]# setsebool -P allow_ftpd_full_access on
[root@master ~]# setsebool -P tftp_home_dir on
20.重启vsftpd服务
————————————————
原文链接【Linux常用服务器配置——Vsftpd服务】:https://blog.csdn.net/xiaoxiaowu0419/article/details/123916314
在/etc/profile.d/下配置jdk.sh无效原因可能是/etc/profile文件里最后写了export PATH=…因为这里的PATH会覆盖profile文件里export上面的读取profile.d里的PATH