linux制作chroot环境,/chroot环境搭建 - 定制的小型文件系统
服务器为RedHat5.5
root用户操作:
1.部署目录环境
创建一个目录,目录结构与实际的/目录结构类似
创建用户
useradd ppp
passwd ppp
将chroot目录设置在/chroot下
mkdir -p /chroot/{etc,dev,proc,lib,bin,home,usr}
mkdir -p /chroot/usr/{bin,lib,libexec}
mkdir -p /chroot/home/ppp
拷贝/etc/passwd文件
cp -a /etc/passwd/ chroot/etc/passwd然后删除里面的无关用户。
拷贝需要的命令例如
cp -a /bin/bash /chroot/bin/
查看bash命令需要哪些.so文件,拷贝到相应的目录中
[root@localhost ~]# ldd /bin/bash
linux-gate.so.1 => (0x003a6000)
libtermcap.so.2 => /lib/libtermcap.so.2 (0x004b7000)
libdl.so.2 => /lib/libdl.so.2 (0x004b1000)
libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x00110000)
/lib/ld-linux.so.2 (0x0031f000)
拷贝动态库文件
cp -a /lib/{libtermcap.so.2,libdl.so.2,ld-linux.so.2} /chroot/lib
cp -a /lib/i686/nosegneg/libc.so.6 /chroot/lib/
拷贝完成后,ls -l,会发现拷贝的都是软链接文件
1.# ll
2.total 0
3.lrwxrwxrwx. 1 root root 10 Feb 6 13:58 ld-linux.so.2 -> ld-2.12.so
4.lrwxrwxrwx. 1 root root 12 Feb 6 13:58 libc.so.6 -> libc-2.12.so
5.lrwxrwxrwx. 1 root root 13 Feb 6 13:58 libdl.so.2 -> libdl-2.12.so
6.lrwxrwxrwx. 1 root root 15 Jan 16 22:36 libtinfo.so.5 -> libtinfo.so.5.7
拷贝原始文件
cp -a /lib/{ld-2.12.so,libc-2.12.so,libdl-2.12.so,libtinfo.so.5.7} /chroot/lib
拷贝用户下的信息
cp -a /home/ppp/* /chroot/home/ppp/
简单测试一下,看看chroot命令是否可以用该目录当作/环境。
chroot /chroot
没有错误信息即可,正常应显示bash的信息。
2. ssh设置
cat/etc/ssh/sshd_config | grep UsePAM
确保
UsePAM yes
默认为yes
3. pam验证增加chroot模块
/etc/pam.d/sshd
在最下面添加一行:
session required pam_chroot.so
一定要确保输入正确,否则可能造成ssh无法登录.
pam_chroot.so执行后会读取配置文件以决定是否使用chroot环境。
/etc/security/chroot.conf
[root@localhost security]# cat chroot.conf
# /etc/security/chroot.conf
# format:
# username_regex chroot_dir
#matthew /home
增加下面一行
ppp /chroot
4.调试ssh服务
测试:
ssh ppp@192.168.13.136
登录失败,打开/var/log/secure日志查看:
Aug 19 07:08:52 localhost sshd[9993]: pam_env(sshd:setcred): Unable to open configfile: /etc/security/pam_env.conf: No such file or directory
Aug 19 07:08:52 localhost sshd[9978]: error: openpty: No such file or directory
Aug 19 07:08:52 localhost sshd[9993]: error: session_pty_req: session 0 alloc failed
cp -a /etc/security /chroot/etc/
为chroot准备dev环境,准备pts环境以及准备proc环境
mount --bind /dev /chroot/dev
mount -t devpts -o pid=5,mode=620 devpts /chroot/dev/pts
mount -t proc /proc /chroot/proc/
再次登录测试:
ssh ppp@192.168.13.136
Aug 2007:08:52 localhost sshd[21426]: pam_env(sshd:setcred): Unable to open env file:/etc/environment: No such file or directory
Aug 2007:08:52 localhost sshd[21390]: error: ssh_selinux_setup_pty: security_compute_relabel: No such file or directory
cp -a /etc/environment /chroot/etc/
重新测试:
ssh ppp@192.168.13.136
ppp@192.168.13.136's password:
-bash-3.5$
OK,可以正常登录了。
5.环境设置
最简单的就是不设置环境,使用bash版本号作为提示符。
或者也可以按正常的用户一样设置提示符,需要做的操作比较多。
cp-a/etc/{profile,profile.d,bashrc}/chroot/etc/
ssh ppp@192.168.13.136
ppp@192.168.13.136's password:
-bash: id: command not found
-bash: id: command not found
-bash: uname: command not found
-bash: /bin/grep: No such file or directory
-bash: /bin/grep: No such file or directory
-bash: /bin/grep: No such file or directory
-bash: /usr/bin/id: No such file or directory
-bash: [: =: unary operator expected
#whereis id
id: /usr/bin/id /usr/share/man/man1p/id.1p.gz /usr/share/man/man1/id.1.gz
cp -a /usr/bin/id /chroot/usr/bin/
cp -a /bin/grep /chroot/bin/
cp -a /bin/uname /chroot/bin/
# ldd /chroot/usr/bin/id
linux-vdso.so.1 => (0x00007fff4cba1000)
libselinux.so.1 => /lib/libselinux.so.1 (0x0000003690200000)
libc.so.6 => /lib/libc.so.6 (0x000000368e600000)
libdl.so.2 => /lib/libdl.so.2 (0x000000368ea00000)
/lib/ld-linux.so.2 (0x000000368e200000)
按上面的方法解决即可。
如果SSH登录不能上传下载文件的话,有可能是sftp的问题
[root@localhost ssh]# cat sshd_config | tail -1
Subsystem sftp /usr/libexec/openssh/sftp-server
可能是sftp-server没有加载
cp -a /usr/libexec/openssh/sftp-server /chroot/usr/libexec/openssh/sftp-server
然后在/chroot/home/ppp/目录下修改.bashrc文件
再最前面加一行
[ -z "$PS1" ] && return或者:[$-!=*i*]&&return
. .bashrc执行加载
ssh登录即可上传下载文件。
linux制作chroot环境,/chroot环境搭建 - 定制的小型文件系统相关推荐
- GCC编译器简明教程(Linux下C语言开发环境的搭建)
GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境(例如GNOME.KDE.Unity等)和各种常用的必 ...
- 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)
换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...
- linux 下51单片机开发环境搭建
linux 下51单片机开发环境搭建(arch linux) 编译sdcc 软件: sdcc 命令:sdcc file.c 得到一堆文件需要( .inx) 命令: packihx file.inx & ...
- Linux 下的 ActiveMQ C++ 环境搭建与测试
Linux 下的 ActiveMQ C++ 环境搭建与测试 一.下载安装jdk jdk官网下载地址:https://www.oracle.com/technetwork/java/javase/dow ...
- 【Linux Mint 深度学习开发环境搭建】开发软件安装
系列文章目录 第一章 Linux mint 深度学习开发环境搭建之Nvidia显卡相关软件安装 第二章 Linux mint 深度学习开发环境搭建之开发软件安装 第三章 Linux mint 深度学习 ...
- 基于Linux服务器的JAVA开发环境搭建
Linux服务器开发环境搭建 Linux安装Java 一.使用yum查询JDK 二.执行安装命令 三.验证java是否安装成功 四.安装开发环境 Linux安装Nginx 一.安装前环境检查 二.下载 ...
- linux设备驱动开发之环境搭建(基于exynos4412)
第一章 linux设备驱动开发之环境搭建(基于exynos4412) 目录 第一章 linux设备驱动开发之环境搭建(基于exynos4412) 1.搭建开发板运行环境 1.1.交叉开发模式 安装交叉 ...
- 学Linux必会的Rocky8环境最小化基础搭建,超详解
安装Rocky8 选自定义最好,然后下一步 我们先别选,直接下一步 选择linux,由于这里没有Rocky8,那就选CentOS8,然后下一步 然后点击自定义硬件 选择新CD/DVD,然后选中使用IS ...
- linux环境下企业基于域名访问的web于电子邮件服务器 论文,基于Linux平台的企业邮件服务器搭建...
我失骄杨君失柳,杨柳轻飏直上重霄九.得道多助,失道寡助.身后有余忘缩手,眼前无路想回头.鸟宿池边树,僧敲月下门.想当年,金戈铁马,气吞万里如虎. 本文由418133804贡献 pdf文档可能在WAP端 ...
最新文章
- PostgreSQL备份之手工备份(Low Level API)
- Struts文件上传包含修改文件上传参数,多文件上传
- Android APK 签名(图)
- Android 系统(68)---使用Xshell在Windows系统和Linux系统之间进行文件传输
- c语言多xml文件操作,c语言 C#中对XML文件的操作.doc
- maven 下载不到jar包时候,更改阿里源
- mysql的索引和触发器_MYSQL数据库学习----索引和触发器
- JSON 在线编辑器
- hackerrank测试题·
- 《穿越计算机的迷雾》读书笔记六
- vax_patch.exe谁有这个文件,可以免费分享一下嘛?
- 《PWM整流器及其控制》读书笔记—第三章—电压型PWM整流器
- 经验分布函数(Empirical Distribution Functions)
- 数据结构实验之二叉树二:遍历二叉树(中序后序遍历)
- 计算机二级幻灯片母版奇数页,计算机二级office考试中PPT母版知识考察点有哪些...
- 企业邮箱哪个最好用?企业邮箱哪个安全?
- VINS-Mono翻译
- 什么是经验--从程序员角度的思考
- 如何评测光源的好坏?
- 计算机课程 图层关系认识 课件,PhotoShop系列视频讲座(八讲)