centos7配置telnet服务

1. CentOS7.0 telnet-server 启动的问题。
解决方法:
①、先检查CentOS7.0是否已经安装以下两个安装包:telnet-server、xinetd。命令如下:
rpm -qa telnet-server
rpm -qa xinetd

如果没有安装,则先安装。安装命令:

[root@master ~]# yum list |grep telnet
telnet-server.x86_64                    1:0.17-59.el7                  @base
telnet.x86_64                           1:0.17-59.el7                  base
[root@master ~]# yum install telnet-server.x86_64

[root@master ~]# yum install telnet.x86_64

[root@master ~]# yum list |grep xinetd
xinetd.x86_64                           2:2.3.15-12.el7                @base
[root@master ~]# yum install xinetd.x86_64

 

安装完成后,将xinetd服务加入开机自启动:
systemctl enable xinetd.service
将telnet服务加入开机自启动:
systemctl enable telnet.socket
最后,启动以上两个服务即可:
systemctl start telnet.socket
systemctl start xinetd(或service xinetd start)

tar压缩加密码

将/homef目录下的所有文件打包成为.tar 文件。

1
$tar-cvf  test.tar/home/*

将得到一个test.tar的文件

将/home目录下的所有文件打包成为tar.gz 文件

1
$tar-czf  test.tar.gz  /home/*

将得到一个test.tar.gz文件

查看tar文件下的所有文件(像ls一样)

1
$tar-tzftest.tar.gz  或者  $tar-tf  test.tar

解压tar || tar.gz 文件

使用重定向将查看tar的内容定向到file文件

1
$tar-tzf  test.tar.gz >file

编辑file文件,保留你需要解压的内容

按照file文件解压tar

1
$tar-Tfile-xzftest.tar.gz

当然全部解压可以使用

1
$tar-xzf  test.tar.gz

使用tar对文件加密

1
$tar-zcvf -test|openssl des3 -salt -k secretpassword |ddof=test.des3

将得到一个 test.des3文件,用你的密码替换secretpassword,切勿搞忘了

使用tar对加密文件解压

1
$ddif=test.des3 |openssl des3 -d -k secretpassword|tarzxf –

特别注意,命令最后又一”-”,它将释放所有的文件。

CentOS 7下搭建高可用集群

本文以两台机器实现双集热备高可用集群,主机名node1IP192.168.122.168 ,主机名node2IP192.168.122.169 

一、安装集群软件

必须软件pcspacemakercorosyncfence-agents-all,如果需要配置相关服务,也要安装对应的软件

二、配置防火墙

1、禁止防火墙和selinux

# systemctl disable firewalld
# systemctl stop firewalld

修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效

2、设置防火墙规则

# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd --add-service=high-availability

 三、各节点之间主机名互相解析

分别修改2台主机名分别为node1node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。

#vi /etc/hostname
node1
#systemctl restart network.service
#hostname
node1

配置2台主机的主机表,在/etc/hosts中加入

192.168.122.168 node1
192.168.122.169 node2

 四、各节点之间时间同步

node1node2分别进行时间同步,可以使用ntp实现。

[root@node1 ~]# ntpdate 172.16.0.1 //172.16.0.1 为时间服务器

五、各节点之间配置ssh的无密码密钥访问。

下面的操作需要在各个节点上操作。

# ssh-keygen -t rsa -P ‘’   #这个生成一个密码为空的公钥和一个密钥,把公钥复制到对方节点上即可
# ssh-copy-id -i /root/.ssh/id_rsa.pub root@node2 #对方主机名用登录用户名

两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1 192.168.122.169 node2

# ssh node2 ‘date’;date #测试一下是否已经互信

六、通过pacemaker来管理高可用集群

1、创建集群用户

为了有利于各节点之间通信和配置集群,在每个节点上创建一个hacluster的用户,各个节点上的密码必须是同一个。

# passwd hacluster
Changing password for user hacluster.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

2、设置pcsd开机自启动

# systemctl start pcsd.service
# systemctl enable pcsd.service

3、集群各节点之间进行认证

# pcs cluster auth node1 node2Username: hacluster Password: node1: Authorized node2: Authorized

4、创建并启动集群

: Succeeded
node1: Starting Cluster...
node2: Succeeded
node2: Starting Cluster...

5、设置集群自启动

# pcs cluster enable –all

6、查看集群状态信息

[root@z1 ~]# pcs cluster status

7、设置fence设备

这个可以参考<Red Hat Enterprise Linux 7 High Availability Add-On Reference>

corosync默认启用了stonith,而当前集群并没有相应的stonith设备,因此此默 认配置目前尚不可用,这可以通过如下命令验证:

#crm_verify -L -V

可以通过如下面命令禁用stonith

#pcs property set stonith-enabled=false(默认是true)

8、配置存储

高可用集群既可以使用本地磁盘来构建纯软件的镜像型集群系统,也可以使用专门的共享磁盘装置来构建大规模的共享磁盘型集群系统,充分满足客户的不同需求。

共享磁盘主要有iscsiDBRD。本文并没有使用共享磁盘。

9、配置浮点IP

不管集群服务在哪运行,我们要一个固定的地址来提供服务。在这里我选择192.168.122.101作为浮动IP,给它取一个好记的名字ClusterIP 并且告诉集群 每30秒检查它一次。

# pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.122.170 cidr_netmask=24 op monitor interval=30s
# pcs update VIP op monitor interval=15s

10、配置apache服务

node1node2上安装httpd ,确认httpd开机被禁用

# systemctl status httpd.service;

配置httpd监控页面(貌似不配置也可以通过systemd监控),分别在node1node2上执行

# cat > /etc/httpd/conf.d/status.conf << EOF
SetHandler server-status
Order deny,allow
Deny from all
Allow from localhost
EO

首先我们为Apache创建一个主页。在centos上面默认的Apache docroot/var/www/html,所以我们在这个目录下面建立一个主页。

node1节点修改如下:

<-END >/var/www/html/index.html
<html>
<body>Hello node1</body>
END

node2节点修改如下:

[root@node2 ~]# cat <<-END >/var/www/html/index.html
<html>
<body>Hello node2</body>
END

下面语句是将httpd作为资源添加到集群中:

#pcs resource create WEB apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status"

11、创建group

VIPWEB resource捆绑到这个group中,使之作为一个整体在集群中切换。(此配置为可选)

# pcs resource group add MyGroup VIP
# pcs resource group add MyGroup WEB

12、配置服务启动顺序

以避免出现资源冲突,语法:(pcs resource group add的时候也可以根据加的顺序依次启动,此配置为可选)

# pcs constraint order [action] then [action]
# pcs constraint order start VIP then start WEB

13、指定优先的 Location (此配置为可选)

Pacemaker 并不要求你机器的硬件配置是相同的,可能某些机器比另外的机器配置要好。这种状况下我们会希望设置:当某个节点可用时,资源就要跑在上面之类的规则。为了达到这个效果我们创建location约束。同样的,我们给他取一个描述性的名字(prefer-node1),指明我们想在上面跑WEB 这个服务,多想在上面跑(我们现在指定分值为50,但是在双节点的集群状态下,任何大于0的值都可以达到想要的效果),以及目标节点的名字:

# pcs constraint location WEB prefers node1=50
# pcs constraint location WEB prefers node2=45

这里指定分值越大,代表越想在对应的节点上运行。

14、资源粘性(此配置为可选)

一些环境中会要求尽量避免资源在节点之间迁移。迁移资源通常意味着一段时间内无法提供服务,某些复杂的服务,比如Oracle数据库,这个时间可能会很长。

为了达到这个效果,Pacemaker 有一个叫做“资源粘性值”的概念,它能够控制一个服务(资源)有多想呆在它正在运行的节点上。

Pacemaker为了达到最优分布各个资源的目的,默认设置这个值为0。我们可以为每个资源定义不同的粘性值,但一般来说,更改默认粘性值就够了。资源粘性表示资源是否倾向于留在当前节点,如果为正整数,表示倾向,负数则会离开,-inf表示负无穷,inf表示正无穷。

# pcs resource defaults resource-stickiness=100

 

常用命令汇总:

查看集群状态:#pcs status

查看集群当前配置:#pcs config

开机后集群自启动:#pcs cluster enable –all

启动集群:#pcs cluster start –all

查看集群资源状态:#pcs resource show

验证集群配置情况:#crm_verify -L -V

测试资源配置:#pcs resource debug-start resource

设置节点为备用状态:#pcs cluster standby node1

Centos7之pacemaker高可用安装配置详解

申明:

centos7的pacemaker与之前6使用的方法不一致,即使用centos6.x的方法在centos7.x上面配置pacemaker不能成功。
因此openstack 上面的centos7.1如果使用官方文档直接配置高可用HA也是无法成功的。(吐槽:openstack的liberty出的HA方案官方文档不适用于centos7.x)
关于openstack liberty版本的高可用HA方案请参考下述实验!!!
PS:与pacemaker高可用方案相对应的keepalived原理(主从配置+haproxy)及配置文件详解请参考博文:http://blog.csdn.net/tantexian/article/details/50056229
centos7配置pacemaker官方文档地址:
Pacemaker’s key features include:
  • 监测并恢复节点和服务级别的故障
  • 存储无关,并不需要共享存储
  • 资源无关,任何能用脚本控制的资源都可以作为服务
  • Supports fencing (also referred to as the STONITH acronym, deciphered later on) for ensuring data integrity
  • 支持大型或者小型的集群
  • Supports both quorate and resource-driven clusters
  • Supports practically any redundancy configuration
  • 自动同步各个节点的配置文件
  • 可以设定集群范围内的ordering, colocation and anti-colocation
  • Support for advanced service types
    • Clones:为那些要在多个节点运行的服务所准备的
    • Multi-state: for services with multiple modes (e.g. master/slave, primary/secondary)
  • Unified, scriptable cluster management tools
本次实验环境:
centos7.1
node31:172.31.2.31
node32 :  172.31.2.32
node31、node32两台机器上面都安装pacemaker,因此下述操作都需要在两天机器上面执行。
1、配置防火墙端口及关闭selinux
systemctl disable firewalld
systemctl stop firewalld
iptables -F
2、配置hostname:
 hostnamectl –static –transient  set-hostname node31
 hostnamectl –static –transient  set-hostname node32
vim /etc/hosts
3、时间同步:
yum install ntp -y
ntpdate cn.pool.ntp.org
4、双机互信(本次实验发现,不配置双机互信似乎也不会出现问题):
ssh-keygen -t rsa
复制id_rsa.pub文件:
scp /root/.ssh/id_rsa.pub root@172.31.2.32:/root/.ssh/authorized_keys
注:在node32执行同样的互信操作。
5、安装pacemaker集群相关组件:

yum install pcs pacemaker corosync fence-agents-all -y

6、启动pcsd服务(开机自启动)
systemctl start pcsd.service
systemctl enable pcsd.service
7、创建集群用户:
passwd hacluster(此用户在安装pcs时候会自动创建)
上述所有操作都需要在两个节点上面执行。

8、集群各节点之间进行认证:

pcs cluster auth node31 node32(此处需要输入的用户名必须为pcs自动创建的hacluster,其他用户不能添加成功)
9,创建并启动名为my_cluster的集群,其中node31 node32为集群成员:
pcs cluster setup –start –name my_cluster node31 node32
10、设置集群自启动:
pcs cluster enable –all
11、查看并设置集群属性:
查看当前集群状态:
pcs cluster status
检查pacemaker服务:
ps aux | grep pacemaker
检验Corosync的安装及当前corosync状态:
corosync-cfgtool -s
corosync-cmapctl | grep members
pcs status corosync
检查配置是否正确(假若没有输出任何则配置正确):
crm_verify -L -V
禁用STONITH:
pcs property set stonith-enabled=false
无法仲裁时候,选择忽略:
pcs property set no-quorum-policy=ignore
12、pcs resource资源属性配置:
Pacemaker / Corosync 是 Linux 下一组常用的高可用集群系统。Pacemaker 本身已经自带了很多常用应用的管理功能。但是如果要使用 Pacemaker 来管理自己实现的服务或是一些别的没现成的东西可用的服务时,就需要自己实现一个资源了。
其中Pacemaker 自带的资源管理程序都在 /usr/lib/ocf/resource.d 下。其中的 heartbeat 目录中就包含了那些自带的常用服务。那些服务的脚本可以作为我们自己实现时候的参考。
更多关于自定义资源请参考博文:http://blog.csdn.net/tantexian/article/details/50160159
接下来针对一些常用的pcs命令进行简要讲解。
查看pcs resource针对资源操作用法:
pcs resource help
查看pcs支持的资源代理标准:
pcs resource providers
注:Pacemaker 的资源主要有ocf、lsb、service、systemd、stonith几大类。 LSB是为了促进 Linux 不同发行版间的兼容性,LSB(Linux Standards Base)开发了一系列标准,使各种软件可以很好地在兼容 LSB 标准的系统上运行, LSB 即 Linux 标准服务,通常就是 /etc/init.d 目录下那些脚本。Pacemaker 可以用这些脚本来启停服务,可以通过pcs resource list lsb查看。另一类 OCF 实际上是对 LSB 服务的扩展,增加了一些高可用集群管理的功能如故障监控等和更多的元信息。可以通过 pcs resource list ocf 看到当前支持的资源。要让 pacemaker 可以很好的对服务进行高可用保障就得实现一个 OCF 资源。CentOS7 使用systemd替换了SysV。Systemd目的是要取代Unix时代以来一直在使用的init系统,兼容SysV和LSB的启动脚本,而且够在进程启动过程中更有效地引导加载服务。
查看pacemaker支持资源高可用的列表:
pcs resource list
假若想查看httpd(apache)可使用:pcs resource list | grep apache
具体apache用法:
pcs resource describe ocf:heartbeat:apache
下一篇博客将详述如何使用pacemaker来达到httpd高可用。

Centos7配置LAMP

环境:最小化安装 Centos7 Virtualbox

准备工作:

设置当前时区为香港,检查时区设置

timedatectl set-timezone Asia/Hong_Kong

timedatectl

关闭SELINUX

vi /etc/selinux/config

修改如下内容:

SELINUX=disabled  
#SELINUXTYPE=targeted  //加#注释

重启系统

shutdown -r now

配置网络

Centos最小化安装时,若没有设置网卡随系统启动而开启,需要修改如下:

vi /etc/sysconfig/network-scripts/ifcfg-eth0  //virtualbox下ifcfg-enp0s3

输出如下:

TYPE=Ethernet   
BOOTPROTO=dhcp   
DEFROUTE=yes   
PEERDNS=yes   
PEERROUTES=yes   
IPV4_FAILURE_FATAL=no   
IPV6INIT=yes   
IPV6_AUTOCONF=yes   
IPV6_DEFROUTE=yes   
IPV6_PEERDNS=yes   
IPV6_PEERROUTES=yes   
IPV6_FAILURE_FATAL=no   
NAME=enp0s3   
UUID=60a5374d-3ac3-4609-8816-26cc05816ecb    
DEVICE=enp0s3  
ONBOOT=no               // 修改为yes,开机自动启动        

重启网络:

service network restart

安装命令行Web浏览器

在没有Gui的Centos下,应有一款看网站的命令行浏览工具,例如links

yum install links

安装Apache HTTP服务器

yum install httpd

添加Apache服务到系统层使其随系统自动启动

systemctl start httpd.service
systemctl enable httpd.service

用links命令行工具验证Apache Http服务器

links 127.0.0.1

输出:

links-apache

备份配置文件

mkdir ~/confbak
cp -R /etc/httpd ~/confbak

配置虚拟主机

默认情况下,位于 /etc/httpd/ 目录下的所有以 .conf 结尾的文件都会被读取,并按照字母顺序加载做为 Apache 的配置,所以需要在 /etc/httpd/conf.d/ 下新建一个配置文件 vhost.conf 来配置虚拟主机。可以参考官网vhost.conf 配置实例

vi /etc/httpd/conf.d/vhost.conf

基于域名

说明:若同一个IP有不同的主机名,通过IP访问时,配置文件中哪个主机名在前就显示哪个。例如如下配置文件中,先访问www.test.com。

vhost.conf内容:

<VirtualHost *:80>
    ServerName www.test.com
    ServerAlias test.com 
    DocumentRoot /srv/www/test.com
<Directory "/srv/www/test.com/">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
ErrorLog /srv/www/testlogs/error.log
CustomLog /srv/www/testlogs/access.log combined
</VirtualHost>

<VirtualHost *:80>
    ServerName www.test2.com
    ServerAlias test2.com
    DocumentRoot /srv/www/test2.com
<Directory "/srv/www/test2.com/">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
ErrorLog /srv/www/test2logs/error.log
CustomLog /srv/www/test2logs/access.log combined
</VirtualHost>

解析主机名

修改/etc/hosts

vi /etc/hosts

添加

127.0.0.1  www.test.com  www.test2.com  test.com  test2.com

创建各个虚拟主机文件夹

mkdir /srv/www/test.com -p
mkdir /srv/www/test2.com -p
mkdir /srv/www/testlogs -p
mkdir /srv/www/test2logs -p

检查语法错误,重启httpd服务

httpd -t

输出 Syntax OK 则无错误,若出现错误按提示修改配置文件即可。

重启httpd服务

systemctl restart httpd

将http服务加入防火墙以允许外部访问

firewall-cmd --add-service=http --permanent

-permenent参数表示这是一条永久防火墙规则,如果不加则重启系统后就没有这条规则了

重启Firewalld使该规则生效

systemctl restart firewalld

加入后的防火墙规则为:

# firewall-cmd --list-all
public (default, active)
    interfaces: enp0s3
    sources:
    services: dhcpv6-client http ssh
    ports:
    masquerade: no
    forward-ports:
    icmp-blocks:
    rich rules:

本机测试:

links www.test.com
links www.test2.com

局域网内PC测试:

浏览器打开 192.168.1.111

修改/etc/hosts加入如下内容

192.168.1.111   www.test.com www.test2.com test.com test2.com

浏览器打开test.com test2.com

基于IP

vhost.conf内容:

<VirtualHost 192.168.1.220:80>     //设置ip
    ServerName www.test.com
    ServerAlias test.com 
    DocumentRoot /srv/www/test.com
<Directory "/srv/www/test.com/">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
ErrorLog /srv/www/testlogs/error.log
CustomLog /srv/www/testlogs/access.log combined
</VirtualHost>

<VirtualHost 192.168.1.221:80>      //设置ip
    ServerName www.test2.com
    ServerAlias test2.com
    DocumentRoot /srv/www/test2.com
<Directory "/srv/www/test2.com/">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
ErrorLog /srv/www/test2logs/error.log
CustomLog /srv/www/test2logs/access.log combined
</VirtualHost>

查看是否语法错误,重启httpd:

httpd -t
stytemctl restart httpd

添加ip并查看:

ip addr add 192.168.1.220/24 dev enp0s3
ip addr add 192.168.1.221/24 dev enp0s3
ip addr show

输出如下:

Apache2.4基于ip的虚拟主机

测试成功。

基于端口

vhost.conf内容:

<VirtualHost *:80>     //不同于基于域名
    ServerName www.test.com
    ServerAlias test.com 
    DocumentRoot /srv/www/test.com
<Directory "/srv/www/test.com/">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
ErrorLog /srv/www/testlogs/error.log
CustomLog /srv/www/testlogs/access.log combined
</VirtualHost>

<VirtualHost *:8080>      //不同于基于域名
    ServerName www.test2.com
    ServerAlias test2.com
    DocumentRoot /srv/www/test2.com
<Directory "/srv/www/test2.com/">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>
ErrorLog /srv/www/test2logs/error.log
CustomLog /srv/www/test2logs/access.log combined
</VirtualHost>

启用8080端口

编辑主配置文件监听端口,添加8080端口:

vi /etc/httpd/conf/httpd.conf

添加:

Listen 8080

防火墙开放8080端口:

firewall-cmd --add-port=8080/tcp

重启服务器:

systemctl restart httpd

测试成功。

至此apache配置完成,默认使用基于域名的虚拟主机。

另外:有关firewall博主第一次接触,会单写日志进行学习测试。

安装 MariaDB 数据库

LAMP架构盛极一时,这离不开MySQL的免费与易用,但是在Oracle收购了Sun之后,很多公司开始担忧MySQL的开源前景,而最近Oracle进一步闭源的举措更是让人难以安心,众多互联网公司纷纷开始寻求MySQL的替代方案。

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。

MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。

所以数据库我们选择 MariaDB。

yum install mariadb-server mariadb

启动 MariaDB 并配置它开机时自动启动。

systemctl start mariadb.service    
systemctl enable mariadb.service

查看内存占用情况

top -u mysql

停止/重启或停用 mariadb 服务的一些指令

停止
sudo systemctl stop mariadb
重启
sudo systemctl restart mariadb
禁用
sudo systemctl disable mariadb
检查 mariadb 服务器 是否正在运行
sudo systemctl is-active mariadb

安全配置 MariaDB

mysql_secure_installation

这里需要配置 mysql 根用户和密码、清除其他用户、清除不需要的数据库等。输出类似于下面的执行过程,其中需要我们从键盘输入的内容已注释:

# /usr/bin/mysql_secure_installation
/usr/bin/mysql_secure_installation: line 379: find_mysql_client: command not found

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):   //这里直接回车,这里可不是 Linux root 用户,而是 MariaDB 数据库的 root 用户
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:                //输入你的数据库root用户密码
Re-enter new password:       //再输入一遍
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y    
... Success!

Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y  
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

然后使用 MySQL 的 root 帐户(不同于 Linux 的 root 帐户,刚才设置密码了)登录进去

mysql -u root -p

输入密码后回车,下面是输出示例,可以看到命令提示符变为 MariaDB [(none)]>

# mysql -u root -p   
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, Monty Program Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

安装PHP

PHP是用于web基础服务的服务器端脚本语言。它也经常被用作通用编程语言。

yum install php

//根据CMS需求安装模块 常用的如:php-mysql php-pdo php-gd php-mbstring

yum install php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel   

安装完成php后,确认重启Apache服务以便在Web浏览器中渲染PHP。

systemctl restart httpd.service

网站根目录创建phpinfo.php验证PHP。

vi /srv/www/test.com/info.php

编辑内容如下:

<?php
phpinfo();
?>

验证

links www.test.com/info.php

局域网内浏览器:

192.168.1.111/info.php

或者

www.test.com/info.php

输出:

links-phpinfo

安装PhpMyAdmin

安装使用EPEL安装源

yum install epel-release

安装phpmyadmin

yum install phpmyadmin

配置phpmyadmin,使phpmyadmin允许远程登陆

vi /etc/httpd/conf.d/phpMyAdmin.conf

内容如下

[...]
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

//以下内容全部用#注释掉
#<Directory /usr/share/phpMyAdmin/>    
#   AddDefaultCharset UTF-8  
#   <IfModule mod_authz_core.c>
#
#     # Apache 2.4
#     <RequireAny>
#       Require ip 127.0.0.1
#       Require ip ::1
#     </RequireAny>
#   </IfModule>
#   <IfModule !mod_authz_core.c>
#     # Apache 2.2
#     Order Deny,Allow
#     Deny from All
#     Allow from 127.0.0.1
#     Allow from ::1
#   </IfModule>
#</Directory>

//以下内容新增加
<Directory /usr/share/phpMyAdmin/>
    Options none
    AllowOverride Limit
    Require all granted
</Directory>

[...] 

更改Cookie身份验证方式为http

vi /etc/phpMyAdmin/config.inc.php

修改内容如下:

[...]
$cfg['Servers'][$i]['auth_type']     = 'http';    // Authentication method (config, http or cookie based)?  将cookie 改为http
[...]

重启apache

systemctl restart  httpd.service

测试

局域网内浏览器:

192.168.1.111/phpmyadmin

或者

www.test.com/phpmyadmin

按提示填入账号密码:

安装phpmyadmin01

安装phpmyadmin02

至此 LAMP配置完毕。

在CentOS 7上部署邮件系统

其实对于我这个懒人来说,之前从没有在VPS上搞过邮件系统,Gmail啊QQ邮箱啊用得也挺方便,正式场合就使用学校的邮箱,何必自己再搞一个。但是,有一次看到别人用自己域名的邮箱之后,顿觉这个逼格高,正好这次又用回VPS了,就来配置一个吧。

动手之前自然需要Google一下,发现简单配置邮件系统的话,Postfix和Dovecot是两个常见的选择。好吧,就是你俩了,当然,考虑到安全性,加个sasl吧。

文章接下去按分为下面几部分讲述,可以按需调到指定的位置去看。

配置DNS

在配置系统之前,首先先把DNS给设定好,毕竟搞出个邮箱就是要拿出去用的,放在自己电脑上看有什么用。DNS设置的过程在此就不赘述了,总之,设置好之后dig一下MX记录,如果有类似于下面这样的记录的话就OK了。

1
2
3
4
5
6
7
8
9
10
11
12
13
$ dig mx your.address

; <<>> DiG 9.8.3-P1 <<>> mx your.address
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37534
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;your.address.         IN  MX

;; ANSWER SECTION:
your.address.     600 IN  MX  10 111.111.111.111.

配置证书

安全性始终是一个首要考虑的对象,所以我们需要用ssl保护所有到邮件系统的连接,于是,首先需要生成一个证书。注意,接下去的操作都是使用root用户进行的。

1
2
3
$ cd /etc/ssl
$ mkdir -p private
$ openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/mail.key -out /etc/ssl/certs/mailcert.pem

生成证书的时候需要填写一些证书的基本信息,想怎么填就怎么填,反正想我们这种屌丝的证书不会送去认证的,都是未经认证的证书,所以发挥自己的想象去填吧。

生成完了之后别忘记给它配好权限,确保里面的文件只能由root读写。

1
$ chmod -R 700 private

配置Postfix和sasl

Centos 7已经自带了Postfix,只需配置一下即可。如果没有的话,就装一个。

1
$ yum -y install postfix

嗯,然后是安装cyrus的sasl组件。

1
$ yum -y install cyrus-sasl-*

当然,其实也是可以用Dovecot的sasl组件的,但是我就是想装个B。

好了,接下来就是对Postfix进行配置了。下面是我的Postfix设置,其中各项的选项望文生义已经比较清楚了,详细资料可参考文末的参考文献。

/etc/postfix/main.cf 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#域名设置
myhostname                      = mail.your.host
mydomain                        = your.host
myorigin                        = $mydomain
inet_interfaces                 = all

#启用安全性和性能更好的Maildir
home_mailbox                    = Maildir/

#不要暴露更多信息
smtpd_banner                    = $myhostname ESMTP unknown

#中继设置
relay_domains                   = $mydestination

#启用sasl
smtpd_sasl_auth_enable          = yes
smtpd_sasl_type                 = cyrus
smtpd_sasl_path                 = smtpd
#最大邮件大小20M
message_size_limit              = 20971520

#反垃圾邮件,反非法中继设置
smtpd_client_restrictions        = reject_rbl_client,
                                   permit

smtpd_helo_required              = yes 
smtpd_helo_restrictions          = reject_rhsbl_sender,
                                   permit

smtpd_sender_restrictions        = reject_non_fqdn_sender,
                                   permit

smtpd_recipient_restrictions     = permit_sasl_authenticated,
                                   permit_mynetworks,
                                   reject_unauth_destination,
                                   reject_non_fqdn_recipient,
                                   reject_unknown_sender_domain,
                                   reject_unknown_recipient_domain,
                                   reject_unauth_pipelining,
                                   reject_rhsbl_client rhsbl.ahbl.org,
                                   reject_rbl_client zen.spamhaus.org,
                                   reject_rbl_client bl.spamcop.net,
                                   reject_rbl_client dnsbl.njabl.org,
                                   reject_rbl_client dnsbl.sorbs.net,
                                   permit

smtpd_sasl_security_options      = noanonymous
smtpd_sasl_local_domain          = $myhostname
broken_sasl_auth_clients         = yes

#启用ssl保护
smtpd_tls_cert_file              = /etc/ssl/certs/mailcert.pem
smtpd_tls_key_file               = /etc/ssl/private/mail.key
smtpd_use_tls                    = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database  = btree:${data_directory}/smtp_scache
smtpd_tls_security_level         = may
smtpd_tls_protocols              = !SSLv2, !SSLv3

然后接着对sasl进行设置:

/etc/sasl2/smtpd.conf 
1
2
3
4
pwcheck_method: auxprop
auxprop_plugin: sasldb
#mech_list: PLAIN LOGIN CRAM-MD5 DIGEST-MD5 
#注意,上面必须把mech_list给注释掉,让程序自动选择,不然会出错。

Postfix的配置就算完成了,接着启动Postfix。

1
$ systemctl start postfix

如果什么输出都没有,就说明启动成功了。

为了测试你的邮件系统对于中继的防御能力如何,可以到这里检查一下,如果全都通过的话基本没什么问题了。

配置Dovecot

首先是安装Dovecot

1
$ yum -y install dovecot

然后是配置/etc/dovecot/dovecot.conf

/etc/dovecot/dovecot.conf 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#安全第一
disable_plaintext_auth = yes
mail_privileged_group = mail
#使用Maildir
mail_location = maildir:~/Maildir
#使用系统用户管理(最简单)
userdb {
    driver = passwd 
}
passdb {
  driver = pam
}
#故作高冷,只支持imap
protocols = " imap"
namespace {
  #prefix = INBOX. # the namespace prefix isn't added again to the mailbox names.
  # ...
  inbox = yes
  mailbox Trash {
    auto = subscribe
    special_use = \Trash
  }
  mailbox Drafts {
    auto = subscribe
    special_use = \Drafts
  }
  mailbox Sent {
    auto = subscribe # autocreate and autosubscribe the Sent mailbox
    special_use = \Sent
  }
  mailbox "Sent Messages" {
    auto = subscribe
    special_use = \Sent
  }
  mailbox Spam {
    auto = subscribe # autocreate Spam, but don't autosubscribe
    special_use = \Junk
  }
  mailbox virtual/All { # if you have a virtual "All messages" mailbox 
    auto = subscribe
    special_use = \All
  }
}
service auth {
    unix_listener /var/spool/postfix/private/auth {
        group = postfix
      mode = 0660
      user = postfix 
  }
}
#安全,还是安全
ssl = required
ssl_cert = </etc/ssl/certs/mailcert.pem
ssl_key = </etc/ssl/private/mail.key
maildir_very_dirty_syncs = yes

既然用了系统的用户管理,所以别忘了到pam.d里面设置一下

/etc/pam.d/dovecot 
1
2
3
4
5
6
#%PAM-1.0
auth    required        pam_unix.so nullok
account required        pam_unix.so
auth       include      password-auth
account    include      password-auth
session    include      password-auth

然后就是启动Dovecot

1
$ systemctl start dovecot

如果什么输出都没有,就说明启动成功了。既然都能启动成功,那就全都设置成开机自动启动吧

1
2
$ systemctl enable postfix
$ systemctl enable dovecot

添加用户

因为我们使用的是系统用户管理,所以添加邮箱用户就像添加系统用户一样方便。添加系统用户的方法就不用我多说了吧。添加完之后,还要在sasl的数据库中添加记录。

1
2
3
4
$ echo "你的密码" | saslpasswd2 -p -u example.com -c test
# 然后检查一下是不是加入进去了
$ sasldblistusers2
test@example.com: userPassword

如果产生像上面的输出,那就是成功了。

如何使用

这里使用我的小米来添加我的邮箱来说明如何使用,其实主要的问题就是收件设置和发件设置,其他都是次要的。上两张图说明一切问题。

发信设置

发信设置

收信设置

收信设置

好了。

参考

  1. メールサーバー構築(Postfix+Dovecot)
  2. How To Set Up a Postfix E-Mail Server with Dovecot
  3. Postfix Documentation
  4. Welcome to the Dovecot Wiki

BIND运维工具

一.bind-utils介绍

DNS是一种将域名解析为IP地址的服务.如:www.turbolinux.com.cn通过DNS解析,可以
得到210.77.38.126.
bind是linux系统下的一个DNS服务程序.bind-utils是bind软件提供的一组DNS工具包,
里面有一些DNS相关的工具.主要有:dig,host,nslookup,nsupdate.使用这些工具可以
进行域名解析和DNS调试工作.

二.bind-utils的安装

1.rpm包方式

GTES 10,10.5,11版本都包含有bind-utils包,可以在安装完bind包后,直接安装它们:

# rpm -ivh bind-utils.xxx.rpm

2.源码包安装

源码下载地址:
http://www.isc.org/index.pl
以bind-9.4.1-P1版本为例.
# tar zxvf bind-9.4.1-P1.tar.gz
# cd bind-9.4.1-P1
# ./configure
# make
# make install

三.bind-utils的使用

1.dig的使用

dig是一个DNS查询工具.dig向DNS服务器发出请求,然后输出DNS服务器的返回结果.
系统管理员可以使用dig来测试DNS服务器.
dig会根据/etc/resolv.conf文件中列出的服务器,依次进行尝试.
不加参数执行dig时,dig将执行一个.查询,即根查询.

a.dig命令的格式为:

      dig  [  @server ]  [ -b address ]  [ -c class ]  [ -f filename ]  [ -k
       filename ]  [ -p port# ]  [ -t type ]  [ -x addr ]  [ -y name:key ]  [
       name ]  [ type ]  [ class ]  [ queryopt... ]

       dig [ -h ]

       dig [ global-queryopt... ]  [ query... ]
dig的简单使用:
dig @server name type

    server是DNS服务器的域名或ip地址.可以是以"."分割的IPv4的IP地址,也可以是以":"分割的
IPv6的IP地址.如果server是一个域名,则dig先解析这个域名,然后再进行后续的查询.如果没有server
参数,dig将会读取/etc/resolv.conf文件中的服务器列表.
    name是需要查询的资源记录的名称.
    type表示需要进行什么类型的查询,类型包括:ANY,A,MX,SIG等.如果没有指定类型,dig将进行A记录
查询.

示例:
<code>
# dig @172.23.3.1 www.baidu.com A

; <<>> DiG 9.2.4 <<>> @172.23.3.1 www.baidu.com A
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12603
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;www.baidu.com.                 IN      A

;; ANSWER SECTION:
www.baidu.com.          292     IN      CNAME   www.a.shifen.com.
www.a.shifen.com.       705     IN      A       202.108.22.5
www.a.shifen.com.       705     IN      A       202.108.22.43

;; AUTHORITY SECTION:
a.shifen.com.           75348   IN      NS      ns1.a.shifen.com.
a.shifen.com.           75348   IN      NS      ns2.a.shifen.com.
a.shifen.com.           75348   IN      NS      ns3.a.shifen.com.
a.shifen.com.           75348   IN      NS      ns4.a.shifen.com.

;; ADDITIONAL SECTION:
ns1.a.shifen.com.       916     IN      A       202.108.22.101
ns2.a.shifen.com.       396     IN      A       220.181.27.59
ns3.a.shifen.com.       994     IN      A       202.108.22.102
ns4.a.shifen.com.       1016    IN      A       220.181.27.58

;; Query time: 172 msec
;; SERVER: 172.23.3.1#53(172.23.3.1)
;; WHEN: Mon Oct 15 15:42:50 2007
;; MSG SIZE  rcvd: 226

b.参数选项

-b    设置查询时所使用的源IP地址.这个必须是一个本地主机网络接口上的地址.

-c    Internet上的DNS服务器,大部分是拒绝使用-c进行查询的.这个值可以是CH,HS等.

-f    使用批处理模式从文件中读取一个需要查询的列表.

-p    指定一个DNS服务器的端口,不使用-p选项,则使用默认端口53.

-t    设置查询类型.默认为A类型查询.

-x    反向查询.使用这个选项时,不需要提供name,class,type参数.dig会自动设置这些参数.

查询选项:
    dig提供了一些开关式的查询选项,用于设置查询方法和查询结果的输出.


       +[no]tcp
		查询时,是否使用TCP协议.默认情况下是使用UDP协议.

       +[no]ignore
		是否忽略设置有"截头"位的UDP回应包.若设置为不忽略,将使用TCP协议进行重试.

       +domain=somename
		设置一个包含域名的搜索列表,就像在/etc/resolv.conf文件中指定的一样.

       +[no]search
		是否使用搜索列表.默认不使用搜索列表.

       +[no]adflag
		是否在查询中设置AD(可信数据)位.

       +[no]cdflag
		是否在查询中设置CD(禁止检查)位.这个需要服务器不进行回应的DNSSEC确认.

       +[no]recurse
		在查询中设置RD(递归)位.默认情况下是设置有这个标志.表示dig正常情况下会进行
一个递归查询.当使用+nssearch或+trace时,这个选项将自动被禁用.

       +[no]nssearch
		设置这个选项后,dig将在权威DNS服务器中查找结果.然后显示每个DNS服务器的SOA记录.

       +[no]trace
		设置轨迹查询.即从根服务器开始追踪一个域名的解析过程.此选项默认是禁用的.打开
此选项后,dig将反复对name进行查询.它将从根服务器开始,显示每一个服务器回答.

       +[no]cmd
		设置是否打印初始化注释.默认是打开的.

       +[no]short
		设置是否简化输出.默认是详细的输出.

       +[no]identify
		在启用short选项后,是否显示IP地址和端口号.在short选项启用后,默认是不显示
IP地址和端口号的.

       +[no]comments
		是否输出注释行.默认是输出注释行.

       +[no]stats
		是否输出统计列表.默认是输出统计列表.

       +[no]qr
		是否输出发送出的查询内容.默认是不打印.

       +[no]question
		在输出中是否打印"提问部分".默认是打印"提问部分".

       +[no]answer
		在输出中是否打印"回答部分".默认是打印"回答部分".

       +[no]authority
		在输出中是否打印"权威部分".默认是打印"权威部分".

       +[no]additional
		在输出中是否打印"附加部分".默认是打印"附加部分".

       +[no]all
		设置或取消所有标记设置.

       +time=T
		设置查询的超时时间.默认超时是5秒.

       +tries=T
		设置UDP查询的重试次数.默认是3.

       +[no]multiline
		设置是否多行输出.默认每个记录一行.

       +[no]fail
		是否在接收到一个错误后,尝试下一个服务器.

       +[no]besteffort
		是否显示信息的摘要.默认是不显示.

2.host的使用

host是进行DNS查询的简单工具.用来将域名解析为IP地址. host的命令格式:

       host  [  -aCdlnrTwv ]  [ -c class ]  [ -N ndots ]  [ -R number ]  [ -t
       type ]  [ -W wait ]  name [ server ]

name	需要解析的域名.可以是以"."分隔的IPv4地址,也可以是":"分隔的IPv6地址.

server	DNS服务器的域名或IP地址.这是个可选项.指定此选项后,将会忽略/etc/resolv.conf中的设置.

-a	等同于-v -t选项.

-C	显示SOA记录.

-c	指定一个查询类别.默认是IN类别.

-d,-v	详细输出方式.

-n	对IPv6的IP地址进行反解析.

-R	一次查询中UDP协议的重试次数.默认为1.

-r	禁用递归查询.

-T	在查询中使用TCP协议.host默认使用UDP协议进行查询.

-t	用来指定查询类型.类型可以是CNAME,NS,SOA,SIG,KEY,AXFR等.默认是查询A类型记录.

-W	设置等待查询结果的时间,单位为秒.

-w	设置等待查询结果.等待时间取决于硬件能够记录的最大数值.

示例:

$ host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 202.108.22.5
www.a.shifen.com has address 202.108.22.43

$ host -T www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 202.108.22.5
www.a.shifen.com has address 202.108.22.43

$ host www.gmail.com
www.gmail.com is an alias for mail.google.com.
mail.google.com is an alias for googlemail.l.google.com.
googlemail.l.google.com has address 66.249.89.19
googlemail.l.google.com has address 66.249.89.83
googlemail.l.google.com has address 66.249.89.18


$ host -t MX www.gmail.com
www.gmail.com is an alias for mail.google.com.
mail.google.com is an alias for googlemail.l.google.com.

3.nslookup的使用

nslookup可以用来交互式的进行DNS查询.nslookup有2个工作模式:交互模式和非交互模式.交互模式 允许用户查询不同主机或域DNS信息.非交互模式可以输出主机或域的名称和各种信息.

命令格式:

       nslookup [ -option ]  [ name | - ]  [ server ]

使用方法:
1)交互模式

通过两种方式可以进入交互模式:
a.运行nslookup时不使用任何参数.
b.nslookup的第1个参数是"-",并且第2个参数是1个DNS服务器的名称或IP地址.

交互模式命令:
host [server]
	查询host的信息.可以使用当前默认的DNS服务器或指定一个server.如果host是一个IP地址,并
且查询类型是A或PTR.则会输出host的域名.


server <domain>
	改变默认DNS服务器为domain.
lserver <domain>
	lserver使用初始的服务器来查询domain的信息.

exit
	退出程序.

set keyword[=value]
	这个命令用来设置一些状态信息.

	all
	输出当前设置的常用选项的信息和当前默认的服务器和主机的信息.
	> set all

	class=value
	改变查询类别为:IN,CH,HS,ANY.
	

	[no]debug
	打开/关闭调试模式.调试模式下,会输出包发送过程的信息.


	[no]d2
	打开/关闭调试模式2.会输出比调试模式更加详细的信息.

	domain=name
	设置查询列表.

	[no]search
	如果一个查询请求中,至少包含一个".",但结尾没有".".则会将搜索列表中的域名添加到上面.

	port=value
	改变默认的TCP/UDP DNS服务器端口.默认值是53.

	[no]recurse
	如果1台服务器上没有所要查询的信息,是否要查询其他的服务器.

	retry=number
	设置重试次数.

	timeout=number
	设置超时秒数.

	[no]vc
	发送请求到服务器时,是否使用虚拟电路.

示例:
$ nslookup
> server 202.106.195.68
Default server: 202.106.195.68
Address: 202.106.195.68#53
> set debug
> www.baidu.com
Server:         202.106.195.68
Address:        202.106.195.68#53

------------
    QUESTIONS:
        www.baidu.com, type = A, class = IN
    ANSWERS:
    ->  www.baidu.com
        canonical name = www.a.shifen.com.
    ->  www.a.shifen.com
        internet address = 202.108.22.43
    ->  www.a.shifen.com
        internet address = 202.108.22.5
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 202.108.22.43
Name:   www.a.shifen.com
Address: 202.108.22.5
> exit
$

2)非交互模式

当nslookup的第1个参数为需要查询的名称或IP地址时,会进入非交互模式.第2个参数用来指定DNS服务器
的名称或IP地址.

示例:
$ nslookup www.sohu.com 202.106.195.68
Server:         202.106.195.68
Address:        202.106.195.68#53

Non-authoritative answer:
www.sohu.com    canonical name = d7.a.sohu.com.
d7.a.sohu.com   canonical name = pagegrp7.a.sohu.com.
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.104
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.108
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.113
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.126
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.145
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.93
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.98
Name:   pagegrp7.a.sohu.com
Address: 61.135.150.101
$

4.nsupdate的使用

nsupdate是一个动态DNS更新工具.可以向DNS服务器提交更新记录的请求.它可以从区文件中添加或删除
资源记录,而不需要手动进行编辑区文件.

nsupdate命令格式:

       nsupdate  [  -d ]  [  [ -y keyname:secret ]  [ -k keyfile ]  ]  [ -v ]
       [ filename ]

-d	调试模式.

-k	从keyfile文件中读取密钥信息.

-y	keyname是密钥的名称,secret是以base64编码的密钥.

-v	使用TCP协议进行nsupdate.默认是使用UDP协议.

输入格式:
	nsupdate可以从终端或文件中读取命令.每个命令一行.一个空行或一个"send"命令,则会将先前
输入的命令发送到DNS服务器上.

命令格式:
server servername [ port ]
	发送请求到servername服务器的port端口.如果不指定servername,nsupdate将把请求发送给
	当前去的主DNS服务器.
	如:
	> server 192.168.0.1 53

local address [ port ]
	发送nsupdate请求时,使用的本地地址和端口.

zone zonename
	指定需要更新的区名. 

class classname
	指定默认类别.默认的类别是IN.

key name secret
	指定所有更新使用的密钥.

prereq nxdomain domain-name
	要求domain-name中不存在任何资源记录.

prereq yxdomain domain-name
	要求domain-name存在,并且至少包含有一条记录.

prereq nxrrset domain-name [ class ]  type
	要求domain-name中没有指定类别的资源记录.

prereq yxrrset domain-name [ class ]  type
	要求存在一条指定的资源记录.类别和domain-name必须存在.

update delete domain-name [ ttl ]  [ class ]  [ type  [ data... ]  ]
	删除domain-name的资源记录.如果指定了type和data,仅删除匹配的记录.

update add domain-name ttl [ class ]  type data...
	添加一条资源记录.

show
	显示自send命令后,所有的要求信息和更新请求.

send
	将要求信息和更新请求发送到DNS服务器.等同于输入一个空行.

nsupdate示例:
在/etc/named.conf中添加下面一段内容:

zone "foo.ca" in {
        type master;
        file "db.foo.ca";
        allow-transfer { 127.0.0.1; };
        allow-update { 127.0.0.1; };
        };

建立/var/named/db.foo.ca区文件,内容如下:

$ORIGIN .
$TTL 86400      ; 1 day
foo.ca                  IN SOA  foo.ca. root.foo.ca. (
                                4          ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
$TTL 86400      ; 1 day
                        NS      foo.ca.
                        A       192.168.0.1  ; A记录为192.168.0.1

使用nsupdate更新这条记录:

# nsupdate
> server 127.0.0.1
> update delete foo.ca A
>
> update add foo.ca 80000 IN A 192.168.0.2
>
> quit

停止bind服务:

# /etc/init.d/named stop

查看db.foo.ca区文件内容:

# cat db.foo.ca
$ORIGIN .
$TTL 86400      ; 1 day
foo.ca                  IN SOA  foo.ca. root.foo.ca. (
                                6          ; serial
                                10800      ; refresh (3 hours)
                                900        ; retry (15 minutes)
                                604800     ; expire (1 week)
                                86400      ; minimum (1 day)
                                )
                        NS      foo.ca.
$TTL 80000      ; 22 hours 13 minutes 20 seconds
                        A       192.168.0.2    ; A记录为192.168.0.2
$TTL 86400      ; 1 day
                        AAAA    ::1

使用nslookup查询域名foo.ca:

# nslookup
> server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53
> foo.ca
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   foo.ca
Address: 192.168.0.2
>

centos7 开启ftp chroot机制

centos7 开启ftp chroot机制
 在6系列的操作系统中要想开启ftp的chroot牢狱机制,只需要把 chroot_local_user=YES 打开 就OK 了
但是在centos7的操作系统中,做个实验的同学会发现,打开chroot_local_user=YES ,系统用户就无法登陆了!这是什么原因的
要想打开chroot,系统用户任然可以访问,需要把/home/系统家目录的权限做修改

默认的权限为
图片

需要改成
chmod u-w /home/bbb
图片
还需要在/home/bbb/下创建一个新的目录。在创建新的目录里传输数据
mkdir /home/bbb/bbb2
图片
注意修改 新创建的目录的所有者所属组

图片

用客户端工具测试(fashxp)

图片

图片
成功!

RHEL7 之xfs_quota

XFS是扩展性高、高性能的文件系统。也是rhel7/centos7的默认文件系统。

XFS支持metadata journaling,这使其能从crash中更快速的恢复。

它也支持在挂载和活动的状态下进行碎片整理和扩容。

通过延迟分配,XFS 赢得了许多机会来优化写性能。

可通过工具xfsdump和xfsrestore来备份和恢复xfs文件系统,

xfsdump可使用dump级别来完成增量备份,还可通过size,subtree,inode flags来排除文件。

也支持user、group、project配额。

挂载xfs系统分区到指定目录,并通过参数uquota,gquota开启文件系统配额。

* 1、不需要手动执行quotacheck对XFS文件系统进行检查,它会在mount 的时候自动执行

* 2、不需要在xfs文件系统的根下生成quato文件

* 3、quota limit 不能在quota启用前设置

[root@paylm-vm-rh7 ~]# mkdir /lvquota

[root@paylm-vm-rh7 ~]# mount -o usrquota,gquota /dev/vg/lv_quota /lvquota/

[root@paylm-vm-rh7 ~]# chmod 777 /lvquota/

[root@paylm-vm-rh7 ~]# chmod o+t /lvquota/

[root@paylm-vm-rh7 ~]# mount | grep lv_quo

/dev/mapper/vg-lv_quota on /lvquota type xfs (rw,relatime,seclabel,attr2,inode64,usrquota,grpquota)

###############################################################################

使用xfs_quota命令来查看配额信息以及为用户和目录分配配额,并验证配额限制是否生效。

-x  专家模式

-c  管理员命令(info xfs_quota — >> “ADMINISTRATOR COMMANDS 里面有所有的命令介绍方法” )

 

[root@paylm-vm-rh7 ~]# xfs_quota -x -c ‘report’ /lvquota/

User quota on /lvquota (/dev/mapper/vg-lv_quota)

Blocks

User ID          Used       Soft       Hard    Warn/Grace

———- ————————————————–

root                0          0          0     00 [——–]

Group quota on /lvquota (/dev/mapper/vg-lv_quota)

Blocks

Group ID         Used       Soft       Hard    Warn/Grace

———- ————————————————–

root                0          0          0     00 [——–]

davis           25600          0          0     00 [——–]

 

[root@paylm-vm-rh7 ~]# xfs_quota -x -c ‘limit bsoft=20M bhard=25M davis’ /lvquota/

[root@paylm-vm-rh7 ~]# xfs_quota -x -c ‘report’ /lvquota/

User quota on /lvquota (/dev/mapper/vg-lv_quota)

Blocks

User ID          Used       Soft       Hard    Warn/Grace

———- ————————————————–

root                0          0          0     00 [——–]

davis           25600      20480      25600     00  [6 days]

Group quota on /lvquota (/dev/mapper/vg-lv_quota)

Blocks

Group ID         Used       Soft       Hard    Warn/Grace

———- ————————————————–

root                0          0          0     00 [——–]

davis           25600          0          0     00 [——–]

[davis@paylm-vm-rh7 lvquota]$ ll

total 15360

-rw-rw-r–. 1 davis davis 15728640 Jan  6 09:36 davis.disk

[davis@paylm-vm-rh7 lvquota]$ du -sh davis.disk

15M     davis.disk

[davis@paylm-vm-rh7 lvquota]$ dd if=/dev/zero of=davis.disk1 bs=1M count=15

dd: error writing ‘davis.disk1’: Disk quota exceeded

11+0 records in

10+0 records out

10485760 bytes (10 MB) copied, 0.0122207 s, 858 MB/s

[davis@paylm-vm-rh7 lvquota]$ du -sh davis.disk1

10M     davis.disk1

[davis@paylm-vm-rh7 lvquota]$ xfs_quota

xfs_quota> help

df [-bir] [-hn] [-f file] — show free and used counts for blocks and inodes

help [command] — help for one or all commands

print — list known mount points and projects

quit — exit the program

quota [-bir] [-gpu] [-hnNv] [-f file] [id|name]… — show usage and limits

Use ‘help commandname’ for extended help.

xfs_quota> print

Filesystem          Pathname

/                   /dev/sda3

/xfs                /dev/mapper/vg-lv_xfs

/boot               /dev/sda1

/lvquota            /dev/mapper/vg-lv_quota (uquota, gquota)

xfs_quota> quota -u davis

Disk quotas for User davis (3000)

Filesystem              Blocks      Quota      Limit  Warn/Time      Mounted on

/dev/mapper/vg-lv_quota

25600      20480      25600   00  [6 days] /lvquota

xfs_quota>

查看xfs_quota的帮助文件档,可以看到一些相关的例子:

EXAMPLES

Enabling  quota  enforcement on an XFS filesystem (restrict a user to a

set amount of space).

# mount -o uquota /dev/xvm/home /home

# xfs_quota -x -c ‘limit bsoft=500m bhard=550m tanya’ /home

# xfs_quota -x -c report /home

Enabling project quota on an XFS filesystem (restrict files in log file

directories to only using 1 gigabyte of space).

# mount -o prjquota /dev/xvm/var /var

# echo 42:/var/log >> /etc/projects

# echo logfiles:42 >> /etc/projid

# xfs_quota -x -c ‘project -s logfiles’ /var

# xfs_quota -x -c ‘limit -p bhard=1g logfiles’ /var

Same as above without a need for configuration files.

# rm -f /etc/projects /etc/projid

# mount -o prjquota /dev/xvm/var /var

# xfs_quota -x -c ‘project -s -p /var/log 42’ /var

# xfs_quota -x -c ‘limit -p bhard=1g 42’ /var

Linux下FTP服务器之VSFTP配置手册

vsFTP服务器的安装

安装一个软件实在是不许要在这里介绍,因此,这里的安装主要针对vsFTPd服务器的初级配置。
VSFTPD的菜鸟篇
这 是我这个菜鸟学习LINUX所写的第一篇文章,是比较基础的FTP架设的应用,如果我写有什么问题请大家多指教,我后续会陆续出进阶篇把 FTP中各种详细的配置跟大家一起进行探讨。我所用的是Redhat Linux AS + VSFTPD-1.2.0-4的系统架构,在这里说明的是如果对配置文件不是很熟悉,最好做个备份,以免误操作:

匿名服务器的连接(独立的服务器)

在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:
anonymous_enable=yes (允许匿名登陆)

dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
local_umask=022 (FTP上本地的文件权限,默认是077)
connect_form_port_20=yes (启用FTP数据端口的数据连接)*
xferlog_enable=yes (激活上传和下传的日志)
xferlog_std_format=yes (使用标准的日志格式)
ftpd_banner=XXXXX (欢迎信息)
pam_service_name=vsftpd (验证方式)*
listen=yes (独立的VSFTPD服务器)*

功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项

开启匿名FTP服务器上传权限

在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)

开启匿名服务器下传的权限

在配置文件中添加如下信息即可:
Anon_world_readable_only=no

注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读—–下传 (W)写—-上传 (X)执行—-如果不开FTP的目录都进不去

普通用户FTP服务器的连接(独立服务器)

在配置文件中添加如下信息即可:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)

功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传

用户登陆限制进其它的目录,只能进它的主目录

设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)

设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list

注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可

限制本地用户访问FTP

Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)

注:开启userlist_enable=yes匿名帐号不能登陆

安全选项

Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)

查看谁登陆了FTP,并杀死它的进程

ps –xf |grep ftp
kill 进程号

vsFTP服务器的配置

VSFTPD的高手篇 我可不是高手!!!^_^我只不过是个菜鸟,尽我的能力写出了我这个菜鸟觉得的高手篇,所以有什么错误请大家指正哦!!!
环境:linux as 3.0 + vsftpd -1.2.0-4的系统架构,是在独立服务器下的哦!讨厌XINETD^_^

配置本地组访问的FTP

首先创建用户组 test和FTP的主目录   groupadd test
mkdir /tmp/test

然后创建用户   useradd -G test –d /tmp/test –M usr1

注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定
M:不建立默认的自家目录,也就是说在/home下没有自己的目录   useradd –G test –d /tmp/test –M usr2

接着改变文件夹的属主和权限   chown usr1.test /tmp/test —-这表示把/tmp/test的属主定为usr1
chmod 750 /tmp/test —-7表示wrx 5表示rx 0表示什么权限都没有

这个实验的目的就是usr1有上传、删除和下载的权限
而usr2只有下载的权限没有上传和删除的权限
当然啦大家别忘了我们的主配置文件vsftpd.conf
要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项是有的哦!

配置独立FTP的服务器的非端口标准模式进行数据连接

这个非常容易:在VSFTPD。CONF中添加   Listen_port=33333

就可以了啦!

配置单独的虚拟FTP,使用虚拟FTP用户,并使建立的四个帐户中有不同的权限

(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)

A:配置网卡

第一块网卡地址是10.2.3.4 掩码是255.255.0.0   ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up

B:写入/etc/sysconfig中(为了重起后IP地址不会丢失)

cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1在其中修改内容如下
DEVICE=eth0:1
BROADCAST=211.131.4.255
HWADDR=该网卡的MAC地址
IPADDR=211.131.4.253
NETMASK=255.255.255.0
NETWORK=211.131.4.0
onBOOT=yes
TYPE=Ethernet
wq退出

C:进入vsftpd.conf所在的文件夹

cp vsftpd.conf vsftpd2.conf

修改vsftpd.conf添加以下信息   Listen_address=10.2.3.4

修改vsftpd2.conf添加以下信息   Listen_address=211.131.4.253
Ftpd_banner=this is a virtual ftp test

到此虚拟的FTP服务器建立好了

D:建立logins.txt

vi /tmp/logins.txt

添加入下信息:   longlei————用户名
longlei————密码
zhangweibo
zhangweibo
jinhui
jinhui
lxp
lxp

格式要按照我的来哦,一个用户名,一个密码啦

E:建立访问者的口令库文件,然后修改其权限

db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db

F:进如/etc/pam.d/中创建ftp.vu

在此文件中添加如下信息   auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

G:在/var/ftp/创建目录并改变其属性和它的属主

useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test

在目录中添加test_file测试文件

H:进入vsftpd2.conf修改其中的信息

Listen_yes
Anonymous_enable=no
Local_enable=yes
Write_enable=no
Anon_upload_enable=no
Anon_mkdir_write_enable=no
Anon_other_write_enable=no
Chroot_local_user=yes
Guest_enable=yes———-起用虚拟用户
Guest_username=qiang——将虚拟用户映射为本地用户
Listen_port=5555
Max_client=10
Max_per_ip=1
Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu

注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件
重起服务。到此虚拟USER就建好了

I:在vsftpd.comf所在的目录中创建virtaul文件目录并在文件目录中创建以你用户名命名的配置文件

Longlei zhangweibo jinhui lxp

在longlei中添加:   Anon_world_readable_only=no

在lxp中添加   Anon_world_readable_only=no

这样此两个用户就有了浏览目录的权限了
在jinhui中添加   Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes

此用户就有了上传、下载和浏览的权限
在zhangweibo中添加   Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
Anon_other_write_enable=yes

此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限

J:修改vsftpd2.conf

加入user_config_dir=/vsftpd.conf所在的目录/virtual
重起服务器就搞定了

vsftpd.conf中的所有配置信息

vsftpd.conf的参数:

Anonymous_enable=yes 允许匿名登陆
Dirmessage_enable=yes 切换目录时,显示目录下.message的内容
Local_umask=022 FTP上本地的文件权限,默认是077
Connect_form_port_20=yes 启用FTP数据端口的数据连接 *
Xferlog_enable=yes 激活上传和下传的日志
Xferlog_std_format=yes 使用标准的日志格式
Ftpd_banner=XXXXX 欢迎信息
Pam_service_name=vsftpd 验证方式 *
Listen=yes 独立的VSFTPD服务器 *
Anon_upload_enable=yes 开放上传权限
Anon_mkdir_write_enable=yes 可创建目录的同时可以在此目录中上传文件
Write_enable=yes 开放本地用户写的权限
Anon_other_write_enable=yes 匿名帐号可以有删除的权限
Anon_world_readable_only=no 放开匿名用户浏览权限
Ascii_upload_enable=yes 启用上传的ASCII传输方式
Ascii_download_enable=yes 启用下载的ASCII传输方式
Banner_file=/var/vsftpd_banner_file 用户连接后欢迎信息使用的是此文件中的相关信息
Idle_session_timeout=600(秒) 用户会话空闲后10分钟
Data_connection_timeout=120(秒) 将数据连接空闲2分钟断
Accept_timeout=60(秒) 将客户端空闲1分钟后断
Connect_timeout=60(秒) 中断1分钟后又重新连接
Local_max_rate=50000(bite) 本地用户传输率50K
Anon_max_rate=30000(bite) 匿名用户传输率30K
Pasv_min_port=50000 将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间
Max_clients=200 FTP的最大连接数
Max_per_ip=4 每IP的最大连接数
Listen_port=5555 从5555端口进行数据连接
Local_enble=yes 本地帐户能够登陆
Write_enable=no 本地帐户登陆后无权删除和修改文件
下面这是一组
Chroot_local_user=yes 本地所有帐户都只能在自家目录
Chroot_list_enable=yes 文件中的名单可以调用
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list 前提是chroot_local_user=no
这又是一组
Userlist_enable=yes 在指定的文件中的用户不可以访问
Userlist_deny=yes
Userlist_file=/指定的路径/vsftpd.user_list
又开始单的了
Banner_fail=/路径/文件名 连接失败时显示文件中的内容
Ls_recurse_enable=no
Async_abor_enable=yes
one_process_model=yes
Listen_address=10.2.2.2 将虚拟服务绑定到某端口
Guest_enable=yes 虚拟用户可以登陆
Guest_username=所设的用户名 将虚拟用户映射为本地用户
User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹 指定不同虚拟用户配置文件的路径
又是一组
Chown_uploads=yes 改变上传文件的所有者为root
Chown_username=root
又是一组
Deny_email_enable=yes 是否允许禁止匿名用户使用某些邮件地址
Banned_email_file=//任意指定的路径/xx/
又是单的
Pasv_enable=yes 服务器端用被动模式
User_config_dir=/任意指定的路径//任意文件目录 指定虚拟用户存放配置文件的路径

vsFTP服务器的维护

现在这里还没有关于维护vsftp服务器的资料。欢迎大家编辑2

vsFTP使用的一些补充

补充一:如何有选择的把用户限制在家目录中呢?

我们要自己建一个文件,在/etc目录中   #touch /etc/vsftpd.chroot_list

以beinan和nanbei这两个用户限制在他们所在的家目录中,而其它的FTP用户不做此限制。
在vsftpd.chroot_list这个文件中,把beinan和nanbei添上去就行,注意,每个用户占一行。   beinan
nanbei

然后改/etc/vsftpd/vsftpd.conf文件,找如下的两行   #chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list

把前面的#号去掉,也就是这样的   chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list

如果没有这样的两行,就可以自己添加上去也是一样的。
设置好后,重新vsFTPD服务器。
补充一之补充:如何把系统内所有的FTP用户都限制在家目录中呢??经juliaugong兄的提示,我查找了vsFTPd的洋文说明,证明这个选项是一刀切的解决所有的用户都能限制在家目录中
我们可以通过更改vsftpd.conf文件,加入如下的一行   chroot_local_user=YES

改完配制文件,不要忘记重启vsFTPd服务器

[root@linuxsir001 root]# /etc/init.d/vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#

补充二:打开vsFTP服务器的日志功能

把 下面xferlog_file前面的#号对掉,也就是把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。这 是vsFTP的日志功能,这对于我们来说是极为重要的。   #xferlog_file=/var/log/vsftpd.log

补充三:如何让绑定IP到vsFTP?

也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP
在/etc/vsftpd/vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样外网就不能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP   listen_address=192.168.0.2

加完后,要重启vsFTP服务器   [root@linuxsir001 root]# /etc/init.d/vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#

补充四:如何让vsFTP服务器限制链接数,以及每个IP最大的链接数??

答:应该改vsFTP服务器的配制文件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服务器上普通用户的下载速度
注:这个数字的单位是字节,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024×80=81920 所以我们要在vsftpd.conf中加入下面的两行   anon_max_rate=81920
local_max_rate=81920

不要忘记重启vsftpd服务

补充六:我的硬盘空间有限,怎么办?

我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区?
可以,应该如下操作!
首先要把ftp这个用户删除   #userdel -r ftp

会有错误信息,不过不用理,这是正常的。
然后我们再把这个用户添加上,比如我想为帐号ftp的家目录设置在/mnt/LinG/ftp,我们就可以如下操作   [root@linuxsir001 root]# mkdir /mnt/LinG
[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp

仅仅是这样做还不行,因为这样还是不能让匿名用户找到它的家目录,所以我们必须改变/mnt/LinG/ftp这个目录的权限。   [root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/

补充七:如何定制欢迎信息

如何在我们登入有些FTP之后,会出现类似:欢迎您来到LinuxSir FTP,在这里,您会得到最真诚的帮助,如果有什么问题和建议,请来信,多谢。
实现这个并不难,我们可以查看vsftpd.cof文件中,是否有这行。   dirmessage_enable=YES

如果没有就加上,如果dirmessage_enable=YES前面有#号,就把#号去掉。
然后我们制定一个.message文件,写上您想要写的东西,比如是.message的内容是如下的:   欢迎您来到LinuxSir FTP!
在这里,您会得到最真诚的帮助;
如果有什么问题和建议,请来信,多谢。

我们可以用编辑器来写这个.message,我想这个过程就不用说了吧。
然后我们把.message这个文件复制到各个用户的家目录中。比如我的FTP的一个用户是beinan,这个用户所在的家目录是/home/beinan
我 们就要把.message放在/home/beinan这个目录下。如果系统用户ftp,他的目录就是/var/ftp这个目录,这个是默认的, 当匿名用户登入时就访问的是/var/ftp这个目录。我们要让匿名用户能看到欢迎信息。就要把.message放在/var/ftp目录中。其它的用 户,也无非就是类似的操作。

补充八:如何实现虚拟路径?

比如: /home/a 映射为ftp://localhost/a /home/b/c 则为ftp://localhost/c
其实这个不能说是vsFTPd的内容,其实我们早就接触过了,可能我们没有注意,我们可以通过如下的方法来实现。   #mount –bind [原有的目录] [新目录]

比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作
我们要先在/var/ftp目录中建一个目录   #mkdir /var/ftp/WinSoft

然后执行mount命令   #mount –bind /mnt/LinG/WinSoft /var/ftp/WinSoft

这样就OK了。

补充九:如何上匿名访问、上传,并支持下载和执行?

在默认的情况下,vsftp是不支持匿名用户的访问的,所以我们要自己打开相应的选项。现在我针对这个问题,我们要打开如下的选项。   anonymous_enable=YES 注:允许匿名访问
anon_upload_enable=YES 注:允许上传
anon_mkdir_write_enable=YES 注:允许建立相应的目录
anon_umask=022 把上传到FTP的文件或者目录改变权限

当 然打开这些选项还是不行的,我们还要让匿名写入文件的上一级目录有写入权,以我所做的FTP为例,我所做的FTP的匿名访问的目录是 /var/ftp,在vsFTPd中,/var/ftp这个目录是不能让匿名用户有写入权限的,这是为了安全考虑,所以我们必须自己在/var/ftp目 录中建一个目录,让这个目录有写入权。
比如:我在/var/ftp目录建一个upload目录,然后把它的权限设置成777,这样匿名用户就能写入了。   #mkdir /var/ftp/upload
#chmod 777 /var/ftp/upload

改了一系列的文件,不要忘记重启vsFTPd服务器
我是用standalone模式的,当然用下面的方法   [root@linuxsir001 root]# service vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#

如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器   [root@linuxsir001 root]# service xinetd restart
停止 xinetd: [ 确定 ]
启动 xinetd: [ 确定 ]
[root@linuxsir001 root]# ]

补充十:通过pam认证方式,添加虚拟用户

通过pam认证,用db_load添加用户,是真正的虚拟用户。现在我们简单的介绍一下,通过以后的学习,我们再深入补充:
1。在/etc/pam.d/目录中创建一个文件ftp   [root@linuxsir001 root]# touch /etc/pam.d/ftp

2。在/etc/pam.d/ftp里面加上如下的两行   auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

3。创建一系统的用户名用密码的文件logins.txt   [root@linuxsir001 root]# touch logins.txt

在 logins.txt文件中,输入如下的内容。这个内容您可以自己来定。比如我下面的。其实linuxsir007是FTP的虚拟用户名, 123456是linuxsir007的密码;linuxsir008是虚拟用户名,234567是linuxsir008的密码,以此类推,您想加入几 个就是几个;下面是我添加的FTP的虚拟用户名和密码。   linuxsir007
123456
linuxsir008
234567
linuxsir009
567890
linuxsir010
678901
linuxsir011
789012

4。创建一个真实的用户名linuxsir006,这个linuxsir006的用户,所在的家目录由您来定。我在这里不多说了。我是按系统默认的来添加的。   [root@linuxsir001 root]# useradd linuxsir006

5。把/etc/hosts复制到/home/linuxsir006,并改变它的属主   [root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts
[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts

6。 通过db_load来创建虚拟用户的库文件。我们在前面建的logins.txt文件,我是放在了/root用户目录下。所以咱们得把目录切换到 /root目录来创建虚拟用户的库文件。   [root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

7。更改vsftpd.conf文件,加入如下的几行   pam_service_name=ftp
guest_enable=YES
guest_username=linuxsir006
anon_world_readable_only=NO

补充十一:如何把系统默认用standalone启动改为用xinetd启动?

如 何把Redhat 9.0中系统默认安装的vsftpd-1.1.3-8.i386.rpm,系统默认vsFTPd是用standalone启动方式 ,改为xinetd启动方式 ?如果是用源码包安装的,安装后就是xinetd模式,如果是用RPM包安装的,在Redhat 9.0中,应该用下面的方法来解决。
1.在/etc/xinetd.d/目录中创建一个文件vsftpd   [root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd

/etc/xinetd.d/vsftpd内容如下:   service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID
# log_on_failure += USERID
nice = 10
disable = no
}

2。 复制vsftpd.conf到/etc/目录下,因为xinetd对vsFTPd配制文件应该在/etc目录下,所以我们就必须把这个文件复制 到/etc目录下,否则会出现系统中local用户无法登入,也就是说,不复制这个文件会出现ftp非匿名用户无法访问,只能用匿名用户访问。   [root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf

3。更改配制文件/etc/vsftpd.conf,把如下的项注掉:也就是把   listen=YES

改为   #listen=YES

或者是把这行删除也行。
4。把/etc/init.d/vsftpd这个文件删除。其实最好的备份到别处,因为我们有时实验来实验去,可能还会转到standalone模式启动。我就直接移动到别的目录,比如是/root下面的backup目录。

[root@linuxsir001 root]#mkdir /root/backup
[root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup

5。运行ntsysv,把vsftpd的服务取消   [root@linuxsir001 root]#ntsysv
[ ] vsftpd

6。重启xinetd服务   [root@linuxsir001 root]# service xinetd restart