未命名
title: 测试
date: 2019-04-15 19:30:00
updated: 2019-04-15 19:30:00
permalink: test
| #include <iostream> | 
Ftp服务器搭建
本文记录的是在
Debian 8服务器上配置FTP服务器的操作以及问题,其他系统不一定适用
工作上的需求,需要搭建一个FTP服务器,本来以为只需要安装完毕,设置下路径就好了。但是一路配置下来,发现又好多坑,简单的事情也不简单:pensive:…
1. 安装
在Debian上,选用了vsftpd来作FTP服务
| sudo apt-get install vsftpd | 
2. 配置
安装完毕后,FTP服务就默认启动了,可以使用sudo service vsftpd status查看FTP服务状态。vsftpd的配置文件路径为/etc/vsftpd.conf
2.1 创建用户
vsftpd可以使用系统用户来登陆,我们先创建一个专门用于FTP登陆的账号
| # 创建用户 | 
修改/etc/passwd,设置用户没有登陆shell,避免FTP用户可以SSH登陆
| remote1:x:8001:8001::/home/ftpshare:/usr/sbin/nologin | 
2.1 FTP配置允许登陆的用户
默认vsftpd的配置是允许所有的系统用户登陆的,可以设置指定哪些用户登陆。/etc/vsftpd.conf添加下面配置
| userlist_file=/etc/vsftpd.userlist | 
创建/etc/vsftpd.userlist文件,写入允许登陆的用户名
| sudo touch /etc/vsftpd.userlist | 
重启vsftpd服务,应用新的配置
| sudo service vsftpd restart | 
2.2 问题
1. 530 Login incorrect
上面配置完重启后,使用FTP客户端(FileZilla)去登陆FTP服务器后,发现返回这个530 Login incorrect错误。这个是由于vsftpd的登陆认证使用了PAM认证导致的。修改/etc/pam.d/vsftpd文件
| auth required pam_shells.so => auth required pam_nologin.so | 
修改完后,重启FTP服务就可以正常登陆了。导致这个问题产生的原因在于:之前我们为了避免用户SSH登陆,将用户的登陆Shell设置成了nologin,也就是没有登陆Shell,但是在vsftpd的PAM设置中,要求用户一定要有登陆Shell才能登陆,因此我们将它改成不需要Shell也能认证登陆就可以了。^1
2. 限制访问上级目录
FTP登陆后,发现可以通过..目录访问上级目录,这样对于会泄露其他目录文件信息。添加下面配置来限制访问
| chroot_local_user=YES | 
allow_writeable_chroot用户控制用户目录是否可以写入的。如果没有添加,在上传文件的时候,会提示错误:500 OOPS: vsftpd: refusing to run with writable root inside chroot()
3. 550 Permission denied
上述修改后,再次上传文件,发现返回550 Permission denied错误,原来是全局没有开写权限。配置文件开启下面选项
| write_enable=YES | 
重启服务,终于可以正常使用FTP服务了:joy:~~~
家庭网络自动代理解决方案
Google Cloud赠送的$300到期了,之前发现连不上AppleStore还以为是网络问题,隔天才发现是Google Cloud到期导致的。没有了免费的服务器资源,就得去找一个了。通过对比,发现Vultr提供的VPS服务性价比比较高。每个月$3.5,提供1个CPU、512M内存、500GB/月流量。对于个人日常翻墙访问国外服务绰绰有余了。也有一个月$2.5的,但是只有IPv6地址,如果你是在学校这种有IPv6环境的地方,使用这个套餐相对会省一点。这个是我的邀请链接https://www.vultr.com/?ref=7748749,如果这篇文章对你有用,希望您能使用我的邀请链接~
树莓派3-NvidiaShieldTV2017性能对比
更新:之前Nvidia Shield TV中安装的Python是armv7版本,更新为aarch64版本后,居然快比armv7版本快3倍!
| ~ # python3 -OO bench.py | 
上述脚本在armv7版本下结果是15秒。说明aarch64相比于armv7架构性能提升是巨大的。
从Vim迁移到NeoVim
Vim使用了也有四年时间了,作为一款编辑器,确实是很方便,已经习惯于只使用键盘操作。主要的应用场景在与服务端编程,SSH连接服务器后,直接就可以Vim编辑源码了。
Vim主要写Python代码,使用jedi-vim插件,但是不支持虚拟环境。
nvim的配置文件
- To start the transition, create your |init.vim| (user config) file: - :call mkdir(stdpath(‘config’), ‘p’) 
 :exe ‘edit ‘.stdpath(‘config’).’/init.vim’
- Add these contents to the file: - set runtimepath^=~/.vim runtimepath+=~/.vim/after 
 let &packpath = &runtimepath
 source ~/.vimrc
- Restart Nvim, your existing Vim config will be loaded. 
使用Python
nvim中的python不想vim中那样直接编译到了vim种,nvim通过远程调用的方式来使用,可以使用系统中安装好的python
配置
https://neovim.io/doc/user/provider.html#provider-python
先创建一个虚拟环境专门用于暗转pynvim
| python3.5 -m venv py35nvim | 
配置python开发
| source py35nvim/bin/activate | 
| if has('nvim') | 
nvim-from-vim:help nvim-from-vim
~/.config/nvim/init.vim
bash_alias中添加别名alias nvim=vim
主题
使用真彩色
https://lotabout.me/2018/true-color-for-tmux-and-vim/
- 配置tmux
- 验证终端是否支持24真彩色
iterm2 需要可以设置terminal type
字体安装
brew tap caskroom/fonts
brew cask install font-fantasquesansmono-nerd-font-mono
主题使用
Plug ‘drewtempelmeyer/palenight.vim’
Plug ‘itchyny/lightline.vim’
状态栏使用 lighline
vim使用图标
https://github.com/ryanoasis/vim-devicons
需要patch的字体,
参考https://github.com/ryanoasis/nerd-fonts#option-8-patch-your-own-font
patch字体
参考
