LS_COLORS 在 sudo su 之後如何持續存在
我在我的機器上創建了一個使用者名,並將該使用者名添加到 sudoers 文件以具有 root 訪問權限。
我的
.bashrc
文件還包含一個腳本,它說要更改 PS1 的顏色和 ls 命令的顏色export PS1="\[\e[1;32m\][\u@\h \W]\$\[\e[0m\] " export LS_COLORS="di=1:fi=0:ln=31:pi=5:so=5:bd=5:cd=5:or=31:mi=0:ex=35:*.rpm=90"
在腳本結束時,我還有命令
sudo su
讓我在登錄時直接成為 root。問題是 PS1 仍然存在並且之後顏色會發生變化,
sudo su
但 ls 命令仍然是預設命令。我怎樣才能解決這個問題?
以您的普通使用者身份執行
sudo -l
以查看目前有效的選項。
- 輸出是否包括
env_reset
?如果是這樣,在通過sudo
. 您可以在文件中使用env_check
和/或env_keep
關鍵字sudoers
來指定允許通過sudo
.- 輸出是否包括
always_set_home
?如果是這樣,那麼$HOME
環境變數將指向目標使用者的主目錄,即/root
在您的情況下。結果,生成的 shell 將執行/root/.bashrc
而不是您個人的 shell,同樣所有程序都將在/root/
目錄而不是您的個人主目錄下查找其使用者特定的配置文件。如果
sudo -s
使用 root.bashrc
而不是你個人的,那麼always_set_home
很可能是有效的(或者你有一個帶有嚴格 PAM 模組或其他東西的奇怪分佈)。在這種情況下,使用visudo
編輯您的 sudoers 文件,並添加以下行之一(選項名稱前的驚嘆號表示“不是”):
Defaults !always_set_home
取消所有使用者的選項。Defaults>root !always_set_home
取消所有轉換到 root 使用者的設置,無論原始使用者是誰。Defaults:johndoe !always_set_home``johndoe
為僅原始使用者的轉換取消設置。順序很重要:最後一個設置獲勝,因此如果您的文件中有任何現有
Defaults
行sudoers
,您應該在它們之後添加您的自定義。如果你連結
su
aftersudo
,它將應用自己的規則,這些規則通常是不可配置的。不同 Linux 發行版和版本之間的行為(甚至可用性)su -p
或有所不同。su -m
sudo su
意味著從您的普通使用者切換到 root,然後再從 root 切換到 root,從而最大限度地破壞精心調整的個人環境設置而收效甚微。根據您的偏好和 Linux 發行版的選擇,您可以直接或通過對文件中的選項sudo -s
進行一些調整來實現相同的目標。Defaults``sudoers
sudo su -
,另一方面,是過時的說法“我明確希望環境就像目標使用者(即 root)直接登錄一樣;我不希望我的個人環境的任何痕跡留在結果會話中。” 如果你有一個sudo
在這個千年發布的版本,你可以使用它sudo -i
來實現它。在 2010 年代,使用
sudo su
或sudo su -
可能是肌肉記憶、遵循過時的建議或處理真正的舊系統的唯一原因。您可能應該忘記這兩個命令。