1. 简介
chroot是在unix系统的一个操作,针对正在运作的软件进程和它的子进程,改变它外显的根目录。一个运行在这个环境下,经由chroot设置根目录的程序,它不能够对这个指定根目录之外的文件进行访问动作,不能读取,也不能更改它的内容。chroot这一特殊表达可能指chroot(2)系统调用或chroot(8)前端程序。默认情况下我们指的是chroot(8)前端程序。
由chroot创造出的那个根目录,叫做“chroot监狱”(chroot jail,或chroot prison)。
2. 功能
Linux官方MAN手册对chroot命令的定义是:
run command or interactive shell with special root directory
,即运行命令或者具有指定根目录的交互式shell。基本在所有支持该命令的linux系统中,都需要以超级管理员的权限才可以执行该命令。
3. 常见应用领域
- 系统修复
- 系统启动时切换根目录,引导系统启动
- 特权分离
4. 发展
chroot从1979年诞生至今,已经发展成为支持docker这样的容器的底层技术之一了。
docker约等于chroot+namespace+other。
5. 问题
在openssh的sftp中可能会经常碰到的问题就是用户认证都通过了,但是最终还是会登录失败。在ubuntu系统的auth.log日志中我们能看到类似
bad ownership or modes for chroot directory xxx
这样的内容,这个就是因为我们把chroot的目录所属的用户设置错了。
在/etc/ssh/sshd_config
目录中ChrootDirectory
后面所接的路径的根目录属主必须是root用户。
当时就是因为这个目录属主设置错误耽误了我两天时间,一直摸不着头脑,从google的很多答案来说都有点儿不匹配,但是看到很多提到了chroot,然后就去看了下chroot的知识,然后做了上述修改后就成功了。
网友评论