我想知道做之间是否有任何区别(在环境中?)
sudo su - user
和
sudo -iu user
据我所知:通过使用 sudo su - user 我以用户身份打开一个新的 shell,破折号给出了用户的环境变量(而 sudo su user 没有)并使用 sudo -iu user (-u 表示精确用户,- i 代表“模拟初始登录”)。
那么,有什么区别吗?
除了第一个需要用户能够以root身份执行su,第二个需要用户以用户身份执行bash
谢谢 !
答案1
这是 sudo 手册页上关于“-i”选项的内容
-i The -i (simulate initial login) option runs the shell specified in
the passwd(5) entry of the user that the command is being run as.
The command name argument given to the shell begins with a `-' to
tell the shell to run as a login shell. sudo attempts to change to
that user's home directory before running the shell. It also ini-
tializes the environment, leaving TERM unchanged, setting HOME,
SHELL, USER, LOGNAME, and PATH, and unsetting all other environment
variables. Note that because the shell to use is determined before
the sudoers file is parsed, a runas_default setting in sudoers will
specify the user to run the shell as but will not affect which
shell is actually run.
这基本上告诉我你只是在模拟所引用用户的外壳,但是一些事情可能与预期用户直接登录的情况不完全一样。如果你问这个问题“什么“我无法说出我的想法。但是如果您使用sudo su - user
命令,当您使用引用用户的设置启动一个新的 shell 进程时,不会提出任何问题。在某些情况下,这两个命令可以在相同的环境中,但在其他一些环境中,我认为会遇到差异。