标签: chroot

如何将 sftp-only SSH 用户 chroot 到他们的家中?

我想让客户端访问我的服务器,但我想将这些用户限制在他们的主目录中。我将在我希望他们能够看到的任何文件中进行绑定挂载。

我创建了一个名为的用户bob并将他添加到一个名为 的新组中sftponly。他们在/home/bob. 我已经将他们的 shell 更改/bin/false为停止 SSH 登录。这是他们的/etc/passwd线路:

bob:x:1001:1002::/home/bob:/bin/false
Run Code Online (Sandbox Code Playgroud)

我还更改/etc/ssh/sshd_config了以下内容:

Match Group sftponly
        ChrootDirectory /home/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no
Run Code Online (Sandbox Code Playgroud)

当我尝试以他们的身份登录时,这就是我看到的

$ sftp bob@server
bob@server's password: 
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Run Code Online (Sandbox Code Playgroud)

如果我注释掉ChrootDirectory我可以 SFTP的行,但他们可以自由控制服务器。我发现这ChrootDirectory /home可行,但它仍然让他们可以访问任何主目录。我已经明确尝试过,ChrootDirectory /home/bob但这也不起作用。

我究竟做错了什么?我怎样才能限制bob/home/bob/

- - 编辑 - - -

好的,所以我只是看了一下/var/log/auth.log,看到了这个:

May  9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened …
Run Code Online (Sandbox Code Playgroud)

ssh sftp chroot

137
推荐指数
3
解决办法
30万
查看次数

“${debian_chroot:+($debian_chroot)}”在我的终端提示中有什么作用?

在我的.bashrc文件中的终端提示定义中,除其他外,我有以下代码片段:

${debian_chroot:+($debian_chroot)}
Run Code Online (Sandbox Code Playgroud)

这有什么作用,我需要它吗?

bash debian prompt chroot bashrc

119
推荐指数
3
解决办法
4万
查看次数

48
推荐指数
3
解决办法
2万
查看次数

监禁用户的简单方法

我需要一种简单易行的方法将用户关在 Oneiric 的主目录中。您是否有用于监禁用户的简单配置、完整的帮助或一些好的网络链接?

我将提供一个具有 10 到 20 GB 可用空间的在线免费公共服务器。不知道有多少用户。我想给他们 SSH 和 SFTP,以便他们可以通过 FileZilla 进行连接。

ssh users chroot

39
推荐指数
2
解决办法
7万
查看次数

如何自动设置“键盘配置”包?

我正在编写一个脚本,使用 debootstrap(在 Ubuntu 16.04 服务器机器上)将 Ubuntu 16.04 服务器安装到 chroot jail 中。

在设置keyboard-configuration包的过程中,它会询问键盘类型:

Setting up keyboard-configuration (1.108ubuntu15) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
Configuring keyboard-configuration
----------------------------------

The layout of keyboards varies per country, with some countries having multiple
common layouts. Please select the country of origin for the keyboard of this
computer.

  1. Afghani                                     48. Irish
  2. Albanian                                    49. Italian …
Run Code Online (Sandbox Code Playgroud)

apt keyboard-layout debootstrap chroot

31
推荐指数
2
解决办法
2万
查看次数

在 chroot 尝试期间,我收到此错误:“chroot: failed to run command '/bin/bash': Exec format error”

我按照本教程HOWTO: Purge and Reinstall Grub 2 from the Live CD 的说明,当我在步骤 1 中遇到错误时,我启动了命令

sudo chroot /mnt/temp
Run Code Online (Sandbox Code Playgroud)

错误如下:

chroot: failed to run command `/bin/bash': Exec format error
Run Code Online (Sandbox Code Playgroud)

这是从哪里来的?我如何通过?

bash chroot

24
推荐指数
2
解决办法
13万
查看次数

如何使用 chroot 用户在其主目录中设置 SFTP 服务器?

我一直在尝试建立一个 SFTP 服务器,让多个用户 chroot 进入他们的主目录。我遵循了本指南Archive.org 链接)上的建议,然后在用户目录上执行了以下命令

chown root:root /home/user/
chmod 755 /home/user/
Run Code Online (Sandbox Code Playgroud)

每个用户的主目录中都有一个名为 的附加文件夹,该文件夹public归其用户所有,以便他们可以根据需要创建目录以及上传和删除文件。(这是在我之前提到的指南中建议的)

现在,当我执行时sftp -P 435 user@localhost,出现此错误:

写入失败:管道损坏
无法读取数据包:对等方重置连接

我如何从这里开始?最终的想法是让其他机器上的每个用户使用 FileZilla 登录到他们的 chroot 主目录,然后能够上传目录和文件。所有这些都在 SFTP 中(因为它更安全)

sftp chroot home-directory

24
推荐指数
3
解决办法
13万
查看次数

chroot、dchroot 和 schroot 之间有什么区别?

chroot、dchroot 和 schroot 之间有什么区别?

他们有什么共同点?

差异在哪里?

需要哪一个?

chroot

19
推荐指数
1
解决办法
1万
查看次数

如何在 chroot 中解析主机名?

我尝试使用 chroot 修复损坏的 Ubunu 14.04。我所做的是从 USB 启动 Ubuntu 安装了原始系统,该系统必须修复并使用 chroot 更改为该系统:

sudo mount /dev/sdXY /mnt 
sudo mount -o bind /dev /mnt/dev 
sudo mount -o bind /sys /mnt/sys 
sudo mount -t proc /proc /mnt/proc 
sudo cp /proc/mounts /mnt/etc/mtab 
sudo chroot /mnt /bin/bash 
Run Code Online (Sandbox Code Playgroud)

效果很好,但在chroot环境中我无法访问互联网,因此apt无法解析主机名。我应该做些什么?

ping www.askubuntu.com
Run Code Online (Sandbox Code Playgroud)

也不起作用。

chroot

18
推荐指数
1
解决办法
3万
查看次数

如何停止 chroot 中的所有进程?

我有许多 LVM 分区,每个分区都包含一个 Ubuntu 安装。有时,我想做一个apt-get dist-upgrade, 将安装更新到最新的软件包。我用 chroot 来做这件事——这个过程通常是这样的:

$ sudo mount /dev/local/chroot-0 /mnt/chroot-0
$ sudo chroot /mnt/chroot-0 sh -c 'apt-get update && apt-get dist-upgrade'
$ sudo umount /mnt/chroot-0
Run Code Online (Sandbox Code Playgroud)

[未显示:我还安装和卸载/mnt/chroot-0/{dev,sys,proc}作为绑定安装到真实的/dev/sys并且/proc,因为 dist-upgrade 似乎期望这些存在]

但是,升级到精确后,此过程不再有效 - 最终卸载将失败,因为文件/mnt/chroot-0系统上仍有打开的文件。lsof确认 chroot 中有打开文件的进程。这些进程是在dist-upgrade 期间启动的,我假设这是因为chroot 中的某些服务需要service postgresql restart在包升级后重新启动(例如,通过)。

所以,我想我需要告诉 upstart 停止在这个 chroot 中运行的所有服务。有没有办法可靠地做到这一点?

我试过了:

cat <<EOF | sudo chroot /mnt/chroot-0 /bin/sh
# stop 'initctl' services 
initctl list | awk '/start\/running/ {print …
Run Code Online (Sandbox Code Playgroud)

upstart init chroot

16
推荐指数
1
解决办法
1万
查看次数

标签 统计

chroot ×10

bash ×2

sftp ×2

ssh ×2

apt ×1

bashrc ×1

debian ×1

debootstrap ×1

gksu ×1

home-directory ×1

init ×1

keyboard-layout ×1

prompt ×1

su ×1

sudo ×1

upstart ×1

users ×1

visudo ×1