以非 root 使用者身份下載日誌和數據庫
我永遠是 linux webhosting 的菜鳥。我沒有在尋找錯誤時處理終端寬度/高度/長度問題,而是在我的 ubuntu 20.04 本地機器上設置了一堆 bash 別名命令,以簡單地執行
scp
命令來下載任何內容在我的 gedit gui 中登錄並在本地打開它。問題:
既然我已經了解了使用非 root 使用者和禁用 root ssh 功能的最佳實踐,我有一堆 bash 別名命令不起作用,因為我現在以非 root 使用者身份 ssh 到伺服器必須使用
sudo su
才能成為 root 並做任何事情(為了安全安心而值得權衡)。問題:
有誰知道如何更改以下命令,以便非 root 使用者可以執行它們:
alias pae="scp root@prodserver:/var/log/apache2/error.log ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log && gedit ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log" alias dbdl="rsnyc -aHAXSv root@prodserver:/dbbackdir ~/Downloads/dbbackups"
對於上述每個命令…
我需要用 替換
root@prodserver
,adminuser@prodserver
傳遞sudo su
命令並以某種方式自動傳遞管理員使用者的密碼以成為 root,以便我的 bash 別名保持其先前的最終使用者便利。我在這個重量級上打得遠遠超過我的體重。
有小費嗎?
更新:
我找到了一個有用的教程,展示瞭如何添加對文件的非 root 訪問權限。不幸的是,完全按照書面說明進行操作是行不通的:
授予非 root 使用者 apache2 日誌訪問權限
https://gist.github.com/angela-d/8a2416034ea7ed89ecde37147e8711ba
注意:本教程沒有說明它是否適用於 Debian 10.5,這可以解釋為什麼事情不工作。
按照指示我跑了
setfacl -m g:adminuser:rx /var/log/apache2/*
但是,當我執行時
getfacl /var/log/apache2/
,輸出沒有顯示 adminuser 因為只有 root 使用者的 rx 訪問權限/var/log/apache2/*
繼續具有訪問權限..我也嘗試從組更改為使用者(使用’u’而不是’g’)
setfacl -m g:adminuser:rx /var/log/apache2/*
但仍然沒有運氣。嗯..
*聽你腦海中嘮叨的聲音。*我仔細檢查了我之前的解決方案,並意識到我通過授予我的管理員使用者權限來訪問 /var 下的所有目錄,從而創建了一個安全漏洞,因此我將其刪除,並且將在我的臉上留下“菜鳥風味”的雞蛋。:-)
僅供參考,我曾經
setfacl -b g:adminuser:rx /var/*
消除我的愚蠢。在任何情況下,為了更正我的非 root 使用者訪問 apache 日誌的設置權限,而不造成安全漏洞,我使用了:
setfacl -m u:adminuser:rx /var/log/apache2/*.log
最後
getfacl /var/log/apache2/
表明它adminuser
有權訪問 apache2 error.log(並且沒有其他敏感目錄)。從那裡,我用新的 adminuser 測試了我原來的 bash 別名,一切都很完美:
alias pae="scp adminuser@prodserver:/var/log/apache2/error.log ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log && gedit ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log"
關於上面的 rsync 命令,將我的 db 備份直接保存到
adminuser
使用者的主目錄並從那裡 rsync 到我的本地電腦似乎是最安全的,而不是嘗試setfacl
在太多地方應用並導致安全漏洞。
看起來您需要成為伺服器上的 root 才能讀取日誌文件。也許是這樣的:
alias pae="ssh prodserver sudo cat /var/log/apache2/error.log" > ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log && gedit ~/Downloads/logs/prod/error-access-logs/prod-apache-error.log"
如果您需要更多文件,我會用
tar
uo 將它們組合成一個可以傳輸的文件,但是對於一種只傳輸更改的方式(就像rsync
確實如此),我建議您查看是否有一個組可以讓您的普通使用者進入,這樣他就可以閱讀那些文件。