背景
有时开发为了方便查找问题,需要临时申请服务器登录权限,查看日志,给普通权限的话,权限太大,容易引起安全问题。
为啥需要登录服务器查看日志,直接分析文本文件更灵活。
jailkit部署
$ sudo cd /usr/local/services/src
$ sudo wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.bz2
$ sudo tar xf jailkit-2.19.tar.bz2
$ sudo cd jailkit-2.19
$ sudo ./configure --prefix=/usr/local/services/jailkit-2.19 >/dev/null
$ sudo make >/dev/null && make install >/dev/null
jailkit应用
创建chroot目录
$ sudo mkdir /data/chroot
注:组初始化时/data/目录必须root权限
添加普通用户
$ sudo useradd testuser
开启xterm,编辑jk_init.ini文件内容
$ cd /usr/local/services/jailkit-2.19
$ sudo sed -i '/#\[xterm\]/,$s/^#//' ./etc/jailkit/jk_init.ini
组初始化
$ sudo jk_init -v -j /data/chroot basicshell jk_lsh xterm
注:组初始化,具体初始化的group请参考jailkit/jk_init.ini
增加chroot系统用户
$ sudo jk_jailuser -m -j /data/chroot -s /bin/bash testuser
增加环境变量
$ sudo cat /data/chroot/home/soauser/.bashrc
... ...
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
export TERM=xterm
export GREP_OPTIONS='--color=auto'
export PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:$HOME/bin
增加命令
jk_cp -v -f /data/chroot $(type -p id)
jk_cp -v -f /data/chroot $(type -p clear)
jk_cp -v -f /data/chroot $(type -p ps)
jk_cp -v -f /data/chroot $(type -p top)
jk_cp -v -f /data/chroot $(type -p tail)
jk_cp -v -f /data/chroot $(type -p less)
jk_cp -v -f /data/chroot $(type -p df)
jk_cp -v -f /data/chroot $(type -p find)
jk_cp -v -f /data/chroot $(type -p ss)
jk_cp -v -f /data/chroot $(type -p sort)
jk_cp -v -f /data/chroot $(type -p ip)
上面操作麻烦的话,可以用下面的命令
COMMANDS="id clear ps top tail less df tree find ss sort ip uniq"
for command in $COMMANDS;do echo $command; sudo jk_cp -v -f /data/chroot $(type -p $command); done
移除命令(根据实际情况来增减命令)
COMMANDS="chmod cpio dd false gunzip gzip ln mkdir mktemp mv rm rmdir sync tar touch true zcat cp"
for command in $COMMANDS;do echo $command; sudo rm -f /data/chroot/bin/$command; done
绑定目录,比如top & ps
命令都需要/proc
目录里的数据
sudo mkdir -p /data/chroot/{data/logs,proc}
sudo mount --bind /proc /data/chroot/proc
日志存放路径(/data/logs
)需要对研发开放
mount --bind /data/logs /data/chroot/data/logs
/etc/rc.local
cat /etc/rc.local
... ...
mount --bind /proc /data/chroot/proc
mount --bind /data/logs /data/chroot/data/logs