w 指令對使用者安全嗎?

w 指令對使用者安全嗎?

某些應用程式允許將密碼作為參數傳遞。例如:

mysql --user=user_name --password=your_password db_name

安全嗎?除了輸入的密碼將保存在 bash 歷史記錄中之外,某人還可以w在適當的時候輸入命令,並會看到進程的完整命令行(包括密碼)。

讓我感到非常驚訝的是,每個用戶都可以看到我目前正在執行的命令。

答案1

系統中每個進程的命令列參數都被視為「公共」。當然,不僅是w命令,而且ps還有許多其他命令都可以存取該資訊。top事實上,取得該資訊不需要任何特殊權限。在 Linux 上,您可以透過讀取 來讀取另一個進程的命令列,甚至是屬於另一個使用者的進程/proc/<pid>/cmdline

w這不是或topps(或)方面的缺陷或不安全行為cat。相反,責任在於永遠不要在多用戶系統的命令列上傳遞敏感資訊。

大多數能夠在命令列上接受密碼的實用程式都表明不建議這樣做。例如,來自 的線上mysql說明頁:

在命令列上指定密碼應該被認為是不安全的。請參閱第 5.3.2.2 節「密碼安全的最終使用者指南」。您可以使用選項檔案來避免在命令列上提供密碼。

順便說一句,在環境變數中傳遞密碼或敏感資料並不是那麼明顯的不安全,但在大多數系統上實際上也是不安全的。

答案2

不,在命令列上向程式傳遞密碼並不安全。最好使用:

mohsen@debian:~$ mysql -uuser -p
Enter password: 

答案3

雖然它並不安全,但請記住,Linux 現在才二十歲出頭——就像 IT 中的其他事物一樣,安全隱患要么當時還不那麼明確,要么後來才得到解決。

因此,正如其他答案中提到的,不要在命令列上使用密碼。

您還可以(並且可能應該)限制 mountring hidepid` 選項提供的信息procfs with the,或使用網路安全硬化內核。請注意,這可能會破壞一些東西(可能是 cgroup 和任何依賴它們的東西 - 例如 systemd),至少在撰寫本文時是這樣。

相關內容