我认为我正在寻找的解决方案可能类似于使用SSH和su
的多跳;但是我必须使用su
而不是sg
。用例是我在服务器上有一个用户,并且出于管理原因,该用户属于多个组(主要组ID group_A
,第二个组ID group_B
)。使用SELinux访问控制,因此即使我拥有一个目录,但是如果我的主要组ID不正确,也将无法创建文件。在一个交互式 session 中,我将执行chgrp group_B
来切换我的主组,然后将创建一个新的Shell session 。如果远程启动程序,我将执行ssh foo.com 'sg group_B /path/to/executable'
。如何在Emacs / Tramp中实现这些效果?
最佳答案
我意识到ssh
中定义了su
,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
。
关于emacs - 在Emacs中,如何使用Tramp SSH作为其他组ID进行编辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34643837/