我需要创建一个只能访问其自己的主目录中所有内容的用户。例如,如果他们的用户名是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 ),以防这不是为了测试目的。