sudoは現在ログインしているユーザー名をどこで取得できますか?

sudoは現在ログインしているユーザー名をどこで取得できますか?

rootとしてログインして他のユーザーにsu-ingした後、「sudo su -」の代わりに「sudo su」を試してみると、新しいユーザーとして私をsudoしようとしますが、ルートを介して...

と入力すると、env環境にはまだusername = rootが表示されます。 sudoは現在ログインしているユーザーを確認せずに環境パラメータを確認しますか?

[oracle@tst-01]$ sudo su grid
Sorry, user oracle is not allowed to execute '/bin/su grid' as root on tst-01.testdomain.com.
[oracle@tst-01]$ env
HOSTNAME=tst-01.testdomain.com
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
QTDIR=/usr/lib64/qt-3.3
USER=oracle
SUDO_USER=ujjain
USERNAME=root
MAIL=/var/spool/mail/ujjain
PATH=/usr/lib/oracle/10.2.0.4/client64/bin:/usr/lib/oracle/10.2.0.4/client64/bin:/sbin:/bin:/usr/sbin:/usr/bin
PWD=/home/ujjain
LANG=en_US.utf8
HOME=/opt/apps/oracle
SUDO_COMMAND=/bin/su
SHLVL=2
LOGNAME=oracle
CVS_RSH=ssh
LESSOPEN=|/usr/bin/lesspipe.sh %s
SUDO_GID=3000
ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client64
G_BROKEN_FILENAMES=1
_=/bin/env
[oracle@tst-01 ujjain]$ sudo su - grid
[grid@tst-01 ~]$ 

sudoが現在ログインしているユーザーが新しいユーザーに対するsudo権限を持っているかどうかを探している場合でも、sudo su newuserも機能する必要があるようです。 sudo suは何をしますか? root以外のユーザーがハイフンでsudo su - newuserを使用することが重要なのはなぜですか?

ベストアンサー1

su - usernameハイフンは、ユーザーエクスペリエンスがコピーされたことを示します。つまり、デフォルトのシェルと作業ディレクトリを読み取り、/etc/passwdユーザーから派生したすべてのログインプロファイル(たとえば)を表します。~/.profile簡単に言えば、通常のログインとほぼ同じ環境になります。 (新規ユーザーが端末を所有していなくても、画面などのプログラムが失敗することがあります。)

suハイフンを使用しないと、許可されていない可能性がある同じ作業ディレクトリに滞在するなど、呼び出すユーザーの環境がある程度保存されます。

surootユーザーとして呼び出すとパスワードを要求されないため、rootになるために最初sudo(またはsu)を使用すると、他のユーザーになるためにパスワードは必要ありません。

おすすめ記事