我想通过不允许 root 用户登录来保护我的 Linux 服务器。为此,我创建了另一个用户:
useradd username
mkdir /home/username/
mkdir /home/username/.ssh
chmod 700 /home/username/..shh
chown username:username /home/username -R
passwd username
当我使用新用户登录时,根目录是/home/username
.这是此时的正常行为。但一般来说,我需要访问不同的目录:/root/exampledirectory/
.此访问被拒绝。
如何配置用户username
可以访问的ssh/root/exampledirectory
并在使用 ssh 登录时将此目录设置为起始点?
chown username:username /root/exampledirectory -R
不管用。起始目录始终是home/username
,我无法访问其他目录。
我该如何处理这个问题?
答案1
我想有更好的方法来完成你正在做的事情。在允许访问我的根目录时我会很小心,但这是一种方法:
为了能够访问用户根目录下的该目录,您需要对目录一直到示例目录的权限。我做了一个例子来检查一下。我认为一个好方法是创建一个新组,也许可以将其称为 root-traverse:sudo groupadd root-traverse
之后将您的用户添加到该组:sudo usermod -aG root-traverse your-username
。这将使您的用户能够访问有权root-traverse
访问的任何内容。不要忘记注销并重新登录以使该组生效,或者执行此操作su your-username
然后检查id
您现在是否在该组中root-traverse
。
此后,您将需要将该组添加root-traverse
到您的根目录权限,我更喜欢将其作为 ACL 来执行(如果您必须)。这是一种访问更细粒度权限的方法。sudo setfacl -m g:root-traverse:rx /root
。这将赋予该组足够的权限来进入根目录并列出其中的文件/文件夹。就安全性而言,我仍然不喜欢这样,但事实就是如此。
快完成了,现在对于您想要访问的目录: /root/exampledirectory 您需要sudo chown -R root-traverse: /root/exampledirectory
和sudo chmod -R 770 /root/exampledirectory
现在您可以将目录更改为该目录,还可以在其中添加和编辑文件!要在那里启动 ssh 会话,您可以将脚本保存到 /home/your-username/bin 或您喜欢保存的任何位置。vim ssh-script.sh
#!/bin/bash
# Start ssh session in preferred directory
ssh -t xxx.xxx.xxx.xxx "cd /root/exampledirectory ; bash --login"
我相信这应该能解决问题。不要忘记chmod +x ssh-script.sh
创建您创建的脚本以使其可执行。然后运行您的东西,./ssh-script.sh
或者您可以将其放在路径中包含的某个位置并像普通命令一样运行它ssh-script
。祝你好运!
编辑:经过一番思考,您可以使用绑定挂载将该 exampledirectory 挂载到您的主目录中,然后只需从那里设置 ACL 权限即可。此时您不会授予对根目录的任何访问权限。