【问题标题】:SSH : how to assign specifics directories to each user? [closed]SSH:如何为每个用户分配特定目录? [关闭]
【发布时间】:2013-10-31 08:19:55
【问题描述】:

不,它不是 that 的副本,因为我想在一个(或多个)用户通过 SSH 登录时将一个目录分配给他们。

例如根据用户的登录:

  • userFoo => 我希望他在 SSH 登录后到达 /somewhere/here/
  • userBar => 我希望他在 SSH 登录后到达 /somewhere/here/
  • userOof => 我希望他在 SSH 登录后到达 /anywhere/
  • 等等。

我该怎么做? (他们与 PuTTY 有联系,我不能强迫他们与其他 data 联系,例如 ssh -t user@server 'cd /home/some/dir ; exec "$SHELL"'

【问题讨论】:

  • 有什么理由不把它作为用户的主目录?这就是登录 shell 通常产生的地方。
  • 请记住,chroot 并不像您想象的那么容易。想象一下用户去/somewhere/here/var/log/而不是/var/log/等。
  • 这个问题在 StackOverflow 上做了什么(并获得了投票)?这只是题外话。
  • @JeremyRoman :嗯,这就是我想要的 ;) 但我没有考虑“主目录”

标签: linux shell ssh


【解决方案1】:

更改用户的主目录,因为那是他们连接后登陆的地方。

/etc/passwd 中倒数第二个条目保存此信息,例如可以从

userFoo:x:1000:1000:,,,:/home/userFoo:/bin/bash

userFoo:x:1000:1000:,,,:/somewhere/here:/bin/bash

【讨论】:

  • 用户仍然可以cd /home/userFoo 回到他的主目录。我不明白 OP 的意思:-S
  • OP 没有声明他需要一个 chrooted 环境。有时只是为了方便。 “连接到 theserver.com 并编辑 index.html”或“连接并键入 touch tmp/restart.txt”很简单,无需指示某人更改为 /my/fancy/path/ where/you/propably/type/a/wrong/letter 某人可能会“迷路”并且不知道如何恢复的地方。
  • @DanFromGermany 没有迹象表明 OP 希望将用户限制在所需的目录中,只是为了在登录时将其设为默认目录。如有必要,可以简单地删除物理目录/home/userFoo,因为/somewhere/here 现在是用户真正的主目录。还可以调整userFoo的权限,防止他访问其他目录。
  • 我们必须同意 OP 不清楚目的。 1) 无需授予无法在 unix 上的目录之间移动的 SSH 的访问权限。 2)如果原始主页被删除,并且主页移动到/somewhere/here..那有什么好处?
  • 正如@kwood 所说:Sometimes it's just for convenience. => 这是我的目的。对于没有经验的用户来说,这也是一种时间收益。 @kwood:按预期完美运行,谢谢。
【解决方案2】:

当您通过 SSH 登录远程机器时,它会启动一个 shell,在大多数情况下是 bash。它有一个脚本,每次启动时都会执行,可以在 ~/.bashrc 找到。您可以编辑它们,在它们后面附加 cd /somewhere

无论如何,这可能不是一个好主意,最好将适当的文件夹链接到用户:

ln -s /somewhere/here ~/userFoo/comehere
ln -s /somewhere/here ~/user/comehere
ln -s /anywhere ~/userOof/comehere

所以,你可以告诉用户“请在登录后执行 cd comehere”,它会将他们放到指定的文件夹中。

【讨论】:

    猜你喜欢
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 2020-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多