テクノロジー

【Linux】アクセス権限(パーミッション)の基本とsu/sudoの違い

【Linux】アクセス権限(パーミッション)の基本とsu/sudoの違い

Linuxは1つのマシンへ複数のユーザが同時にログインして操作することを前提として作られているので、ファイルの誤操作や上書きを防ぐための仕組みが必要となります。

ハニ太郎
ハニ太郎
ファイルを勝手に他のユーザに上書きされたら困るもんね・・・。

本記事ではそんなファイルの保護を実現するためのアクセス権限の仕組み管理者権限を持つスーパーユーザであるrootユーザについて分かりやすいように解説いたします。

Linuxアクセス権限の基本

まずはLinuxにおける「アクセス権限」の基本についてしっかり押さえておきましょう。

オーナーとグループ

Linuxで使われるファイル全てにオーナーが設定されており、そのオーナーはファイルへのアクセス権限を自由に設定することができます。

ハニ太郎
ハニ太郎
Linux上の全てのファイルにオーナーが設定されているよ♪

以下はlsコマンドに「-l」オプションを付けてファイルのオーナーを確認した例。

lsコマンド例

上の例でいうとsampleファイルは「taroというユーザがオーナーで、suzukiというグループに所属している」という意味になります。

「グループ」とはユーザをまとめた集まりのこと。ユーザはいくつものグループに所属することが可能。「groupコマンド」で自分がどのグループに所属しているか確認することができる。

パーミッション

各ファイルには「誰にどのような操作を許可するか」という権限を規定する情報が設定されており、この情報をパーミッションと呼びます。

ハニ太郎
ハニ太郎
パーミッションは誰にどんな操作を許可するかという権限を規定する情報のことを指すよ♪

以下「rwxr-xr-x」の部分はファイルモードと呼ばれ、ファイルのパーミッションを表現。

パーミッション

この9文字は3文字ごとに1つのブロックになっており、それぞれがオーナー・グループ・その他ユーザに対するパーミッションを意味してます。

以下の図は各記号の意味をまとめたものです。

パーミッションの記号と意味

先ほどの例はファイルの「オーナーには読み書き実行権限全てが与えられており、グループとその他ユーザには読み・実行の権限のみ与えられている」という意味になります。

chmodコマンド

「chmod」は先ほどの9文字で表現されていたファイルモードを変更するコマンド。

chmodコマンドには「シンボルモード」による指定と「数値モード」による指定の2種類があるので、それぞれについて以下で解説します。

なお、ファイルのパーミッションはオーナーもしくは後述するスーパーユーザしか変更することができません。

シンボルモードによるパーミッションの変更

シンボルモードの指定は「誰にどのような権限を追加もしくは禁止するのか」が直感的。

シンボルモード

最初の[ugoa]の部分はどのユーザに対するパーミッションを変更するのかを指定。

それぞれの記号の意味は以下の通り。

シンボルモード

次の[+-=]の部分は権限を追加するのか禁止するのかの操作を表しています。

シンボルモード

なお、最後の[rwx]の部分は前章で解説した通り、読み書き実行権限を表したものです。

ハニ太郎
ハニ太郎
「誰にどんな権限をどうするのか」直感的でわかりやすい♪

数値モードによるパーミッションの変更

シンボルモードとは異なり、数値モードは元のパーミッションに関わらず新しいパーミッションの値へと変更する方式です。

数値モード

パーミッションを数値で表現するにはrwxのうち許可する操作を以下の数字に置き換えてそれを足し算します。

数値モード

足した値をオーナー・グループ・その他ユーザの順に3つ並べてパーミッションを表現。

例えば「755」はオーナーには読み書き実行権限の全て、グループとその他ユーザには読み・実行権限のみ与えられているということになります。

ハニ太郎
ハニ太郎
慣れれば数値モードを使いやすい♪

スーパーユーザ(rootユーザ)

Linuxのユーザの中には「スーパーユーザ(rootユーザとも)」と呼ばれる管理者権限を持つ特別なユーザが存在します。

スーパーユーザはあらゆる操作が許可された強い権限を持つユーザであり、ファイルのパーミッションの影響を受けずに全てのファイルの読み込み・書き込み・削除が可能です。

ハニ太郎
ハニ太郎
要はLinux上の王様ユーザ♪

本章では一般ユーザからスーパーユーザに変わる方法であるsusudoコマンドについて順に解説していきます。

スーパーユーザで操作を誤るとLinuxシステム自体を破壊してしまう恐れもあるため乱用は禁物です。スーパーユーザの利用は必要最小限に留めておきましょう。 

suコマンド

suコマンド」はログアウトせずとも一時的に別のユーザになるため(主にスーパーユーザに変わるため)のコマンドです。

suコマンド

なお、スーパーユーザとして作業を終えたら、exitコマンドで元の一般ユーザに戻れます。

ハニ太郎
ハニ太郎
「suコマンド」はユーザ毎スーパーユーザに切り替えるコマンドだよ♪

sudoコマンド

sudoコマンド」は一般ユーザでログインしている時にスーパーユーザでないと実行できないコマンドを実行するために使用されます。

sudoコマンド

sudoコマンドを実行すると上の例のように現在ログインしているユーザのパスワードが要求されるので、正しく入力すれば実行されるはずです。

ハニ太郎
ハニ太郎
「sudoコマンド」では1つのコマンドだけをスーパーユーザ権限で実行できるよ♪

su/sudoどちらを使うべきか?

結論sudoコマンドを基本的に使用しましょう。

というのも、スーパーユーザでの操作は致命的な問題を引き起こす可能性があるため、むやみに使用すべきではないからです。

ハニ太郎
ハニ太郎
基本はsudoコマンド♪

なお、sudoコマンドも危険を伴うことに変わりないため、使用する場合は逐一注意して実行するようにしましょう。

Linuxの知識を深めていこう

本記事のまとめ
  • Linux上の各ファイルには必ずオーナーが存在する。
  • 各ファイルには「誰にどのような操作を許可するか」という権限を規定する情報(パーミッション)が設定されている。
  • chmodコマンドでパーミッションの変更が可能。(オーナーもしくはスーパーユーザのみ変更が許可される)
  • Linuxのユーザの中にはスーパーユーザと呼ばれる管理者権限を持つ特別なユーザが存在。
  • su/sudoコマンドでスーパーユーザに切り替わることができる。
  • 基本的には危険性を考慮してsudoコマンドを使用したほうが無難。

Linuxにおけるアクセス権限の基本について理解できたでしょうか?

本記事で扱った内容はあくまで基本的な部分だけなので、良質な書籍やサイトでの学習を通じて更に理解を深めていってもらえればと思います。

Linuxの勉強におすすめの入門書3選
【2019年版】Linuxの勉強におすすめの入門書3選Linuxについて勉強する際におすすめの入門書を3冊紹介。Linuxに関する知識はエンジニアにとって必要不可欠なものなので、早いうちにLinuxについて学んでおきましょう。...
ハニ太郎
ハニ太郎
ここまで記事を読んでいただきありがとうございました♪
こちらの記事もおすすめ!

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です