2014-03-04 39 views
5

我需要將.Xauthority文件位置更改爲一組用戶爲$ HOME/tmp/.Xauthority比默認的$ HOME/.Xauthority。在哪裏更改.Xauthority文件的默認位置,當通過ssh -X作爲特定用戶登錄時

我已經嘗試過什麼,我可以從幾個來源,如趕上:

我這樣設置環境變量在幾個/etc/.profile和.profile,.bashrc中....等與follwing :XAUTHORITY = $ HOME/TMP/.Xauthority中

隨着的結果:

任何登錄嘗試與鎖定$ HOME/.Xauthority中sshx組(SSH服務器-X)導致的在超時的用戶。這就像沒有改變任何東西。有趣的是,如果我回顯$ XAUTHORITY,它顯示$ HOME/tmp/.Xauthority。 authx正在運行,但不能在登錄時。

因此,我需要的處理必須發生在ssh -X之前或建立X連接時。我必須在哪裏進行更改,以便我可以只向一組用戶發言,因爲我不希望root或沒有sshX組的用戶受到影響,因爲他們最終沒有該目錄。

回答

2

我想出了一些不完整的東西,但是現在我已經將.Xauthority重新定位到了〜/ tmp/.Xauthority,這實際上是一個很大的進步。 (Ubuntu服務器是目標OS)

所有的設置保持不變,只有一個文件需要創建的〜/ .ssh這是基於SSH -X服務器名的連接加載/ RC:

if read proto cookie && [ -n "$DISPLAY" ]; then 
      if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then 
        # X11UseLocalhost=yes 
        echo add unix:`echo $DISPLAY | 
         cut -c11-` $proto $cookie 
      else 
        # X11UseLocalhost=no 
        echo add $DISPLAY $proto $cookie 
      fi | xauth -q -f ~/tmp/.Xauthority - 
    fi 

這啓動xauth並在您想要的位置創建文件,還會在.Xauthority文件中添加/創建條目以進行正確的身份驗證。

現在您需要修改〜。/ profile,因爲shell已加載,因此需要知道 .Xauthority文件的位置。因此,我們添加一行在最高層:

export XAUTHORITY=~/tmp/.Xauthority 

這使我通過ssh -X服務器名稱連接到外殼並啓動任何應用X。讓我們嘗試通過啓動xeyes或xclock。

很酷,但還有另一個問題出現在我面前,但我現在沒有解決方案。如果您嘗試直接從遠程啓動X應用程序,如:

[email protected]:~$ ssh -X servername xeyes 

X11 connection rejected because of wrong authentication. 
X11 connection rejected because of wrong authentication. 
X11 connection rejected because of wrong authentication. 
X11 connection rejected because of wrong authentication. 
Error: Can't open display: localhost:11.0 

這是一個有趣的錯誤,因爲如果你google一下有很多答案,但現在的情況本身導致了假設:當bash被加載並且被排除在外時,情況有所不同。我唯一假設的是設置XAUTHORITY變量的.profile中的行,但是如何在不加載shell的情況下設置它。如果我有一個擁有默認位置(〜/ .Xauthority)中的.Xauthority文件的用戶,它爲什麼會起作用?

3

我做的是設置在XAUTHORITY=/tmp/Xauthority-username~/.ssh/environment方式,但這需要改變/etc/ssh/sshd_configPermitUserEnvironment yes

我使用/tmp,因爲它使它保持在每臺機器的本地。對於NFS上的主目錄,這將成爲瓶頸,並導致在多個遠程主機上同時啓動多個應用程序的競爭狀況可能導致一些失敗。

相關問題