Shell

SSH 代理轉發有效,但是 sudo -u username no shell/ 權限呢?作曲家

  • May 23, 2014

在遠端伺服器上工作 (A) 我想使用我的本地 SSH 密鑰訪問另一個不受我控制的伺服器 (B) 上的儲存庫。

一般來說,這就像一個魅力。

我在遠端伺服器 (A) 上以 myUsername 身份登錄,並且可以正常訪問 B 上的儲存庫。

問題是,有一些任務(作曲家更新)需要由(A)上的另一個使用者執行。

該使用者不是管理員,執行腳本的文件夾是他的,只能由他而不是整個組寫入,所以我不能將所有文件夾更改為 777、775 或其他內容;)

問題是,當我想執行腳本時: sudo -u another_user composer update 果然沒有找到密鑰,因為它們不會為該使用者轉發。

此外,“another_user”的外殼設置為 bin/false 以使事情更加複雜!!!

有針對這個的解決方法嗎?

總結一下:我想通過我自己的遠端伺服器使用我的本地 ssh-keys 訪問另一個遠端伺服器sudo -u another_user ...

如果有更多經驗的人可以啟發我,那就太好了!

編輯:我也試過這個: http: //mybrainhurts.com/blog/2012/05/git-sudo-local-ssh-keys.html但我想它不會工作,因為其他使用者沒有外殼:(

做到這一點的唯一方法是通過非常骯髒的黑客攻擊。我不推薦它。

setfacl -R -m u:another_user:rwx "${SSH_AUTH_SOCK%/*}"
sudo -u another_user SSH_AUTH_SOCK="$SSH_AUTH_SOCK" composer update

原因是您的 SSH 密鑰是通過命名套接字訪問的。該命名套接字位於您擁有的目錄中,其他任何人都無法訪問。授予其他使用者訪問權限的唯一方法是更改​​套接字的權限。

上面通過擴展文件系統屬性來做到這一點。如果您的/tmp文件系統不支持 ACL,那麼唯一的方法就是chmod o+rwx,這是非常不安全的。

更好的解決方案是修復阻止您以自己的使用者身份執行該命令的任何問題。

引用自:https://unix.stackexchange.com/questions/131596