在Emacs中,如何使用Tramp SSH作为不同的组ID进行编辑?

时间:2016-01-06 22:13:48

标签: emacs ssh su tramp

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

1 个答案:

答案 0 :(得分:2)

我意识到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

使用remotehost将多跳连接到myuser ssh,然后使用group_A将主要群组从group_B切换为sg