vsftp install and selinux config on centos6.x

ftp

1.安装 vsftpd
yum install vsftpd -y

2.同步数据和配置
rsync -avz root@192.168.1.3:/data/vsftp/ vsftp/

rsync -avz root@192.168.1.3:/etc/vsftpd/ vsftpd/
/etc/init.d/vsftpd restart

3.添加用户
useradd -d /data/vsftp -g ftp -s /sbin/nologin dkmftp

4.selinux设置

setenforce 0 #关
setenforce 1 #开

setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_full_access 1
setsebool -P ftpd_connect_db=on

service vsftpd restart

5. selinux 配置
SELinux在enforcing模式下配置vsftp,运行指定用户访问
https://wiki.centos.org/zh/HowTos/SELinux#head-23b32edada724aa8a29ab04685b53de6455e08a0
http://www.linuxquestions.org/questions/linux-software-2/vsftpd-and-selinux-449313/
http://dingxuan.info/blog/read.php/313.htm
http://nameyjj.blog.51cto.com/788669/496025

### 下面是乱的 可以不用看

setsebool -P ftp_home_dir 1

#CentOS6里,是这样
setsebool -P allow_ftpd_full_access 1
setsebool -P ftpd_connect_db=on

service vsftpd restart

/etc/selinux/config

此时访问ftp,你会发现无法访问,这是由于SELinux引起的。
[root@localhost yjj]# setsebool -P ftp_home_dir=on
[root@localhost yjj]# setsebool -P ftpd_connect_db=on

getsebool -a|grep ftp

2. 经过研究,又找到了另一个更理想的办法。首先查看SELinux中有关FTP的设置状态:
getsebool -a|grep ftp

allow_ftpd_anon_write –> off
allow_ftpd_full_access –> off
allow_ftpd_use_cifs –> off
allow_ftpd_use_nfs –> off
allow_tftp_anon_write –> off
ftp_home_dir –> off
ftpd_connect_db –> off
ftpd_disable_trans –> on
ftpd_is_daemon –> on
httpd_enable_ftp_server –> off
tftpd_disable_trans –> off

经过尝试发现,打开ftp_home_dir或者 ftpd_disable_trans。都可以达到在enforcing级别下,允许FTP正常登录的效果。

setsebool -P ftp_home_dir 1
#CentOS6里,是这样
setsebool -P allow_ftpd_full_access 1

setsebool -P ftpd_connect_db=on

service vsftpd restart

加-P是保存选项,每次重启时不必重新执行这个命令了。最后别忘了在/etc/sysconfig/selinux中,修改SELINUX=enforcing。

GoDaddy SSL(UCC/SAN SSL)证书从购买到Nginx配置

Question:项目里有5个域名要添加 https

Answer:

第一 购买ssl key 这边是决定在godaddy 购买 并选择 UCC/SAN SSL 有5个san 而我要保护的刚好是5个域名 这样的好处是费用比较低,但是对运维的要求可能就比较高,很多要运维操作的,而不像国内的,给钱就全搞定了,直接给你个crt文件
官方购买链接
https://sg.godaddy.com/zh/web-security/ssl-certificate

第二 动手操作过程
1) 生成key
openssl req -new -newkey rsa:2048 -nodes -keyout 您的域名.key -out 您的域名.csr
Country Name (2 letter code) [AU]:CN(CN就代表中国)
State or Province Name (full namne) [Some-State]:Guangdong(填省份)
Locality Name (eg, city) []:Shaoguan(填城市名)
Organization Name (eg, company) [Internet Widgits Pty Ltd]:XXX.com
Organizational Unit Name (eg, section) []:DBA
Common Name (e.g. server FQDN or YOUR name) []: 一定要注意 这里要填写 5个SAN中的一个哦 这里填写最终认证的网址,如:xxx.com(加不加www都是可以的,加或不加,godaddy都会同时认证www和不带www的。见godaddy的说明 http://support.godaddy.com/help/article/5343/generating-a-certificate-signing-request?pc_split_value=4)
Email Address []:admin@xxx.com(最好是以域名为后缀的邮箱,填写其它的也行,)
Please enter the following ‘extra’ attributes to be sent with your certificate request
A challenge password []:(留空)
An optional company name []:(留空)

#要注意这个哦 一定要注意 这里要填写 5个SAN中的一个哦
Common Name (eg, your name or your server’s hostname) []:pay.game.com

2)
添加主题备用名称 (SAN)
ucc 添加主题备用名称
https://certs.godaddy.com/cert/advanced/jkl4oaea7onn3qfhjdmecmd7kydjy6c6

3)
(name of your certificate).csr,把里面的内容粘到godaddy的相应表单内,然后等待审核

4) 如果域名不在你的这个帐号中 就要 Verify domain ownership
我一般选择HTML Page 按要求 上传个文件到web目录下

验证 ownship
https://sg.godaddy.com/zh/help/ssl-html-dns-7452
https://sg.godaddy.com/zh/help/verify-domain-ownership-html-or-dns-7452

5)审核过了,去GoDaddy下载生成的证书,选择证书时,服务器类型选择 other ,不要问我为什么 哈哈

这里要注意,下载回来的是2个crt文件,需要运行下面命令把他们合并成一个
教程 http://nginx.org/en/docs/http/configuring_https_servers.html#chains

cat www.mysite.com.crt gd_bundle.crt > mysite_combined.crt

6)修改或者添加 nginx的配置文件

ssl_certificate指向crt文件位置,ssl_certificate_key指向key文件位置(一开始自己生成的那个pri key ),nginx SSL就可以工作了。

server {
#listen [::]:80;
#listen [::]:80 ipv6only=on;
listen 443 ssl;
server_name game.com ;
ssl_certificate /data/game.com.crt;
ssl_certificate_key /data/game.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;

https 测试
打开你添加了key 的那个站点,
或者
https://casecurity.ssllabs.com/

参考
https://www.godaddy.com/help/ssl-certificates-1000006?v=1

Nginx配置GoDaddy SSL证书步骤

nginx 域名跳转配置

如下 www.game.com game.com 都 跳转到另外一个域名 pay.com

[root@web1 host]# cat www.game.com.conf
server {
listen 80;
server_name www.game.com game.com;
if ($host = 'www.game.com' ) {

rewrite ^(.*)$ https://pay.com/$1 permanent;
}

if ($host = 'yahgame.com') {

rewrite ^(.*)$ https://pay.com/$1 permanent;
}
}

Nginx 域名跳转配置

CentOS6.8单用户模式(重设root密码)

上个星期,公司换了主路由,于是很多vm的IP变了 今天打包机就是这个情况,以前加了key 就没去怎么记住密码,然后果真就忘记了 ,然后就悲剧了,想了好久没想出密码来,于是 只好 单用户模式

1、开机时手要快按任意键,因为默认时间才几s

2、grub菜单,只有一个内核,按e键。不过如果你升级了系统或安装了Xen虚拟化后,就会有多个显示了
3、接下来显示如下,选择第二项,按e键 开头一般是 kernel 字样的

4、接下来显示如下,在rhgb quiet最后加”空格”,然后键入”1″或”s”或”S”或”single”都可以,按回车键返回上一层

5、按b键启动系统

6、最后界面

#输入1:
直接输入passwd就能改root密码

参考

https://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-rescuemode-booting-single.html

rpmbuild

一、安装 rpmbuild

// for fedora linux
yum install rpmbuild -y

// for ubuntu
apt-get install rpmbuild

http://my.oschina.net/lj2007331/blog/522306
BUILD:源代码解压以后放的位置
RPMS:制作完成后的rpm包存放目录,为特定平台指定子目录(x86_64)
SOURCES:收集的源文件,源材料,补丁文件等存放位置
SPECS:存放spec文件,作为制作rpm包的领岗文件,以rpm名.spec
SRPMS:src格式的rpm包位置 ,既然是src格式的包,就没有平台的概念了
BuiltRoot:假根,使用install临时安装到这个目录,把这个目录当作根来用的,所以在这个目录下的目录文件,才是真正的目录文件。当打包完成后,在清理阶段,这个目录将被删除

[root@rpmbuild SOURCES]# rpmbuild –showrc | grep topdir
-14: _builddir %{_topdir}/BUILD
-14: _buildrootdir %{_topdir}/BUILDROOT
-14: _rpmdir %{_topdir}/RPMS
-14: _sourcedir %{_topdir}/SOURCES
-14: _specdir %{_topdir}/SPECS
-14: _srcrpmdir %{_topdir}/SRPMS
-14: _topdir %{getenv:HOME}/rpmbuild

rpmbuild –showrc显示所有的宏,以下划线开头,一个下划线:定义环境的使用情况,二个下划线:通常定义的是命令,为什么要定义宏,因为不同的系统,命令的存放位置可能不同,所以通过宏的定义找到命令的真正存放位置

二、rpm specification file
spec文件规范
能熟练掌握以上命令以及部分参数含义,管理日常的rpm软件包就不成问题了。然而随着Linux风靡全球,越来越多的开发者喜欢采用RPM格式来发布自己的软件包。那么RPM软件包是怎样制作的呢?对大多数Linux开发工程师来说是比较陌生的。

其实,制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。要想制作一个rpm软件包就必须写一个软件包描述文件 (SPEC)。这个文件中包含了软件包的诸多信息,如软件包的名字、版本、类别、说明摘要、创建时要执行什么指令、安装时要执行什么操作、以及软件包所要 包含的文件列表等等。

描述文件说明如下:

(1) 文件头

一般的spec文件头包含以下几个域:

Summary:
用一句话概括该软件包尽量多的信息。

Name:
软件包的名字,最终RPM软件包是用该名字与版本号,释出号及体系号来命名软件包的。

Version:
软件版本号。仅当软件包比以前有较大改变时才增加版本号。

Release:
软件包释出号。一般我们对该软件包做了一些小的补丁的时候就应该把释出号加1。

Vendor:
软件开发者的名字。

Copyright:
软件包所采用的版权规则。具体有:GPL(自由软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等,一般的开发都写GPL。

Group:
软件包所属类别,具体类别有:
Amusements/Games (娱乐/游戏)
Amusements/Graphics(娱乐/图形)
Applications/Archiving (应用/文档)
Applications/Communications(应用/通讯)
Applications/Databases (应用/数据库)
Applications/Editors (应用/编辑器)
Applications/Emulators (应用/仿真器)
Applications/Engineering (应用/工程)
Applications/File (应用/文件)
Applications/Internet (应用/因特网)
Applications/Multimedia(应用/多媒体)
Applications/Productivity (应用/产品)
Applications/Publishing(应用/印刷)
Applications/System(应用/系统)
Applications/Text (应用/文本)
Development/Debuggers (开发/调试器)
Development/Languages (开发/语言)
Development/Libraries (开发/函数库)
Development/System (开发/系统)
Development/Tools (开发/工具)
Documentation (文档)
System Environment/Base(系统环境/基础)
System Environment/Daemons (系统环境/守护)
System Environment/Kernel (系统环境/内核)
System Environment/Libraries (系统环境/函数库)
System Environment/Shells (系统环境/接口)
User Interface/Desktops(用户界面/桌面)
User Interface/X (用户界面/X窗口)
User Interface/X Hardware Support (用户界面/X硬件支持)

Source:
源程序软件包的名字。如 stardict-2.0.tar.gz。

%description:
软件包详细说明,可写在多个行上。

(2)%prep段

这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面的%build,%install段一样,除 了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令,命令可以有很多行,如我们常写的tar解包命令。

(3)build段

本段是建立段,所要执行的命令为生成软件包服务,如make 命令。

(4)%install段

本段是安装段,其中的命令在安装软件包时将执行,如make install命令。

(5)%files段

本段是文件段,用于定义软件包所包含的文件,分为三类–说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。

(6)%changelog段

本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发布的软件包中,以便查询之用。每一个修改日志都有这样一种格式:第一行是:* 星期 月 日 年 修改人 电子信箱。其中:星期、月份均用英文形式的前3个字母,用中文会报错。接下来的行写的是修改了什么地方,可写多行。一般以减号开始,便于后续的查阅。

三、源代码打包

将源代码打包,如 stardict-2.0.tar.gz,并将文件放到spec文件Source段所描述的路径下,通常为 SOURCES/目录下

四、rpm打包

rpmbuild -ba ‘spec文件路径’
rpmbuild常用参数: -bb 只编译二进制rpm包 -bs 只编译源码rpm包 -ba 同时编译二进制和源码rpm包)

#rpm note from book the development of shftware management platform on linux

#查看
[root@localhost ~]# rpm -qpl /root/rpmbuild/RPMS/x86_64/libiconv-1.14-1.x86_64.rpm
/etc/ld.so.conf.d
/etc/ld.so.conf.d/libiconv.conf
/usr/local
/usr/local/bin
/usr/local/bin/iconv
/usr/local/include
/usr/local/include/iconv.h
/usr/local/include/libcharset.h
/usr/local/include/localcharset.h
/usr/local/lib
/usr/local/lib/charset.alias
/usr/local/lib/libcharset.a
/usr/local/lib/libcharset.la
省略

#4 系统服务注册
rpm -qpl /root/rpmbuild/RPMS/x86_64/ dkm_nginx-1.8.1-1.1.x86_64.rpm | grep init

#5 软件依赖检查
[root@localhost ~]# rpm -qp /root/rpmbuild/RPMS/x86_64/libiconv-1.14-1.x86_64.rpm -requires
/bin/sh
/bin/sh
/bin/sh
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libcharset.so.1()(64bit)
libiconv.so.2()(64bit)
rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) rpmlib(PayloadIsXz) <= 5.2-1 RPM实现引子 [root@localhost SPECS]# rpm -qp /root/dkm_php-5.6.6-2.x86_64.rpm -scripts preinstall program: /bin/sh postinstall scriptlet (using /bin/sh): # Register the nginx service if [ $1 -eq 1 ]; then /sbin/chkconfig --add php-fpm fi preuninstall scriptlet (using /bin/sh): if [ $1 -eq 0 ]; then /sbin/service php-fpm stop > /dev/null 2>&1
/sbin/chkconfig –del php-fpm
fi
postuninstall program: /bin/sh

rpmbuild -bb libiconv.spec;rpmbuild -ba libiconv.spec
-ba build source and binary packages from
-bb build binary package only from

Autoreqprov: no

4.Macros(宏)

先说下RPM的宏命令
对于spec文件中未明确定义的宏命令,都继承自/usr/lib/rpm/macros
http://mattshma.github.io/2015/11/04/rpm%E6%89%93%E5%8C%85/

# Path to top of build area.
%_topdir %{getenv:HOME}/rpmbuild
%_sourcedir %{_topdir}/SOURCES

# The directory where the spec file from a source package will be
# installed.
%_specdir %{_topdir}/SPECS

# The directory where newly built source packages will be written.
%_srcrpmdir %{_topdir}/SRPMS

# The directory where buildroots will be created.
%_buildrootdir %{_topdir}/BUILDROOT

# Build root path, where %install installs the package during build.
%buildroot %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}

若vim新建的.spec文件不包括默认内容,一般原因可能是当前vim不是系统默认自带的vim,可拷贝/usr/share/vim/vimfiles/template.spec内容到新建的空白spec文件中。

BuildRoot 注意其与BUILD目录的区别。BUILD目录即%{_builddir},编译是在BUILD目录中进行的,当编译完成后,将打包需要的文件从BUILD目录复制到BuildRoot目录,然后在BuildRoot目录进行安装,若设置BuildRoot为/usr/local,可用$RPM_BUILD_ROOT或%{buildroot}访问它,值为rpmbuild/BUILDROOT/usr/local。除了在spec文件中设置BuildRoot外,还可以在rpmrc文件或在rpmbuild命令使用–buildroot来设置BuildRoot。

对于configure,不建议在configure时即指定安装目录:./configure –prefix=$RPM_BUILD_ROOT。因为在install阶段,可能会删除buildroot目录,见%install。

%setup -q #这个宏的作用静默模式解压并cd

#翻译成可执行脚本 为

cd rpmbuild/BUILD
rm -rf libiconv-1.14
gzip -dc /root/rpmbuild/SOURCES/libiconv-1.14.tar.gz | tar -xvvf –
if [ $? -ne 0 ]; then
exit $?
fi
cd libiconv-1.14
/root/rpmbuild/BUILD/libiconv-1.14
chown -R root:root .
chmod -R a+rx ,g-w ,o-w . # a+rX ?

-n 选项
设置源码编译目录的名字
%setup -n php-%{version} # 可见 和上面的不太一样

evan@evanpc:~/dkm$ ls rpmbuild_dkm/rpmbuild4php20161028/BUILD/php-5.6.6/

-c 选项
自动创建build 目录

等于多了
mkdir -p libiconv-1.14

-D选项
少了删除目录的过程

-T选项 不进行默认压缩文件的解压

-b选项 进入目录前,解压某个源码
eg %setup -b 0 解压第0个源码

%setup -T -b 0 #结合使用 就只解压一次,不会像上面的解压两次

-a 选项 进入目录后解压

一般使用
%setup -T -b/-a` -c 0

(2) patch 宏

%patch2 == $patch -P 2

5.files(文件 )

%defattr用来设置文件权限,格式为%defattr(<文件权限>, <用户>, <用户组>, <目录权限>),如%defattr(-,root,root,-),-表示默认权限。注意不能再用%{buildroot}/usr/local之类的命令引用文件,这会在%{buildroot}/%{buildroot}/usr/local中查找文件。
%attr 指令用来设置文件默认的权限 属主和属组

(-,root,root)

%dir /usr/local/data #只会把这个目录打包进入rpm中,而不包含其中的文件

7.Conditionals (条件)

[root@localhost SPECS]# rpmbuild –showrc | grep topdir #工作车间目录:_topdir /root/rpmbuild
-14: _builddir %{_topdir}/BUILD
-14: _buildrootdir %{_topdir}/BUILDROOT
-14: _rpmdir %{_topdir}/RPMS
-14: _sourcedir %{_topdir}/SOURCES
-14: _specdir %{_topdir}/SPECS
-14: _srcrpmdir %{_topdir}/SRPMS
-14: _topdir %{getenv:HOME}/rpmbuild

正式打包

#没这两个命令呀
首先可使用rpmlint mysql.spec来测试SPEC文件的错误。然后可使用yum-builddep SPECS/mysql.spec来安装依赖。
使用rpmbuild来打包,执行命令:rpmbuild -v -bb –clean SPECS/mysql.spec,打包过程都可以在/var/tmp/rpm-tmp.xxxxx看到,若出错的话,可查看该文件。

打包好后,将rpm文件放在yum服务器上,然后执行createrepo rpm_目录名。编写相关repo文件,并执行yum makecache更新yum源,即可安装相应包。

RPM打包

制作PHP的RPM包教程

rpmbuild 打包遇到的问题

解决error: Package already exists: %package debuginfo
在spec中注释掉字段或tag会提示以上错误,不要的字段和tag直接删除掉

我的问题 要直接删除 注释也不行
#%install

Chapter 3 深入理解和使用YUM

tcpdump密码嗅探_tag

tcpdump密码嗅探

在ftp server 监听 网卡eth0 上的 21 端口
tcpdump -i eth0 -nn -X 'port 21'

在client login

然后回来就可以看到了

此处省略

0x0020: 5018 3908 846a 0000 3232 3020 2876 7346 P.9..j..220.(vsF
0x0030: 5450 6420 322e 322e 3229 0d0a TPd.2.2.2)..
11:58:48.817338 IP 192.168.1.45.50807 > 192.168.1.190.21: Flags [P.], seq 1:12, ack 21, win 64220, length 11

此处省略
11:58:48.817338 IP 192.168.1.45.50807 > 192.168.1.190.21: Flags [P.], seq 1:12, ack 21, win 64220, length 11
0x0000: 4500 0033 4bbd 4000 8006 2acc c0a8 012d E..3K.@…*….-
0x0010: c0a8 01be c677 0015 3f3d 8a16 8498 c78c …..w..?=……
0x0020: 5018 fadc ac0e 0000 5553 4552 2072 6f6f P…….USER.roo
0x0030: 740d 0a t..
11:58:48.817345 IP 192.168.1.190.21 > 192.168.1.45.50807: Flags [.], ack 12, win 14600, length 0
0x0000: 4500 0028 cefd 4000 4006 e796 c0a8 01be E..(..@.@…….
0x0010: c0a8 012d 0015 c677 8498 c78c 3f3d 8a21 …-…w….?=.!
0x0020: 5010 3908 1680 0000 P.9…..
11:58:48.817443 IP 192.168.1.190.21 > 192.168.1.45.50807: Flags [P.], seq 21:55, ack 12, win 14600, length 34
0x0000: 4500 004a cefe 4000 4006 e773 c0a8 01be E..J..@.@..s….
0x0010: c0a8 012d 0015 c677 8498 c78c 3f3d 8a21 …-…w….?=.!
0x0020: 5018 3908 8478 0000 3333 3120 506c 6561 P.9..x..331.Plea
0x0030: 7365 2073 7065 6369 6679 2074 6865 2070 se.specify.the.p
0x0040: 6173 7377 6f72 642e 0d0a assword…
11:58:48.817564 IP 192.168.1.45.50807 > 192.168.1.190.21: Flags [P.], seq 12:25, ack 55, win 64186, length 13
0x0000: 4500 0035 4bbe 4000 8006 2ac9 c0a8 012d E..5K.@…*….-
0x0010: c0a8 01be c677 0015 3f3d 8a21 8498 c7ae …..w..?=.!….
0x0020: 5018 faba ea5a 0000 5041 5353 2031 3233 P….Z..PASS.123
0x0030: 3435 360d 0a 456..

此处省略

可见 ftp软件为 vsftp ftp 用户是root 密码为123456

expect

#!/usr/bin/expect
#good on new kali 这个在新的kali 上是ok的
set timeout 30
set sshIP "4.88.1.2"
set keypassword "ZdvV"
set rootPassword "5D"
#spawn ssh -o StrictHostKeyChecking=no -i /root/key evan@$sshIP

expect "Enter passphrase"
send "$keypassword\r"
expect "]$"
send "sudo -i\r"
expect "xxxxx"
send "$rootPassword\r"
expect "]#"
## run command
#send "cat /root/1 && echo 'test was ok .';exit\r"
#send "bash /data/tmp/dbins && echo 'dbins was ok.';exit\r"
#expect "52wan"
#send "exit\r"
#expect eof {exit 0}
interact


#!/usr/bin/expect
# on old kali 这个在老的kali
set timeout 30
set sshIP "4.88.1.2"
set keypassword "Zd"
set rootPassword "5D"
spawn ssh -o StrictHostKeyChecking=no -i /home/key evan@$sshIP
expect "Enter passphrase"
send "$keypassword\r"
expect "52wan"
send "sudo -i\r"
expect "password for 52wan:"
send "$rootPassword\r"
expect "]#"
## run command
#send "cat /root/1 && echo 'test was ok .';exit\r"
#send "bash /data/tmp/dbins && echo 'dbins was ok.';exit\r"
#expect "52wan"
#send "exit\r"
#expect eof {exit 0}
interact

learn

ip
ip add

ping -c 5 baidu.com

netstat -nlptu

host baidu.com

ftp lftp

20161015

zabbix中文乱码解决方法

zabbix乱码是怎么照成的呢?

zabbix使用DejaVuSan.ttf字体,不支持中文,导致中文出现乱码。解决方法很简单,windows 里面字体文件传到zabbix服务器上。

找到本地C:\Windows\Fonts\simkai.ttf(楷体)上传到服务器zabbix网站目录fonts目录下。

wget linuxchina.net/simkai.ttf

修改zabbix php配置文件
cd /data//zabbix/ # 我zabbix安装目录
cp include/defines.inc.php include/defines.inc.phpbak
sed -i 's/DejaVuSans/simkai/g' ./include/defines.inc.php

通过以上的操作,大部分同学的乱码问题解决了,但是依旧有一些同学还是乱码?初始化数据库的时候未使用utf8编码所致.初始化数据库使用命令
create database zabbix default charset utf8;

或者my.cnf增加如下配置
default-character-set = utf8

http://www.ttlsa.com/zabbix/zabbix-chinese-garbled-ttlsa/

Linux启动或禁止SSH用户及IP的登录

1:Linux启动或禁止SSH root用户的登录

vi /etc/ssh/sshd_config
#yes 就是可以使用SSH方式的root登录
#no就是禁止使用SSH方式的root登录
PermitRootLogin no

2:Linux限制SSH用户

AllowUsers evan

evan是我操作系统的用户,如果没有用户可以手动添加AllowUsers

启动或禁止用户IP登录
/etc/hosts.allow配置文件,设置允许登录的IP
sshd:192.168.220.164

/etc/hosts.deny文件,设置sshd:ALL

参考
http://blog.csdn.net/linghe301/article/details/8211305