Debian

以非 root 使用者身份下載日誌和數據庫

  • January 10, 2022

我永遠是 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@prodserveradminuser@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"

如果您需要更多文件,我會用taruo 將它們組合成一個可以傳輸的文件,但是對於一種只傳輸更改的方式(就像rsync確實如此),我建議您查看是否有一個組可以讓您的普通使用者進入,這樣他就可以閱讀那些文件。

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