トップ > Linuxらしい使い方を覚える >
権限昇格で一時的に管理者ユーザの権限を持つ

  

sudo コマンドで一時的に管理者ユーザと同じ権限を得られる

この記事では、sudo コマンドによる権限昇格について解説します。 簡単に言えば、標準ユーザでありながら管理者ユーザの権限を一時的に手に入れるための仕組みです。

管理者ユーザと標準ユーザ

以前の記事で軽く触れたように、UNIX系OSのユーザは管理者ユーザと標準ユーザに分かれます。 標準ユーザはさらに2種類に分類することができ、

  1. 自分自身のパスワードを入力することでシステム管理作業の権限を持てるユーザ
  2. システム管理作業の権限は持てないユーザ

に分かれます。 なお、インストール時に作成された標準ユーザは、

  1. 自分自身のパスワードを入力することでシステム管理作業の権限を持てるユーザ

となります。 つまり、今ログインしているユーザは自分自身のパスワードを入力することでシステム管理作業を行うことができます。

実際に、Linux Mintのインストール直後に行った最新状態へのアップデートやその後に実施したアプリケーションの追加の作業では、自分自身のパスワードを入力することでシステム管理作業を行えたことを思い出してください

端末での作業では sudo コマンドで権限昇格できる

端末から作業を行う場合でも、いつでもシステム管理作業を行うことができます。 そのためには、 sudo(スードゥ) スードゥ sudo(スードゥ) コマンドを利用して権限を昇格させる必要があります。

  
sudo コマンドの名前の由来は SuperUser DO だと聞きます。
  
スーパーユーザとは、UNIX系OSの管理者ユーザのことです。
  

sudo コマンドで権限昇格してみよう

では、実際に sudo コマンドを利用して権限昇格してみます。 さて、権限昇格して、どんなことをしましょうか。 うーん、そうですね、管理者ユーザのホームディレクトリを覗いてみましょう。

なお、UNIX系OSの管理者ユーザのユーザIDは root でホームディレクトリは /root です。

- UNIX系OSの管理者ユーザ -
ユーザID root
ホームディレクトリ /root

まずは、権限昇格せずに /root を覗いてみましょう。 端末を開いてキーボードから ls -la /root と入力して、Enterキーを押してください。


ls -la /root

 

以下のように許可がないぞ、と怒られます。 このように標準ユーザでは管理者ユーザのホームディレクトリを見ることはできません。

taro@myhostname:~$ ls -la /root
ls: ディレクトリ '/root' を開くことが出来ません: 許可がありません
taro@myhostname:~$

許可がない、というのはアクセス権がないという意味です。 過去の記事で解説したようにアクセス権とはパーミッションの設定によって決まります

ではここで、パーミッションの設定がどうなっているのかを確認してみましょう。 ディレクトリ /root のパーミッションを表示してみます。 端末を開いてキーボードから ls -ld /root と入力して、Enterキーを押してください。


ls -ld /root

 
  
ls コマンドの -d オプションは ディレクトリの中身ではなくディレクトリ自身の情報を表示するためのオプションです。

以下のようにディレクトリ /root の情報が表示されます。 -d オプションを指定することで、ディレクトリの内容ではなくディレクトリ自身の情報を見ることができます

taro@myhostname:~$ ls -ld /root
drwx------ 4 root root 4096  6月 10 11:44 /root
taro@myhostname:~$

このようにアクセス権は確かに不足しています。 管理者ユーザ以外のユーザには何の権限も与えられていません。


では続いて、sudo コマンドで権限昇格しつつ /root を覗いてみましょう。 キーボードから sudo ls -la /root と入力して、Enterキーを押してください。


sudo ls -la /root

 

以下のようにパスワードの入力を促されますので、パスワードを入力してEnterキーを押してください。

taro@myhostname:~$ sudo ls -la /root
[sudo] taro のパスワード:  

以下のように /root の内容が表示されます。

taro@myhostname:~$ sudo ls -la /root
[sudo] taro のパスワード:
合計 28
drwx------  4 root root 4096  6月  4 19:17 .
drwxr-xr-x 19 root root 4096  4月 17 09:43 ..
-rw-------  1 root root  183  6月  4 19:17 .bash_history
-rw-r--r--  1 root root 3106 10月 15  2021 .bashrc
drwx------  3 root root 4096  5月 18 15:40 .cache
-rw-r--r--  1 root root  161  7月  9  2019 .profile
drwx------  3 root root 4096  5月 18 15:59 .synaptic
taro@myhostname:~$

このように、実行したいコマンドの前に sudo を付け足すことで一時的に管理者ユーザと同等の権限を手に入れることができます。 なお、当然ですが sudo コマンドで権限昇格できるのは、

  1. 自分自身のパスワードを入力することでシステム管理作業の権限を持てるユーザ

のみであり、

  1. システム管理作業の権限は持てないユーザ

は、権限昇格することはできません。

では最後に、再び /root を覗いてみましょう。 キーボードから sudo ls -la /root と入力して、Enterキーを押してください。


sudo ls -la /root

 

以下のように /root の内容が表示されます。 パスワードは入力していないのに

taro@myhostname:~$ sudo ls -la /root
合計 28
drwx------  4 root root 4096  6月  4 19:17 .
drwxr-xr-x 19 root root 4096  4月 17 09:43 ..
-rw-------  1 root root  183  6月  4 19:17 .bash_history
-rw-r--r--  1 root root 3106 10月 15  2021 .bashrc
drwx------  3 root root 4096  5月 18 15:40 .cache
-rw-r--r--  1 root root  161  7月  9  2019 .profile
drwx------  3 root root 4096  5月 18 15:59 .synaptic
taro@myhostname:~$

このように、今回はパスワードを入力することなく /root の内容を参照することができました。 理由は、パスワードの入力が免除されたからです

sudo コマンドでは、一度正しいパスワードを入力すると一定時間はパスワードの入力が免除されます

  
別の端末からの sudo コマンドの実行ではパスワードの入力は免除されません。 また、ログインし直した場合にもパスワードの入力は免除されません。
  

まとめ

UNIX系OSのユーザは、管理者ユーザと標準ユーザに分かれます。 標準ユーザはさらに2種類に分類することができ、自分自身のパスワードを入力することでシステム管理作業の権限を持てるユーザと持てないユーザがあります。

インストール時に作成されたユーザは、自分自身のパスワードを入力することでシステム管理作業を行えるユーザです。

自分自身のパスワードを入力することでシステム管理作業の権限を持てるユーザであれば、sudo コマンドを使うことでいつでも好きな時に管理者ユーザと同等の権限に昇格することができます。

操作/コマンド 説明
sudo command 管理者ユーザの権限で command コマンドを実行する
メニュー