Ric*_*uez 45 linux ssh debian root ubuntu
我有一个虚拟专用服务器,我可以使用我的 root 帐户使用 SSH 连接到它,显然能够执行任何 linux 命令并访问所有磁盘区域。
我想创建另一个用户帐户,它也可以使用 SSH 访问此服务器,但只能访问某个目录,例如 /var/www/example.com/
例如,假设此用户有一个巨大的 error.log 文件 (500 MB) 位于/var/www/example.com/logs/error.log
使用 FTP 访问此文件时,此用户需要下载 500 MB 才能查看日志的最后几行,但我希望他能够能够执行这样的事情:
tail error.log
因此,我需要他能够使用 SSH 访问服务器,但我不想授予他访问所有服务器区域的权限。
我怎样才能做到这一点?
Red*_*ick 29
chroot
用户。
更新:
Vincent Danen的TechRepublic 文章说:
随着 OpenSSH 4.9p1 的发布,您不再需要依赖第三方黑客或复杂的 chroot 设置来将用户限制在他们的主目录或允许他们访问 SFTP 服务。
编辑 /etc/ssh/sshd_config(在某些发行版上为 /etc/sshd_config)并设置以下选项:
Run Code Online (Sandbox Code Playgroud)Subsystem sftp internal-sftp Match Group sftp ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no
确保“Match”指令位于文件末尾。这告诉 OpenSSH sftp 组中的所有用户都将被 chroot 到他们的主目录(%h 在 ChrootDirectory 命令中表示)
对于您希望 chroot 的任何用户,请使用以下命令将其添加到 sftp 组:
Run Code Online (Sandbox Code Playgroud)# usermod -G sftp joe # usermod -s /bin/false joe # chown root:root /home/joe # chmod 0755 /home/joe
上面的 usermod 命令会将用户 joe 添加到 sftp 组并将其 shell 设置为 /bin/false,因此他们绝对无法获得 shell 访问权限。chown 和 chmod 命令将为目录设置所需的权限。设置这些权限后,用户将被允许上传和下载文件,但不能在根目录中创建目录或文件
Chrooting shell 帐户稍微复杂一些,因为它要求某些设备文件和 shell 在用户的主目录中可用。以下命令将在 Mandriva Linux 上设置一个非常基本的 chroot 系统:
Run Code Online (Sandbox Code Playgroud)# mkdir /chroot # cd /chroot # mkdir {bin,dev,lib} # cp -p /bin/bash bin/ # cp -p /lib/{ld-linux.so.2,libc.so.6,libdl.so.2,libtermcap.so.2} lib/ # mknod dev/null c 1 3 # mknod dev/zero c 1 5 # chmod 0666 dev/{null,zero} # mkdir -p /chroot/home/joe
有了上面的内容,用户 joe 可以 ssh 进入并且将被限制在 chroot 中。不幸的是,这并没有多大作用,但它可以让您了解如何设置它。根据您要提供的内容,您将需要安装其他库和二进制文件。
在Ubuntu社区网站说:
创建一个chroot
安装 dchroot 和 debootstrap 包。
作为管理员(即使用 sudo),为 chroot 创建一个新目录。在此过程中,
/var/chroot
将使用该目录。为此,请sudo mkdir /var/chroot
在命令行中键入。以管理员身份
/etc/schroot/schroot.conf
在文本编辑器中打开 。键入cd /etc/schroot
,然后是gksu gedit schroot.conf
。这将允许您编辑文件。将以下行添加到
schroot.conf
,然后保存并关闭文件。替换your_username
为您的用户名。[lucid] description=Ubuntu Lucid location=/var/chroot priority=3 users=your_username groups=sbuild root-groups=root
打开终端并输入:
Run Code Online (Sandbox Code Playgroud)sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ http://mirror.url.com/ubuntu/
这将在 chroot 中创建 Ubuntu 10.04 (Lucid Lynx) 的基本“安装”。下载软件包可能需要一段时间。注意:您可以将 lucid 替换为您选择的 Ubuntu 版本。注意:您必须
mirror.url.com
使用本地有效存档镜像的 URL更改上述内容。现在应该已经创建了一个基本的 chroot。键入sudo chroot /var/chroot
以更改为 chroot 内的 root shell。设置chroot
您可以采取一些基本步骤来设置 chroot,提供诸如 DNS 解析和访问
/proc
.注意:在 chroot 之外的 shell 中键入这些命令。
键入以下内容以
/proc
在 chroot 中挂载文件系统(管理进程所需):Run Code Online (Sandbox Code Playgroud)sudo mount -o bind /proc /var/chroot/proc
键入以下内容以允许从 chroot 中进行 DNS 解析(访问 Internet 需要):
Run Code Online (Sandbox Code Playgroud)sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf
默认情况下,chroot 中安装的软件包很少(甚至没有安装 sudo)。使用
apt-get install package_name
安装软件包。