1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

sudo su, sudo su -, sudo -s, sudo -iと環境変数の関係

Posted at

はじめに

下記のツイートに関連して、環境変数の引継ぎがそれぞれどうなっているのか気になったので調べてみました。
@tmtms さん、良記事ありがとうございます。

この記事でわかる・できること

sudo su, sudo su -, sudo -s, sudo -iしたときの環境変数の違いがわかります。

やった後で気づきましたが、環境変数に変化がないからと言ってそれが引き継がれているといえるかどうか不明です。
あくまでも参考程度に見ていただければ幸いです。

環境

ubuntu@xxx:~$ uname -a
Linux xxx 5.15.0-122-generic #132-Ubuntu SMP Thu Aug 29 13:45:52 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
ubuntu@xxx:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

確認事項

それぞれのコマンドの入力前と入力後でenvしてそれをdiffします。ユーザーが定義した環境変数についても気になったのでexport FOOBAR=foobarも設定しています。

  • sudo su
  • sudo su -
  • sudo -s
  • sudo -i

初期状態の環境変数一覧

ubuntu@xxx:~$ env
SHELL=/bin/bash
PWD=/home/ubuntu
LOGNAME=ubuntu
XDG_SESSION_TYPE=tty
MOTD_SHOWN=pam
HOME=/home/ubuntu
LANG=en_US.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:
SSH_CONNECTION=192.168.1.211 57310 192.168.1.45 22
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
TERM=xterm-256color
LESSOPEN=| /usr/bin/lesspipe %s
USER=ubuntu
SHLVL=1
XDG_SESSION_ID=312
XDG_RUNTIME_DIR=/run/user/1000
SSH_CLIENT=192.168.1.211 57310 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
PATH=/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
FOOBAR=foobar
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
SSH_TTY=/dev/pts/0
_=/usr/bin/env

env_base.txtとして~/に保存しておきます。

ubuntu@xxx:~$ env | sort > env_base.txt

1. sudo su

sudo suした後にenv | sort > /home/ubuntu/env1.txtとして環境変数を保存します。

ubuntu@xxx:~$ sudo su
[sudo] password for ubuntu:
root@xxx:/home/ubuntu# env | sort > /home/ubuntu/env1.txt

diff

ubuntu@xxx:~$ colordiff -y env_base.txt env1.txt
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus         | HOME=/root
FOOBAR=foobar                                                 <
HOME=/home/ubuntu                                             <
LANG=en_US.UTF-8                                                LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s                               LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s                                 LESSOPEN=| /usr/bin/lesspipe %s
LOGNAME=ubuntu                                                | LOGNAME=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0   LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
MOTD_SHOWN=pam                                                | MAIL=/var/mail/root
PATH=/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/ | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
PWD=/home/ubuntu                                                PWD=/home/ubuntu
SHELL=/bin/bash                                                 SHELL=/bin/bash
SHLVL=0                                                         SHLVL=0
SSH_CLIENT=192.168.1.211 57310 22                             | SUDO_COMMAND=/usr/bin/su
SSH_CONNECTION=192.168.1.211 57310 192.168.1.45 22            | SUDO_GID=1000
SSH_TTY=/dev/pts/0                                            | SUDO_UID=1000
                                                              > SUDO_USER=ubuntu
TERM=xterm-256color                                             TERM=xterm-256color
USER=ubuntu                                                   | USER=root
_=/usr/bin/env                                                  _=/usr/bin/env
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk <
XDG_RUNTIME_DIR=/run/user/1000                                <
XDG_SESSION_CLASS=user                                        <
XDG_SESSION_ID=312                                            <
XDG_SESSION_TYPE=tty                                          <

引き継がれていたのは下記で、自ら設定したFOOBAR=foobarは引き継がれていませんでした。

LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
PWD=/home/ubuntu
SHELL=/bin/bash
SHLVL=0
TERM=xterm-256color
_=/usr/bin/env

2. sudo su -

sudo su -した後にenv | sort > /home/ubuntu/env2.txtとして環境変数を保存します。

ubuntu@xxx:~$ sudo su -
root@xxx:~# env | sort > /home/ubuntu/env2.txt

diff

ubuntu@xxx:~$ colordiff -y env_base.txt env2.txt
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus         | HOME=/root
FOOBAR=foobar                                                 <
HOME=/home/ubuntu                                             <
LANG=en_US.UTF-8                                                LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s                               LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s                                 LESSOPEN=| /usr/bin/lesspipe %s
LOGNAME=ubuntu                                                | LOGNAME=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0   LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
MOTD_SHOWN=pam                                                | MAIL=/var/mail/root
PATH=/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/ | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
PWD=/home/ubuntu                                              | PWD=/root
SHELL=/bin/bash                                                 SHELL=/bin/bash
SHLVL=0                                                         SHLVL=0
SSH_CLIENT=192.168.1.211 57310 22                             <
SSH_CONNECTION=192.168.1.211 57310 192.168.1.45 22            <
SSH_TTY=/dev/pts/0                                            <
TERM=xterm-256color                                             TERM=xterm-256color
USER=ubuntu                                                   | USER=root
_=/usr/bin/env                                                  _=/usr/bin/env
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk   XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk
XDG_RUNTIME_DIR=/run/user/1000                                <
XDG_SESSION_CLASS=user                                        <
XDG_SESSION_ID=312                                            <
XDG_SESSION_TYPE=tty                                          <

引き継がれていたのは下記で、自ら設定したFOOBAR=foobarは引き継がれていませんでした。

LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
SHELL=/bin/bash
SHLVL=0
TERM=xterm-256color
_=/usr/bin/env
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk

3. sudo -s

sudo -sした後にenv | sort > /home/ubuntu/env3.txtとして環境変数を保存します。

ubuntu@xxx:~$ sudo -s
root@xxx:/home/ubuntu# env | sort > /home/ubuntu/env3.txt

diff

ubuntu@xxx:~$ colordiff -y env_base.txt env3.txt
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus         | HOME=/root
FOOBAR=foobar                                                 <
HOME=/home/ubuntu                                             <
LANG=en_US.UTF-8                                                LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s                               LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s                                 LESSOPEN=| /usr/bin/lesspipe %s
LOGNAME=ubuntu                                                | LOGNAME=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0   LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
MOTD_SHOWN=pam                                                | MAIL=/var/mail/root
PATH=/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/ | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
PWD=/home/ubuntu                                                PWD=/home/ubuntu
SHELL=/bin/bash                                                 SHELL=/bin/bash
SHLVL=0                                                         SHLVL=0
SSH_CLIENT=192.168.1.211 57310 22                             | SUDO_COMMAND=/bin/bash
SSH_CONNECTION=192.168.1.211 57310 192.168.1.45 22            | SUDO_GID=1000
SSH_TTY=/dev/pts/0                                            | SUDO_UID=1000
                                                              > SUDO_USER=ubuntu
TERM=xterm-256color                                             TERM=xterm-256color
USER=ubuntu                                                   | USER=root
_=/usr/bin/env                                                  _=/usr/bin/env
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk <
XDG_RUNTIME_DIR=/run/user/1000                                <
XDG_SESSION_CLASS=user                                        <
XDG_SESSION_ID=312                                            <
XDG_SESSION_TYPE=tty                                          <

引き継がれていたのは下記で、自ら設定したFOOBAR=foobarは引き継がれていませんでした。

LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
PWD=/home/ubuntu
SHELL=/bin/bash
SHLVL=0
TERM=xterm-256color
_=/usr/bin/env

4. sudo -i

sudo -iした後にenv | sort > /home/ubuntu/env4.txtとして環境変数を保存します。

ubuntu@xxx:~$ sudo -i
root@xxx:~# env | sort > /home/ubuntu/env4.txt

diff

ubuntu@xxx:~$ colordiff -y env_base.txt env4.txt
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus         | HOME=/root
FOOBAR=foobar                                                 <
HOME=/home/ubuntu                                             <
LANG=en_US.UTF-8                                                LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s                               LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s                                 LESSOPEN=| /usr/bin/lesspipe %s
LOGNAME=ubuntu                                                | LOGNAME=root
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0   LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
MOTD_SHOWN=pam                                                | MAIL=/var/mail/root
PATH=/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/ | PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:
PWD=/home/ubuntu                                              | PWD=/root
SHELL=/bin/bash                                                 SHELL=/bin/bash
SHLVL=0                                                         SHLVL=0
SSH_CLIENT=192.168.1.211 57310 22                             | SUDO_COMMAND=/bin/bash
SSH_CONNECTION=192.168.1.211 57310 192.168.1.45 22            | SUDO_GID=1000
SSH_TTY=/dev/pts/0                                            | SUDO_UID=1000
                                                              > SUDO_USER=ubuntu
TERM=xterm-256color                                             TERM=xterm-256color
USER=ubuntu                                                   | USER=root
_=/usr/bin/env                                                  _=/usr/bin/env
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk   XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk
XDG_RUNTIME_DIR=/run/user/1000                                <
XDG_SESSION_CLASS=user                                        <
XDG_SESSION_ID=312                                            <
XDG_SESSION_TYPE=tty                                          <

引き継がれていたのは下記で、自ら設定したFOOBAR=foobarは引き継がれていませんでした。

LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=0
SHELL=/bin/bash
SHLVL=0
TERM=xterm-256color
_=/usr/bin/env
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desk

最後に

取り急ぎでやったので何か大きな間違いを犯している気がする、、
コメント等で教えていただけると嬉しいです。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?