Linux 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
    =>我希望他在SSH登录后到达
    /somethine/here/
  • userBar
    =>我希望他在SSH登录后到达
    /where/here/
  • userOof
    =>我希望他在SSH登录后到达
    /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