我可以创建一个只能访问某个目录的SSH用户吗?


45

我有一个虚拟专用服务器,我可以使用SSH连接到我的root帐户,能够执行任何linux命令并显然访问所有磁盘区域。

我想创建另一个用户帐户,该帐户也可以使用SSH访问此服务器,但仅限于某个目录,例如 /var/www/example.com/

例如,假设此用户有一个位于的巨大error.log文件(500 MB) /var/www/example.com/logs/error.log 使用FTP访问此文件时,此用户需要下载500 MB才能查看日志的最后几行,但我希望他能够执行以下操作:

tail error.log

因此我需要他能够使用SSH访问服务器,但我不想授予他访问所有服务器区域的权限。

我怎样才能做到这一点?

Answers:


29

chroot 用户。


更新:

Vincent Danen的TechRepublic文章 说:

随着OpenSSH 4.9p1的发布,您不再需要依赖第三方黑客或复杂的chroot设置来将用户限制在其主目录中或让他们访问SFTP服务。

编辑/ etc / ssh / sshd_config(某些发行版上的/ etc / sshd_config)   并设置以下选项:

Subsystem     sftp   internal-sftp
Match Group sftp
    ChrootDirectory %h
    ForceCommand internal-sftp
    AllowTcpForwarding no

确保“匹配”指令位于文件末尾。这告诉OpenSSH sftp组中的所有用户都要被chroot到他们的主目录(%h代表ChrootDirectory命令)

对于您希望chroot的任何用户,使用以下命令将它们添加到sftp组:

# 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系统:

# 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 in并将限制为chroot。不幸的是,这没什么用,但它让你知道如何设置它。根据您要提供的内容,您需要安装其他库和二进制文件。


Ubuntu社区网站

创建一个chroot

  1. 安装dchroot和debootstrap包。

  2. 作为管理员(即使用sudo),为其创建一个新目录   chroot环境。在这个程序中,   目录 /var/chroot 将会被使用。至   这样做,输入 sudo mkdir /var/chroot 进入命令行。

  3. 作为一个   管理员,打开 /etc/schroot/schroot.conf 在文本中   编辑。类型 cd /etc/schroot接下来   通过 gksu gedit schroot.conf。这将   允许您编辑文件。

  4. 添加   以下几行 schroot.conf 和   然后保存并关闭文件。更换 your_username 用你的用户名。

    [清醒]   description = Ubuntu Lucid   位置=的/ var / chroot环境   优先级= 3   用户= your_username   基团= sbuild   根的基团=根

打开终端并输入:

sudo debootstrap --variant=buildd --arch i386 lucid /var/chroot/ \ 
http://mirror.url.com/ubuntu/

这将创建一个基本的   '安装'的Ubuntu 10.04(Lucid   Lynx)在chroot。可能需要一个   而对于包裹   下载。注意:您可以替换   清楚你的Ubuntu版本   选择。注意:您必须更改   以上 mirror.url.com 使用的URL   本地有效的归档镜像。一个   现在应该是基本的chroot   创建。类型 sudo chroot /var/chroot 更改为内部的根shell   chroot环境。

设置chroot

那里   是您可以采取的一些基本步骤   设置chroot,提供   DNS解析和   进入 /proc

注意:在shell中键入这些命令   这是在chroot外面。

键入以下内容以安装 /proc chroot中的文件系统(需要   管理流程):

sudo mount -o bind /proc /var/chroot/proc  

输入   以下是允许DNS解析   在chroot内(需要   互联网):

sudo cp /etc/resolv.conf /var/chroot/etc/resolv.conf 

很少   软件包默认安装在一个   chroot(甚至没有安装sudo)。   使用 apt-get install package_name 至   安装包。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.