vsftpd使用方法小结
\
vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux, BSD, Solaris,HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服务器不支持的特征。比如:
- 非常高的安全性需求
- 带宽限制
- 良好的可伸缩性
- 创建虚拟用户的可能性
- IPv6支持
- 中等偏上的性能
- 分配虚拟 IP 的可能性
- 高速
vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者 Chris Evans考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
一个例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是为程序(这里就是 vsftpd了)单独指定一个新的目录,它也就不能访问那个目录之外的程序和文件了 --- 所以这也称为“被锁上的”。一个可能被潜在的攻击者破坏的FTP 服务器将被从系统的其他部分独立开来,从而避免了更大的损失。
由于有了如此多的特性,其中 FTP 服务的安全性应该是最重要的,vsftpd 比其他 FTP 服务器更加优越。
1.安装vsftpd
直接从源里面安装,easy \
代码:
sudo apt-get install vsftpd\
安装完毕后或许会自动生成一个帐户"ftp",/home下也会增加一个文件夹。
如果没有生成这个用户的话可以手动来,生成了就不用了:\
代码:
sudo useradd -m ftp
sudo passwd ftp\
有"ftp"帐户后还要更改权限\
代码:
sudo chmod 777 /srv/ftp (注意:原日志是这么写的,但是这句执行之后会有错误。应该是
sudo chmod 755 /srv/ftp)
在这个目录下我建立一个文件夹专门保存需要共享的内容
2.配置文件
通过sudo gedit /etc/vsftpd.conf修改。
配置文件如下:\
代码:
# cat /etc/vsftpd.conf
# 服务器以 standalong 模式运行,如果以 root 用户直接启动 vsftpd 进程,则必须。
# 注销语句以 xinetd 方式运行
listen=YES
# 上传总开关(全局控制)
write_enable=YES
# 接受匿名用户,默认无密码请求
anonymous_enable=YES
# 接受本地用户
local_enable=YES
# 本地用户上传文件(包括目录)的 umask
# 注意 vsftp 版本,某些旧版的该选项会被 chown_uploads/chown_username 二选项覆盖
local_umask=022
# 允许匿名用户上传文件,配合 anon_umask,否则文件权限皆为默认的600,用户上传的文件不提供给任何匿名用户下载
anon_upload_enable=YES
# 匿名用户上传文件(包括目录)的 umask
# 注意点同 local_umask
anon_umask=022
# 允许匿名用户创建目录,配合 anon_umask 实现目录可写,否则依我(aBiNg)看,实际用处很小
anon_mkdir_write_enable=YES
# 允许匿名用户删除/重命名文件等操作
#anon_other_write_enable=YES
# 为 YES 则进入目录时显示此目录下由 message_file 选项指定的文本文件(默认为 .message)的内容
dirmessage_enable=YES
# 使用上传/下载日志,日志文件默认为 /var/log/vsftpd.log,可以通过 xferlog_file选项修改
xferlog_enable=YES
# 使用 port 模式连接,并启用 20 端口
connect_from_port_20=YES
# 改变用户上传文件的所有者
#chown_uploads=YES
#chown_username=whoever
#xferlog_file=/var/log/vsftpd.log
# 日志使用标准 xferlog 格式
#xferlog_std_format=YES
# 用户登陆后 idle 时间,超过设置超则被踢出服务器
#idle_session_timeout=600
# login 时的欢迎信息
ftpd_banner=Welcome to feifei FTP service.
#deny_email_enable=YES
#banned_email_file=/etc/vsftpd.banned_emails
# 若为 NO,则记录在 chroot_list_file 选项所指定的文件(默认是/etc/vsftpd.chroot_list)中的用户将被
# chroot 在登录后所在目录中,无法离开。如果为 YES,则所记录的用户将不被 chroot。
chroot_local_user=YES
# 设置为 YES 则下面的控制有效
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
#ls_recurse_enable=YES
secure_chroot_dir=/var/run/vsftpd
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
local_root=/srv/ftp\
对了,更改配置后不要忘了重启ftp服务 \
代码:
sudo /etc/init.d/vsftpd restart\
此外还有开启关闭服务的命令\
代码:
sudo /etc/init.d/vsftpd start
sudo /etc/init.d/vsftpd stop
这样,就可以使用电脑的IP地址登陆这个ftp服务器了。
vsftpd我用了比较长的一段时间,感觉非常稳定,安全性高,就推荐给大家,给大家写点有关限制方面的文章。请看下文介绍!
一、如何让vsFTP服务器限制链接数,以及每个IP最大的链接数?
应该改vsFTPd服务器的配制文件vsftpd.conf,加入下面的两行:
max_clients=数字
max_per_ip=数字
举例:我想让我的vsFTP最大支持链接数为100个,每个IP,最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行:
max_clients=100
max_per_ip=5
改好了配制文件,不要忘记启动vsftp服务器。
二、如何限制传输速度?
anon_max_rate=数字
注:这是匿名的速度
local_max_rate=数字
注:这是vsFTP服务器上本地用户的速度
注:这个数字的单位是bit,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以100KB下载,所以这个数字应该是1024x100=102400
所以我们要在vsftpd.conf中加入下面的两行
anon_max_rate=102400
local_max_rate=102400
通过阅读上面的文章,我们不难看出vsftpd有许多小技巧,限制传输速度和链接点数是非常实用的功能,希望对你们有帮助!\
vi的常用命令
1、vi的基本概念\
基本上vi可以分为三种状态:
分别是命令模式(command mode)
插入模式(Insertmode)
底行模式(last line mode)
1) 命令行模式command mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
2) 插入模式(Insert mode)
"i","a","o","r"
只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。
3) 底行模式(last line mode)
命令模式下按":"
3,1>:/'查找字符' n 或者 :?'查找字符' n
3,2>:set nu 显示行号
3,3>:q!(退出不保存),:wq(保存并退出)
2、vi的基本操作
a) 进入vi
# vi mynewfile.txt
b) 切换至插入模式(Insert mode)编辑文件
"i","a","o","r"
c) Insert 的切换
从当前插入模式切换到命令行模式按[ESC]即可
d) 退出vi及保存文件
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
3、命令行模式(command mode)功能键
1). 插入模式
按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位
置开始输入文件;
按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。
2). 从插入模式切换为命令行模式
按「ESC」键。
3). 移动光标
vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「
j」、「k」、「l」,分别控制光标左、下、上、右移一格。
按「ctrl」+「b」:屏幕往“后”移动一页。
按「ctrl」+「f」:屏幕往“前”移动一页。
按「ctrl」+「u」:屏幕往“后”移动半页。
按「ctrl」+「d」:屏幕往“前”移动半页。
按数字「0」:移到文章的开头。
按「G」:移动到文章的最后。
按「$」:移动到光标所在行的“行尾”。
按「^」:移动到光标所在行的“行首”
按「w」:光标跳到下个字的开头
按「e」:光标跳到下个字的字尾
按「b」:光标回到上个字的开头
按「#l」:光标移到该行的第#个位置,如:5l,56l。
4). 删除文字
「x」:每按一次,删除光标所在位置的“后面”一个字符。
「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。
「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。
「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。
「dd」:删除光标所在行。
「#dd」:从光标所在行开始删除#行
5). 复制
「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
「#yw」:复制#个字到缓冲区
「yy」:复制光标所在行到缓冲区。
「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都
必须与“p”配合才能完成复制与粘贴功能。
6). 替换
「r」:替换光标所在处的字符。
「R」:替换光标所到之处的字符,直到按下「ESC」键为止。
7). 回复上一次操作
「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”
可以执行多次回复。
8). 更改
「cw」:更改光标所在处的字到字尾处
「c#w」:例如,「c3w」表示更改3个字
9). 跳至指定的行
「ctrl」+「g」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
4、Last line mode下命令简介
在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command m
ode」下后,再按「:」冒号即可进入「last line mode」。
A) 列出行号
「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。
B) 跳到文件中的某一行
「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,
如输入数字15,再回车,就会跳到文章的第15行。
C) 查找字符
「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想
要的,可以一直按「n」会往后寻找到您要的关键字为止。
「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想
要的,可以一直按「n」会往前寻找到您要的关键字为止。
D) 保存文件
「w」:在冒号输入字母「w」就可以将文件保存起来。
E) 离开vi
「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。
「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。
5、vi命令列表
1、下表列出命令模式下的一些键的功能:
h
左移光标一个字符
l
右移光标一个字符
k
光标上移一行
j
光标下移一行
^
光标移动至行首
0
数字“0”,光标移至文章的开头
G
光标移至文章的最后
$
光标移动至行尾
Ctrl+f
向前翻屏
Ctrl+b
向后翻屏
Ctrl+d
向前翻半屏
Ctrl+u
向后翻半屏
i
在光标位置前插入字符
a
在光标所在位置的后一个字符开始增加
o
插入新的一行,从行首开始输入
ESC
从输入状态退至命令状态
x
删除光标后面的字符
#x
删除光标后的#个字符
X
(大写X),删除光标前面的字符
#X
删除光标前面的#个字符
dd
删除光标所在的行
#dd
删除从光标所在行数的#行
yw
复制光标所在位置的一个字
#yw
复制光标所在位置的#个字
yy
复制光标所在位置的一行
#yy
复制从光标所在行数的#行
p
粘贴
u
取消操作
cw
更改光标所在位置的一个字
#cw
更改光标所在位置的#个字
2、下表列出行命令模式下的一些指令
w filename
储存正在编辑的文件为filename
wq filename
储存正在编辑的文件为filename,并退出vi
q!
放弃所有修改,退出vi
set nu
显示行号
/或?
查找,在/后输入要查找的内容
n
与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(
与?联用)继续查找,直到找到为止。
对于第一次用vi,有几点注意要提醒一下:
1、用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(
Insert mode)」才能够输入文字。切换方法:在「命令行模式(command mode)」下按一
下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了
。
2、编辑好后,需从插入模式切换为命令行模式才能对文件进行保存,切换方法:按「ESC
」键。\
3、保存并退出文件:在命令模式下输入:wq即可!(别忘了wq前面的:)\
Linux安装JDK出现“NoClassDefFoundError: /Object”的解决方案
\
在RedHat Linux上安装jdk出现了一个莫名的错误
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object
辛苦google了一个小时,终于找到了解决方案
首先要确认的是环境变量的设置是否正确
相信大家都是很细心的,这方面如果有错误也会很容易发现
然而还有一个隐蔽的地方也会产生上述的错误
就是lib和jre/lib文件夹中的rt和tools是否是打包后的形式
如果发现rt.pack 和 tools.pack 那么多半问题就出在这里
解决方法也很简单,只要将相应文件解压成rt.jar 和 tools.jar
可以使用bin里面的unpack200工具
如:unpack200 rt.pack rt.jar
解压后java -version应该就没有问题了~~
ps:在 SUSE Linux上也同样可以处理这样的问题。\
ubuntu 12.04安装jdk
\
在安装之前,系统没有任何jdk软件,也就是说在终端执行
\
- java -version
将会输出如下内容:
\
-
root@haiyang-Aspire:~# java -version\
-
程序 'java' 已包含在下列软件包中:\
-
* default-jre\
-
* gcj-4.6-jre-headless\
-
* openjdk-6-jre-headless\
-
* gcj-4.5-jre-headless\
-
* openjdk-7-jre-headless\
-
请尝试:apt-get install <选定的软件包>
先去 Oracle下载Linux下的JDK压缩包,www.oracle.com/technetwork…,下好后直接解压。
进入在存放jdk文件夹的当前目录,将解压好的jdk1.7.0_10文件夹用最高权限复移动到/usr/lib/jvm目录里,此时即使没有jvm目录也可以执行如下命令,jvm文件夹将得到创建。
\
- sudo mv jdk1.7.0_10 /usr/lib/jvm/
接下来需要设置环境变量,进入当前用户名的主文件夹,修改.profile文件。注意,该文件是当前用户的配置文件,如果要对使用计算机的所有用户生效,那么需要设置的文件应该是 /etc/profile。
\
- sudo gedit ~/.profile
在末尾加上:
\
-
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_10\
-
export JRE_HOME=/usr/lib/jvm/jdk1.7.0_10/jre \
-
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH\
-
\
-
export PATH=$JAVA_HOME/bin:$PATH
然后保存关闭,此时在命令行输入java -version将会仍然显示java没有安装。此时,需要使用source更新下.profile文件:
\
- $ source ~/.profile
再次使用java -version命令可以看到如下输出:
\
-
haiyang@haiyang-ubuntu:~$ java -version\
-
java version "1.7.0_10"\
-
Java(TM) SE Runtime Environment (build 1.7.0_10-b18)\
-
Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
到此,已经将oracle jdk配置完成。如果之前系统里面已经安装了openjdk,可以使用如下方法将默认jdk更改过来:
将系统默认的jdk修改过来
\
- $ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_10/bin/java 300
输入sun jdk前的数字就好了
\
- $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.7.0_10/bin/javac 300
-
$ sudo update-alternatives --config java \
-
$ sudo update-alternatives --config javac