私のコンピュータにユーザー名を作成し、そのユーザー名を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コマンドはデフォルトコマンドのままです。この問題をどのように解決できますか?
答え1
sudo -l
現在有効なオプションを確認するには、一般ユーザーとして実行してください。
出力には
env_reset
?その場合、ナビゲーション中に安全で必要な環境変数の一部のみが保存されますsudo
。ファイル内env_check
および/またはenv_keep
キーワードを使用して、sudoers
通過できる項目を指定できますsudo
。出力には
always_set_home
?その場合、$HOME
環境変数はターゲットユーザーのホームディレクトリを指します/root
。したがって、結果シェルはプライベートシェルの代わりに実行され、同様に、すべてのプログラムはプライベート/root/.bashrc
ホームディレクトリではなくディレクトリ内のユーザー固有の設定ファイルを検索します。/root/
自分のsudo -s
ルートの代わりにルートを使用すると、動作する可能性が高くなります(または厳密なPAMモジュールなどを備えた奇妙なディストリビューションがあります)。この場合、sudoersファイルを編集して次の行のいずれかを追加します(オプション名の前の感嘆符は「no」を意味します)。.bashrc
always_set_home
visudo
Defaults !always_set_home
すべてのユーザーのオプションをオフにします。Defaults>root !always_set_home
元のユーザーに関係なく、ルートへのすべてのトランジションの設定を解除します。Defaults:johndoe !always_set_home
johndoe
元のユーザーのみを含む変換するには、設定を解除してください。
Defaults
順序が重要です。最後の設定が優先されるため、ファイルに既存の行がある場合は、sudoers
その後にカスタム設定を追加する必要があります。
su
後で接続すると、通常はsudo
構成できない独自のルールが適用されます。動作(および可用性)は、Linuxディストリビューションとバージョンによってsu -p
異なります。su -m
sudo su
通常のユーザーからrootに切り替えてから再びrootからrootに切り替えて、細かく調整された個人設定をほとんど効果なく壊す可能性を最大化するという意味です。好みとLinuxディストリビューションの選択に応じて、sudo -s
ファイル内のいくつかのオプションを調整したり、直接Defaults
同じ目標を達成したりできます。sudoers
sudo su -
、一方役に立たないつまり、「ターゲットユーザー(ルートなど)が直接ログインしたように、環境を明示的に望んでいます。バージョンがある場合は、個人環境の痕跡を残したくありません。sudo
」sudo -i
できます。
2010年代には筋肉記憶を使用したりsudo su
、sudo su -
古いアドバイスに従ったり、本当に古いシステムを取り上げました。おそらく、これらの2つのコマンドを忘れる必要があります。
答え2
sudo su -p
一部の例外を除いて、呼び出し側ユーザーの環境は保持されます。以下では例外があるかもしれません。su
マニュアルページしかし、関連する部分は次のとおりです。
-m, -p, --preserve-environment
Preserve the entire environment, i.e. it does not set HOME,
SHELL, USER nor LOGNAME. This option is ignored if the option
--login is specified.