Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Dockerize用户会话_Linux_Docker_Ssh - Fatal编程技术网

Linux Dockerize用户会话

Linux Dockerize用户会话,linux,docker,ssh,Linux,Docker,Ssh,我正在寻找一些关于如何在Linux中dockerize用户会话的帮助。我要寻找的是,当某人ssh进入帐户并做任何事情时,当他们退出时,他们所做的任何事情都没有保存时,我将如何做到这一点;这是我在下次其他人进入时设置它的方式 这是一个CTF活动,我一直负责设置,但实际上不知道我要做什么,整个过程对我来说是一个学习经验 我希望如何设置它的一个很好的解释如下: 当他们退出时,他们所做的任何事情都不会被保存 这是因为当容器停止时,容器的可写层被丢弃 您应该确保您的容器是使用or(更好)运行的:这样,在s

我正在寻找一些关于如何在Linux中dockerize用户会话的帮助。我要寻找的是,当某人ssh进入帐户并做任何事情时,当他们退出时,他们所做的任何事情都没有保存时,我将如何做到这一点;这是我在下次其他人进入时设置它的方式

这是一个CTF活动,我一直负责设置,但实际上不知道我要做什么,整个过程对我来说是一个学习经验

我希望如何设置它的一个很好的解释如下:

当他们退出时,他们所做的任何事情都不会被保存

这是因为当容器停止时,容器的可写层被丢弃

您应该确保您的容器是使用or(更好)运行的:这样,在ssh期间所做的修改(如果在正确的(装载的)路径中进行的话)将保持不变


因此,您可以通过为用户创建一个新的基于docker的shell来实现这一点

创建用户

首先,我们使用下面的命令创建用户

sudo useradd --create-home --shell /usr/local/bin/dockershell tarun 
echo "tarun:tarunpass" | sudo chpasswd
sudo usermod -aG docker tarun
创建外壳

接下来创建一个shell文件
/usr/local/bin/dockershell

#!/bin/bash

docker run -it --rm ubuntu:latest /bin/bash
然后
chmod+x/usr/local/bin/dockershell
。现在,您可以使用新用户ssh连接到vm

$ ssh tarun@vm
tarun@vm's password:
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-66-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

0 packages can be updated.
0 updates are security updates.


Last login: Sun Oct  1 06:50:06 2017 from 192.168.33.1
Starting shell for tarun
root@79c12f002708:/#
这会将我带到docker容器,并且不会保存任何会话更改。如果您想进一步保护它,应该重新映射用户名称空间


所以你将同一个用户与不同的人共享,或者每个人都是不同的用户?每个用户在连接ssh会话时都会有自己的容器Stack Overflow是一个用于编程和开发问题的站点。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。我想你误解了这个问题,他正在研究如何设置SSH到服务器,其中用户会话在docker容器中运行,并且没有保存会话的更改“没有保存会话的更改”哪个会话?SSH还是docker容器?前者应该保存,因为它位于主机上。后者需要卷,期望到主机的SSH会话将您带入docker容器中,而不是主机。并且不应保存docker容器更改。如果不映射卷,无论如何也不会是这样。因此,问题更多的是如何设置服务器,以便用户的SSH可以直接发送到docker容器shell而不是主机shell@TarunLalwanissh到容器?为什么不是一个更简单的docker exec?基本上,每个“级别”或用户主文件夹在他们登录到CTF级别时都是预先设置的。因此,他们必须解压文件或执行其他任务。当他们退出该级别时,我希望它回到预设状态。所以,我想他们的docker会议并没有拯救我相信这就是我想说的谢谢你们,我今天将尝试测试这个,并报告它是如何工作的!它现在已经开始工作了!你的建议很管用。现在唯一的问题是在创建用户时没有添加主目录,我需要将文件添加到主目录。@Keith,您可以使用自定义映像来执行此操作,并为其传递一个应该存在的文件夹名环境。我将看看是否能解决此问题。谢谢你的帮助,我一直在尝试在我一直使用的Ubuntu pull上尽我所能。您提出的解决方案非常有效,我要做的就是尝试为用户/级别设置主文件夹。