【问题标题】:In Emacs, how do I use Tramp SSH to edit as a different group ID?在 Emacs 中,如何使用 Tramp SSH 作为不同的组 ID 进行编辑?
【发布时间】:2016-01-06 22:13:47
【问题描述】:

我认为我正在寻找的可能是类似于使用 SSH 和 su 的多跳的解决方案;但我必须使用sg 而不是su。用例是我在服务器上有一个用户,出于管理原因,该用户属于多个组(主组 ID group_A,第二组 ID group_B)。使用 SELinux 访问控制,因此即使我拥有一个目录,但如果我的主组 ID 不正确,我将无法创建文件。在交互式会话中,我会使用chgrp group_B 切换我的主组,然后将创建一个新的 shell 会话。如果远程启动一个程序,我会做ssh foo.com 'sg group_B /path/to/executable'。如何在 Emacs/Tramp 中实现这些效果?

【问题讨论】:

    标签: emacs ssh su tramp


    【解决方案1】:

    发现sshsu等是在tramp-methods中定义的,可以自定义如下添加另一种连接方式sg

    (eval-after-load 'tramp
      '(add-to-list
        'tramp-methods
        '("sg"
          (tramp-login-program "sg")
          (tramp-login-args (("-") ("%u")))
          (tramp-remote-shell "/bin/sh")
          (tramp-remote-shell-args ("-c")))))
    

    这样就可以了

    C-x C-f /ssh:myuser@remotehost|sg:group_B@remotehost:/path/to/file
    

    使用sshmyuser 的身份通过多跳连接到remotehost,然后使用sg 将主组从group_A 切换到group_B

    【讨论】:

    • 不错。我可以建议您也M-x report-emacs-bug 提出这个作为新的标准方法吗?
    • 会的。我还修改了使用 eval-after-load 的答案,因为 Tramp 是自动加载的,因此在第一次使用之前未定义 tramp-methods。
    • 请写报告。我会愉快地将此功能添加到下一个 Tramp 版本中。
    猜你喜欢
    • 2010-10-17
    • 2011-01-14
    • 2011-12-20
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2012-04-11
    相关资源
    最近更新 更多