作者holishing ( )
看板Linux
標題Re: [問題] 圖形介面如何暫時取得最高權限(sudo)
時間Fri Apr 12 20:46:43 2019
※ 引述《stonys (蝶戀影)》之銘言:
: 大家好
: 小弟雖然會sudo指令操作
: 也會一點VI編輯器操作
: 不過有時候想寫一些程式(php之類)的話,還是覺得用GUI的編輯器比較方便
: 可是常常要存檔時會遇到權限問題(登入帳號已經是管理員了)
: 此時只好先存在一般路徑,再用終端機下sudo cp的指令複製過去
: 想請問一下如果在圖形介面裡,如何取得sudo操作權限呢?
: 目前常用的的redhat Enterprise 7 & Ubuntu 18.04
: 謝謝!
因為之前查 wine 相關的 FAQ 瞄到:
https://wiki.winehq.org/FAQ#Is_Wine_malware-compatible.3F
所以就剛好有了
用其他使用者權限(非 root)跑跑看 wine
的想法,雖然不知道效果如何
於是參考原文底下推文的討論,搭配 arch wiki 參考整理一些使用上的心得
首先剛開始在查時常看到:
: → : 在你的指令前加上gksu
類似的方法,但後來發現一些比較新的發行版似乎已經不用這個指令了
所以就使用了需要安裝 polkit 套件(有些發行版已經裝好了)的 pkexec 指令
大概步驟如下:
1. 在自己帳號的桌面開終端機輸入:
~$ xhost +
應該會出現: access control disabled, clients can connect from any host 的訊息
2. 確認要用的程式被 polkit 允許
參考:
https://wiki.archlinux.org/index.php/Polkit#Actions
到 /usr/share/polkit-1/ 底下的 actions 或 rules.d 確認
自己要用的指令有沒有被 polkit 允許
沒有的話可以參考 wiki 裡面給的格式修改增加你要的指令
3. 確認自己的 $DISPLAY 變數
~$ echo $DISPLAY
應該會顯示等資訊
> ---
:0
> ---
4. pkexec 執行程式
就
pkexec --user <切過去的帳號> env DISPLAY=:0 <你要執行的指令>
例如想要用 gedit 編輯由 www-data 持有的 /var/www/html/index.html
就可以:
~$ pkexec --user www-data env DISPLAY=:0 gedit /var/www/html/index.html
或是我想要用 winewine 這個使用者來跑 wine 裡面的 IE
~$ pkexec --user winewine env DISPLAY=:0 wine iexplore
即可
==
至於相關環境變數要怎麼設定
目前想法是就一直加 env 變數=變數內容 像是:
~$ pkexec --user winewine env DISPLAY=:0 env WINEARCH=win32 wine winecfg
則是還不太確定,之後有需要再測試看看或看有沒有相關資料討論
也或許有其他比較easy的方法
但總之在這邊分享自己經驗以供參考
--
Param
ore - Franklin
And when we get home, I know we won't be home at all
This place we live, it is not where we belong
And I miss who we were in the town that we could call our own
Going back to get away after everything has changed
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.116.112.110
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1555073214.A.629.html
※ 編輯: holishing (140.116.112.110), 04/12/2019 20:51:24
1F:推 Klauhal: 在Windows做完後用SSH丟去Linux覆蓋 04/14 21:50
也是可以啊,也可以在 Linux 做完後拿 ssh 丟去沒裝桌面的 Linux 覆蓋
2F:→ Gold740716: env 可以一次加多個環境變數 env a=b c=d ls 04/14 22:39
3F:→ Gold740716: 另外換使用者不是 sudo -u username 就可以了嗎? 04/14 22:40
CLI 的話我當然直接 sudo -u <username> 不囉唆,
只是剛好想到要跑 GUI 但不知如何下手所以才翻到原來可以用 polkit
看起來有差,技術細節差在哪裡不太確定,會想用 polkit 只是因為
前面推文有提到 gksu ,但比較之後的版本這東西已經被 pkexec 取代的
而且感覺這東西拿來整合其他圖形界面(例如將相關指令當 *.desktop 執行的指令)
也比 sudo 適合
所以還是就這樣記錄一下整理自己使用類似方法的過程
※ 編輯: holishing (140.116.112.110), 04/15/2019 18:33:44
4F:推 a07051226: 我都用 sudo gedit /path/to/file (無誤 04/17 09:47
5F:→ holishing: 剛剛測試的確 pkexec 指令的確可以拿來當桌面啟動圖示 04/17 14:32
6F:→ holishing: 沒錯,如果啟動圖示裡指令換成 sudo 可能不太行 04/17 14:33
7F:→ holishing: 其他就是有在 Hacker News 討論區看到有人討論在跑 04/17 14:40
8F:→ holishing: systemctl 相關指令時前面就不用再加 sudo 了,因為 04/17 14:40
9F:→ holishing: polkit 會幫你要權限這樣的說法 04/17 14:41
10F:→ Bellkna: polkit幫你要的話會跳出視窗 sudo還是比較方便 04/17 19:43
11F:→ holishing: 如果是沒有GUI可以用的話(例:ssh連過去)也有CLI可以用 04/18 00:50
12F:→ lantw44: xhost + 我記得等於叫 Xorg 完全不控管連線的權限吧? 04/29 22:52
13F:→ lantw44: 如果只是要允許單一使用者可用 xhost +SI:localuser:root 04/29 22:53
14F:→ lantw44: 這類的,只允許指定的使用者可連線 04/29 22:53
15F:→ holishing: 感謝補充orz 05/09 22:06