Linux SSH:如何为每个用户分配特定的目录?
不,它不是的副本,因为我想在用户通过SSH登录时将一个目录分配给一个(或多个)用户 例如,根据用户的日志:Linux SSH:如何为每个用户分配特定的目录?,linux,shell,ssh,Linux,Shell,Ssh,不,它不是的副本,因为我想在用户通过SSH登录时将一个目录分配给一个(或多个)用户 例如,根据用户的日志: userFoo=>我希望他在SSH登录后到达/somethine/here/ userBar=>我希望他在SSH登录后到达/where/here/ userOof=>我希望他在SSH登录后到达/anywhere/ 等等 我该怎么做? (它们是与PuTTY的连接,我不能强迫它们与附加的连接,比如ssh-tuser@server“cd/home/some/dir;exec“$SHELL”更
=>我希望他在SSH登录后到达userFoo
/somethine/here/
=>我希望他在SSH登录后到达userBar
/where/here/
=>我希望他在SSH登录后到达userOof
/anywhere/
- 等等
(它们是与PuTTY的连接,我不能强迫它们与附加的连接,比如
ssh-tuser@server“cd/home/some/dir;exec“$SHELL”
更改用户的主目录,因为这是用户连接后登录的地方
/etc/passwd中倒数第二个条目保存此信息,可以从中进行编辑
userFoo:x:1000:1000:,,,:/home/userFoo:/bin/bash
到
当您通过SSH登录远程计算机时,它会启动一个shell,在大多数情况下是bash。它有一个脚本,每次启动时都会执行,可以在~/.bashrc上找到。您可以编辑它们,在它们的某个位置附加一张cd/ 无论如何,这可能不是一个好主意,最好将适当的文件夹链接到用户:
ln -s /somewhere/here ~/userFoo/comehere
ln -s /somewhere/here ~/user/comehere
ln -s /anywhere ~/userOof/comehere
因此,您可以告诉用户“请在登录后在此播放cd”,它将把它们放在指定的文件夹中。有什么理由不把它们放在用户的主目录中吗?这就是登录shell通常产生的地方。请记住,chrooting并不像您想象的那么容易。想象一下,用户将去
/某处/here/var/log/
而不是/var/log/
等等。这个问题是怎么回事StackOverflow(和获得升级票)?这只是个离题。@JeremyRoman:好吧,这就是我想要的;)但我没有想到“主目录”用户仍然能够cd/home/userFoo
回到他的主目录。我不明白OP的意思:-OP没有说他需要一个舒适的环境。有时候只是为了方便。“连接到server.com并编辑index.html”或“连接并键入touch tmp/restart.txt”是直截了当的,无需指示某人更改为/my/fancy/path/where/you/propably/type/a/error/letter,这样某人可能会“迷路”而且不知道如何恢复。@没有迹象表明OP希望将用户限制在所需的目录中,只是将其作为登录时的默认目录。如果需要,可以简单地删除物理目录/home/userFoo
,因为/where/here
现在是用户真正的主目录。userFoo
的权限也可以调整,以防止他访问其他目录。我们必须同意OP不清楚其目的。1) 没有必要授予无法在unix上的目录之间移动的SSH访问权限。2) 如果原始主页被删除,并且主页移动到/某处/此处。。这有什么好处?正如@kwood所说:有时只是为了方便。
=>这是我的目的。对于未经实验的用户来说,这也是一种时间增益@kwood:正如预期的那样完美,谢谢。
ln -s /somewhere/here ~/userFoo/comehere
ln -s /somewhere/here ~/user/comehere
ln -s /anywhere ~/userOof/comehere