标签:CentOS

Yum 实现 PHP 5.4 升级 PHP5.6

很多 CentOS 操作系统 Yum 源的PHP 版本都是5.6以下的,而很多开源的软件又需要5.6或者更高,这个时候为了方便,我们最简单的办法就是通过 Yum 源进行 PHP 的升级。
01、执行下面的命令升级软件仓库

rpm -Uvh https://mirror.webtatic.com/yum/el7/epel-release.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm

02、执行下面的命令删除 PHP(卸载的时候关注下卸载了哪些包)

yum remove php-common

03、安装 PHP 5.6版本(php56w-devel这个不是必需的)(可以使用yum search php56w查看下缺失了那些依赖包)

yum install -y php56w php56w-opcache php56w-xml php56w-mcrypt php56w-gd php56w-devel php56w-mysql php56w-intl php56w-mbstring php56w-fpm

04、重启httpd

service httpd restart

05、查看最新的版本

php -v

至此,升级完成!
参考链接【kismile


通过 Chroot 限制用户在指定目录

我们将test用户锁定在/data/chroot/test下,test登陆后只能使用ssh、ls等基本命令
一、创建用户
1.创建test用户(不创建其缺省家目录)

useradd -M test
passwd test

2.建立chroot目录中用户主目录

mkdir -p /var/chroot/home/test
chown -R test.test /data/chroot/test
chmod 700 /data/chroot/test

二、搭建基本的chroot环境

mkdir -p /data/chroot
cd /data/chroot/
mkdir -p dev/
cd dev/
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8
mknod -m 666 urandom c 1 9

cd /data/chroot/
mkdir -p bin
cp -v /bin/bash bin/
ldd /bin/bash
mkdir -p lib64
cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} lib64/

#并删除用户自己和root以外的所有帐号。如果没有这两个文件,用登录以后会报“I have no name!”
cd /data/chroot/
mkdir etc
cp -vf /etc/{passwd,group} etc/

#修改/var/chroot及其子目录的属主,并修改权限
chown -R root.root /data/chroot
chmod -R 755 /data/chroot

三、配置ssh

vim /etc/ssh/sshd_config
#在最后添加如下行,否则会报错
Match User test
ChrootDirectory /data/chroot

#重启ssh
service sshd restart

四、拷贝基础命令

ldd /bin/ls | awk '{ print $3 }' | grep "/lib" | sort | uniq
/lib64/libacl.so.1
/lib64/libattr.so.1
/lib64/libcap.so.2
/lib64/libc.so.6
/lib64/libdl.so.2
/lib64/libpthread.so.0
/lib64/librt.so.1
/lib64/libselinux.so.1
ldd /usr/bin/ssh | awk '{ print $3 }' | grep "/lib" | sort | uniq
/lib64/libcom_err.so.2
/lib64/libcrypt.so.1
/lib64/libc.so.6
/lib64/libdl.so.2
/lib64/libfipscheck.so.1
/lib64/libfreebl3.so
/lib64/libgssapi_krb5.so.2
/lib64/libk5crypto.so.3
/lib64/libkeyutils.so.1
/lib64/libkrb5.so.3
/lib64/libkrb5support.so.0
/lib64/libnsl.so.1
/lib64/libnspr4.so
/lib64/libplc4.so
/lib64/libplds4.so
/lib64/libpthread.so.0
/lib64/libresolv.so.2
/lib64/librt.so.1
/lib64/libselinux.so.1
/lib64/libutil.so.1
/lib64/libz.so.1
/usr/lib64/libcrypto.so.10
/usr/lib64/libnss3.so
/usr/lib64/libnssutil3.so
#!/bin/bash
#comment:用于ssh登陆chroot后,给用户添加命令
 # 要允许执行的文件列表
 cmdlist="/bin/bash /bin/ls /bin/cp /bin/mkdir /bin/mv /bin/rm /bin/rmdir /usr/bin/ssh /usr/bin/id"
 # chroot路径
 chroot_path="/var/chroot"
 # 判断依赖的库文件
 lib_1=`ldd $cmdlist | awk '{ print $1 }' | grep "/lib" | sort | uniq`
 lib_2=`ldd $cmdlist | awk '{ print $3 }' | grep "/lib" | sort | uniq`
 # 复制命令文件
 for i in $cmdlist
 do
   if [ ! -d `dirname ${chroot_path}$i` ];then
        mkdir -p `dirname ${chroot_path}$i`
   fi
   cp -a $i ${chroot_path}$i && echo "$i done"
 done
 # 复制依赖的库文件(因为是i386,所以是lib,如果是x86_64,则是lib64,)
 for j in $lib_1
 do
   if [ ! -d `dirname ${chroot_path}$j` ];then
        mkdir -p `dirname ${chroot_path}$j`
   fi
   cp -f $j ${chroot_path}$j && echo "$j done"
 done

 for k in $lib_2
 do
   if [ ! -d `dirname ${chroot_path}$k` ];then
        mkdir -p `dirname ${chroot_path}$k`
   fi
   cp -f $k ${chroot_path}$k && echo "$k done"
 done

到此完成配置,可以锁定用户目录,在测试中如果遇到【 Write failed: Broken pipe 】等问题,多看日志【 /var/log/secure 】

参考连接:【yanggd1987的专栏科技小咖


Linux 免密登陆

01、在本机命令行终端输入ssh-keygen -t rsa -b 4096 -C 'test'
02、系统提示Enter file in which to save the key,此处回车即可,如果之前创建过,此时会提示是否覆盖,请根据实际情况选择
03、系统提示Enter passphrase,此处提示输入密码,可以不输入
04、重复输密码
05、进入.ssh 目录,可以看到如下文件
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
06、将.pub 文件内容复制到希望免密登陆的服务器相应用户的.ssh 目录下
07、此时完成免密登陆配置

PS:有的时候,配置好了 SSH 时还是会提示权限禁止,此时请在免密登陆服务器检查如下内容
1) .ssh目录的权限必须是700
2) .ssh/authorized_keys文件权限必须是600


CentOS下搭建Git服务(SSH协议)

1,我们选择最简单的安装方式 YUM

yum install git

2,创建git用户

adduser git
su git
cd ~
mkdir .ssh
touch authorized_keys

3,创建证书登录
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。如果 git 用户没有.ssh 目录,创建就好
4,初始化Git仓库
设定一个目录作为Git仓库,这里假设是/data/sample.git,在/data目录下输入命令

git init --bare sample.git

这里用 –bare 选项运行 git init 来建立一个裸仓库,这会初始化一个不包含工作目录的仓库。
然后,把owner改为git

chown -R git:git sample.git

5,禁用 git 用户的 shell 登录
出于安全考虑,git用户不允许登录shell,编辑/etc/passwd文件:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
6,客户端拉取代码
第一台客户端

# 在第一台客户端的电脑上
cd myproject(客户端的仓库目录)
git init
git add .
touch Readme.md
git add Readme.md
git commit -m 'initial commit'
git remote add origin git@gitserver(git 服务器地址):/data/sample.git(服务器上面的仓库目录)
git push origin master

第二台以上客户端

$ git clone git@gitserver:/data/sample.git
cd project
vim README
git commit -am 'fix for the README file'
git push origin master