Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1764640
  • 博文数量: 150
  • 博客积分: 660
  • 博客等级: 上士
  • 技术积分: 2480
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-08 11:39
文章分类

全部博文(150)

文章存档

2019年(4)

2018年(36)

2017年(53)

2016年(7)

2015年(3)

2014年(3)

2013年(27)

2012年(2)

2011年(1)

2006年(1)

2005年(13)

分类: 系统运维

2013-08-28 10:20:14

前言: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
 
阅读(4721) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~