相关疑难解决方法(0)

添加只能远程执行脚本的用户

我想创建一个只能做一件事的用户:通过 ssh 指定驻留在一个特定文件夹中的脚本(和脚本的命令行参数)(为了这个问题,让我们称之为/local/remote_only_scripts/foo)并让该脚本执行并返回它的输出。

澄清一些我不希望用户能够做的事情的例子:

  • 本地登录账号。登录应用程序是/bin/login. 它不是/local/remote_only_scripts/foo文件夹中的脚本,因此不应由用户调用。
  • 远程登录帐户。再次登录(是 ssh 调用的内容吗?)不是相关文件夹中的脚本。
  • 列出目录的内容。ls 在/bin/ls. 它不是相应目录中的脚本。
  • 编辑该目录中的文件。emacs、vi、gedit 大多数其他编辑器都不是该目录中的脚本。
  • 查看该目录中文件的内容。
  • 执行那个目录下他无权执行的文件。

请注意,这些示例还有许多其他我不希望用户能够执行的操作。在考虑一个动作时,问“这是由 中的脚本完成的/local/remote_only_scripts/foo吗?” 如果答案是否定的,用户就不能这样做。如果答案是肯定的,那么用户应该能够做到。

PS:让我澄清一下“添加用户”的意思。我的意思不是将用户添加到某个 ssh 子系统。相反,我的意思是将用户添加到计算机系统中。所以,例如,我有一个运行 debian stable 的系统,通过它的地址来调用它,www.hg.bar.com。我想添加一个用户(通过 kuser、users-admin 或 useradd 或类似的方式)称他为 hg_guest。hg_guest 无法在本地登录或执行上述列表中的任何操作。hg_guest 所能做的就是“远程”执行脚本。我说他应该可以通过ssh这样做,但现在想想,也许让他使用ssh可能会让他在本地登录,所以可能需要一些其他机制。

ssh account-restrictions

14
推荐指数
1
解决办法
4687
查看次数

在一行中的服务器之间复制受保护的文件?

我想squid.conf从一台服务器复制到另一台服务器。

  • 服务器不互相交谈。我想通过我的工作站。
  • 两台服务器都有该文件,因此它将在目标上被覆盖。
  • 这些文件有600权限并且归 root 所有。
  • 通过 ssh 的 root 登录被禁用 ( PermitRootLogin no)。
  • 如果可能的话,我想在一行中完成,因为它将成为设置指南的一部分。

我知道要做

ssh source 'tar czpf - -C /etc/squid/ squid.conf' | \
    ssh target 'tar xzpf - -C /etc/squid/'
Run Code Online (Sandbox Code Playgroud)

在服务器之间复制文件并保留权限。但是,在这种情况下,我将收到“权限被拒绝”。

我也知道我可以这样做:

ssh -t source 'sudo cat /etc/squid/squid.conf'
Run Code Online (Sandbox Code Playgroud)

这种方式-t允许 sudo 在输出文件内容之前询问管理员密码。

问题是,我不知道如何将这些技术组合成在每台服务器上要求 sudo 密码的东西,并将文件传输到其目的地。这可能吗?

更新:这是我能想到的最好的:

ssh -t source 'sudo tar czf /tmp/squid.tgz -C /etc/squid squid.conf' && \
ssh source 'cat /tmp/squid.tgz' | \
    ssh target 'cat >/tmp/squid.tgz' && \ …
Run Code Online (Sandbox Code Playgroud)

ssh sudo file-transfer

13
推荐指数
1
解决办法
7676
查看次数

标签 统计

ssh ×2

account-restrictions ×1

file-transfer ×1

sudo ×1