服务器为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环境搭建 - 定制的小型文件系统相关推荐

  1. GCC编译器简明教程(Linux下C语言开发环境的搭建)

    GCC编译器简明教程(Linux下C语言开发环境的搭建) 市面上常见的Linux都是发行版本,典型的Linux发行版包含了Linux内核.桌面环境(例如GNOME.KDE.Unity等)和各种常用的必 ...

  2. 小知识点:ARM 架构 Linux 大数据集群基础环境搭建(Hadoop、MySQL、Hive、Spark、Flink、ZK、Kafka、Nginx、Node)

      换了 M2 芯片的 Mac,以前 x86 版本的 Linux 大数据集群基础环境搭建在 ARM 架构的虚拟机集群上有些用不了了,现在重新写一份基于 ARM 架构的,少数不兼容之外其他都差不多,相当 ...

  3. linux 下51单片机开发环境搭建

    linux 下51单片机开发环境搭建(arch linux) 编译sdcc 软件: sdcc 命令:sdcc file.c 得到一堆文件需要( .inx) 命令: packihx file.inx & ...

  4. Linux 下的 ActiveMQ C++ 环境搭建与测试

    Linux 下的 ActiveMQ C++ 环境搭建与测试 一.下载安装jdk jdk官网下载地址:https://www.oracle.com/technetwork/java/javase/dow ...

  5. 【Linux Mint 深度学习开发环境搭建】开发软件安装

    系列文章目录 第一章 Linux mint 深度学习开发环境搭建之Nvidia显卡相关软件安装 第二章 Linux mint 深度学习开发环境搭建之开发软件安装 第三章 Linux mint 深度学习 ...

  6. 基于Linux服务器的JAVA开发环境搭建

    Linux服务器开发环境搭建 Linux安装Java 一.使用yum查询JDK 二.执行安装命令 三.验证java是否安装成功 四.安装开发环境 Linux安装Nginx 一.安装前环境检查 二.下载 ...

  7. linux设备驱动开发之环境搭建(基于exynos4412)

    第一章 linux设备驱动开发之环境搭建(基于exynos4412) 目录 第一章 linux设备驱动开发之环境搭建(基于exynos4412) 1.搭建开发板运行环境 1.1.交叉开发模式 安装交叉 ...

  8. 学Linux必会的Rocky8环境最小化基础搭建,超详解

    安装Rocky8 选自定义最好,然后下一步 我们先别选,直接下一步 选择linux,由于这里没有Rocky8,那就选CentOS8,然后下一步 然后点击自定义硬件 选择新CD/DVD,然后选中使用IS ...

  9. linux环境下企业基于域名访问的web于电子邮件服务器 论文,基于Linux平台的企业邮件服务器搭建...

    我失骄杨君失柳,杨柳轻飏直上重霄九.得道多助,失道寡助.身后有余忘缩手,眼前无路想回头.鸟宿池边树,僧敲月下门.想当年,金戈铁马,气吞万里如虎. 本文由418133804贡献 pdf文档可能在WAP端 ...

最新文章

  1. PostgreSQL备份之手工备份(Low Level API)
  2. Struts文件上传包含修改文件上传参数,多文件上传
  3. Android APK 签名(图)
  4. Android 系统(68)---使用Xshell在Windows系统和Linux系统之间进行文件传输
  5. c语言多xml文件操作,c语言 C#中对XML文件的操作.doc
  6. maven 下载不到jar包时候,更改阿里源
  7. mysql的索引和触发器_MYSQL数据库学习----索引和触发器
  8. JSON 在线编辑器
  9. hackerrank测试题·
  10. 《穿越计算机的迷雾》读书笔记六
  11. vax_patch.exe谁有这个文件,可以免费分享一下嘛?
  12. 《PWM整流器及其控制》读书笔记—第三章—电压型PWM整流器
  13. 经验分布函数(Empirical Distribution Functions)
  14. 数据结构实验之二叉树二:遍历二叉树(中序后序遍历)
  15. 计算机二级幻灯片母版奇数页,计算机二级office考试中PPT母版知识考察点有哪些...
  16. 企业邮箱哪个最好用?企业邮箱哪个安全?
  17. VINS-Mono翻译
  18. 什么是经验--从程序员角度的思考
  19. 如何评测光源的好坏?
  20. 计算机课程 图层关系认识 课件,PhotoShop系列视频讲座(八讲)

热门文章

  1. flutter 开发ios升级到iOS13之后运行报错
  2. 天天动听UI——主界面
  3. Echarts --- 可视化练习(pie04 --- 饼图标签的对齐方式)
  4. 钻石展位站外投放方法 站外钻展是投单品好还是落地页好
  5. 安捷伦16803A的一种简单用法小结
  6. 致230+粉丝的一封信
  7. Go语言的正则表达式简介
  8. Linux下如何卸载软件(Debian系)
  9. 绝对定位和相对定位有什么区别?
  10. “竞赛是我们招聘的主要渠道”——数据科学家与竞赛小咖畅谈