如何限制用户只能访问其主目录?

如何限制用户只能访问其主目录?

我需要创建一个只能访问其自己的主目录中所有内容的用户。例如,如果他们的用户名是stash,那么他们只能在 内进行访问/home/stash

在 Linux 上运行(Raspbian)

我正在考虑专门为这个用户创建一个组,该组剥夺了其主目录之外的每个文件和目录的权限,但我不太熟悉在 Linux 中使用权限。

答案1

如果您将使用 SSH 登录,则可以选择 chroot;让我们支持我们有一个名为测试用户它将作为主目录/var/chroot/home/testusr:

请注意,以上命令必须以 root 身份执行:

# Create the needed dirs
mkdir -p /var/chroot/{lib,lib64,etc,home,usr}
# Create the user account 
useradd -d /var/chroot/home/testusr testusr
echo "testusr:testusr" | chpasswd 
cd /var/chroot
# Create some basic dev nodes that will be needed by the terminal
mknod -m 666 null c 1 3
mknod -m 666 tty c 5 0
mknod -m 666 zero c 1 5
mknod -m 666 random c 1 8
#Make available the needed libraries
mount -o bind /lib /var/chroot/lib
mount -o bind /lib64 /var/chroot/lib64
mount -o bind /usr /var/chroot/usr
# Set the correct permissions
chown root:root /var/chroot
chmod 755 /var/chroot
# Set the jail on sshd daemon
cat <<EOF >> /etc/ssh/sshd_config
Match user testusr
    ChrootDirectory /var/chroot
EOF
# Restart sshd daemon
systemctl restart sshd
# Set the default shell for the user &  copy the content of /etc/group and /etc/passwd to the jail
usermod -s /usr/bin/bash testusr
cp /etc/{passwd,group} /var/chroot

另请注意,绑定安装应该是永久的(将它们添加到 /etc/fstab ),以防这不是为了测试目的。

相关内容