前言:chroot是个比较古老的安全配置方法,05年我最早在solaris上使用过。特别是不使用虚拟化的时候,相比虚拟化的优点是,更加节省空间;性能和物理机无区别。去年的时候为了节约磁盘和最大化的 性能使用chroot配置,下面节抄第一版文档如下。
原文档标题:centos下chroot实现nodejs配置
1、下载和安装
1.1 安装 rmpforge的 扩展yum包
rpm -Uvh
1.2 安装jailkit
yum install jailkit -y
2、nodejs的chroot配置
2.1 建议chroot 的系统用户的主目录及设定权限及用户
mkdir /opt/node_dev
chown root:root /opt/node_dev
chmod 0755 /opt/node_dev
mkdir -p /opt/node_dev/home
useradd node_dev -g node -d /opt/node_dev/home/node_dev -s /bin/bash
2.2 建立需要chroot的所需要资源
a、设定登录shell,可以登录,如果不需要登录则将bash修改为jk_lsh
jk_init -j /opt/node_dev jk_lsh
jk_init -j /opt/node_dev bash
b、增加nodejs的应用,其中node需要在/etc/jailkit/jk_init.ini中定义
echo "[nodejs]" >> /etc/jailkit/jk_init.ini
\ echo "comment= the nodejs program" >> /etc/jailkit/jk_init.ini
echo "paths = /usr/local/node" >> /etc/jailkit/jk_init.ini
c、执行jk_init命令
jk_init -j /opt/node_dev nodejs
#jk_init -j /opt/node_dev forever
#jk_init -j /opt/node_dev bash
# dns用到
jk_init -j /opt/node_test netbasics
# scp上传用到
jk_init -j /opt/node_test scp
# scp用到/dev/null
jk_init -j /opt/node_test cvs
2.3 增加编辑器环境
jk_init -j /opt/node_dev editors
2.4 建立可以chroot的用户
a、建立命令
jk_addjailuser /opt/node_dev node_dev
b、建立用户不成功的解决办法,原因是chroot的主目录下没有home目录,其脚本调用useradd的时候不主动建立,导致建立home
的下级目录失败
mkdir /opt/node_dev/home
2.5 启动jailkit(chroot)服务
service jailkit start
3、修正
3.1 关于vi
editors 增加 /bin/vi
[extendedshell 增加/usr/bin/id
增加 env
/usr/bin/id,/bin/env
paths = 最后增加
4、上述命令执行脚本
#for node_dev的脚本
rpm -Uvh
yum install jailkit -y
mkdir /opt/node_dev
chown root:root /opt/node_dev
chmod 0755 /opt/node_dev
mkdir -p /opt/node_dev/home
useradd node_dev -g node -d /opt/node_dev/home/node_dev -s /bin/bash
jk_init -j /opt/node_dev jk_lsh
jk_init -j /opt/node_dev bash
echo "[nodejs]" >> /etc/jailkit/jk_init.ini
echo "comment= the nodejs program" >> /etc/jailkit/jk_init.ini
echo "paths = /usr/local/node" >> /etc/jailkit/jk_init.ini
jk_init -j /opt/node_dev nodejs
jk_jailuser -j /opt/node_dev -s /bin/bash node_dev
service jailkit start
For node_test的脚本
rpm -Uvh
yum install jailkit -y
mkdir /opt/node_test
chown root:root /opt/node_test
chmod 0755 /opt/node_test
mkdir -p /opt/node_test/home
useradd node_test -g node -d /opt/node_test/home/node_test
jk_init -j /opt/node_test jk_lsh
#jk_init -j /opt/node_test basicshell
#jk_init -j /opt/node_test editors
jk_init -j /opt/node_test extendedshell
echo "[nodejs]" >> /etc/jailkit/jk_init.ini
echo "comment= the nodejs program" >> /etc/jailkit/jk_init.ini
echo "paths = /usr/local/node" >> /etc/jailkit/jk_init.ini
jk_init -j /opt/node_test nodejs
jk_jailuser -j /opt/node_test -s /bin/bash node_test
echo "PATH=$PATH:/usr/local/node/bin:$HOME/bin" >>/opt/node_test/home/node_test/.bash_profile
echo "NODE_PATH=/usr/local/node:/usr/local/node/lib/node_modules" >>/opt/node_test/home/node_test/.bash_profile
echo "export PATH" >>/opt/node_test/home/node_test/.bash_profile
service jailkit start
5、问题
5.1 jk_jailuser命令增加的用户不能自动运行.bash_profile里面环境变量设置,只能手动运行才生效
6、chroot udp接收程序
6.1 增加 jdk 在jk_init.ini里面
vi /etc/jailkit/jk_init.ini
6.2 udp 开发
用户名: udp_dev
chroot:/opt/udp_dev
cd /opt
mkdir udp_dev
mkdir -p /opt/udp_dev/home
chown root:root /opt/udp_dev
chmod 0755 udp_dev
useradd udp_dev
jk_init -j /opt/udp_dev extendedshell
jk_init -j /opt/udp_dev cvs
mkdir -p /opt/udp_dev/proc
mount -o bind /proc /opt/udp_dev/proc
passwd udp_dev
ssh udp_dev@localhost
6.3 udp 测试
用户名: udp_test
chroot:/opt/udp_test
cd /opt
mkdir udp_test
chmod 0755 udp_test
mkdir -p /opt/udp_test/home
useradd udp_test
jk_init -j /opt/udp_test extendedshell
jk_jailuser -j /opt/udp_test -s /bin/bash udp_test
jk_init -j /opt/udp_test cvs
mkdir -p /opt/udp_test/proc
mount -o bind /proc /opt/udp_test/proc
passwd udp_test
ssh udp_test@localhost
1100 22/05/12 11:22:32 ssh tj_dev@localhost
错误解决方法
java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
[tj_dev@b101 ~]$
mkdir -p /opt/tj_dev/proc
mount -o bind /proc /opt/tj_dev/proc
阅读(4708) | 评论(0) | 转发(0) |