emacs - 在Emacs中,如何使用Tramp SSH作为其他组ID进行编辑?

标签 emacs ssh su tramp

我认为我正在寻找的解决方案可能类似于使用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中定义了sutramp-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/

相关文章:

Linux Code::Blocks、EMACS 或 GVIM 上的 C++ 开发

emacs - 如何使用文件局部变量设置 Emacs 缓冲区名称?

r - 使 Emacs ESS 遵循 R 风格指南

android - 通过应用程序运行 shell 命令..无法正常工作

android - 无需root手机即可访问Android Root权限

c++ - 使用 execvp() 执行进程时加载用户环境;

macos - 当我在终端中调用它时,Emacs 错误 "Failed to initialize color list unarchiver"

SSH-X "Warning: untrusted X11 forwarding setup failed: xauth key data not generated"

linux - 用于运行和测试 ssh 命令的 Unix 编辑器

node.js ssh2shell 包装器无法登录到 cisco 设备