Debian

從“su -”而不是“su root”找到的命令

  • September 28, 2021

作業系統:Debian 10.10

我搜尋以了解為什麼當我使用“su -”啟動時會執行“usermod”命令,但是當他從“su root”啟動時,命令是“bash: usermod: command not found”。

謝謝!

su命令不-保留您現有的環境,並且僅將您切換到使用者而不載入他的所有環境變數。

su -將模擬使用者登錄,不僅將您切換到使用者,還會載入他的環境變數。

man su

   -, -l, --login
          Start the shell as a login shell with an environment similar to a real login:

             o      clears all the environment variables except TERM and variables specified by --whitelist-environment

             o      initializes the environment variables HOME, SHELL, USER, LOGNAME, and PATH

             o      changes to the target user's home directory

             o      sets argv[0] of the shell to '-' in order to make the shell a login shell

在這種情況下,您可能不會載入根使用者的 PATH 變數中的所有元素。

輸入echo $PATH後輸入su root,輸入後你su -可能會在su -命令後的 PATH 中有額外的文件夾。

usermodcommand 應該是 in /usr/sbin,這是只對超級使用者可用的路徑,裡面的命令/sbin用於/usr/sbin管理目的,並且只能由管理使用者而不是普通使用者執行。

你可以使用type usermodorwhich usermod並看到它usermod在路徑上/usr/sbin/usermod,你可能不會在after/usr/sbin的輸出中,但會在命令之後將它放在 PATH 變數中echo $PATH``su root``su -

/sbin 與 /bin 一樣,此目錄包含啟動系統所需的命令,但通常不會由普通使用者執行。

/usr/sbin 這個目錄包含用於系統管理的程序二進製文件,它們對於引導過程、掛載 /usr 或系統修復不是必需的。

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