lsコマンドを使う(その4)

【連載】

にわか管理者のためのLinux運用入門

【第13回】lsコマンドを使う(その4)

[2016/03/08 08:00]後藤大地 ブックマーク ブックマーク

前回、LinuxやMac OS X、*BSDではパーミッションがファイルやディレクトリの基本的な保護機能であることを説明した。各ファイル/ディレクトリのパーミッションは、lsコマンドに-lオプションを指定することで確認できる。パーミッションは、「持ち主」、「持ち主の所属しているグループの人」、「それ以外の人」の3種類に対して設定できることもご理解いただけたはずだ。

それらを踏まえ、今回はファイルとディレクトリのパーミッションについて、具体的な内容を挙げながら説明する。特にディレクトリのパーミッションについては、なぜそんな設定になっているのかを知らない方が多いと思うので、その辺りをつかんでいただきたい。

ファイルのパーミッション

ユーザーが扱う一般的なファイルには、「rw-r—r—」のようなパーミッションが設定されていることが多い。これは、ファイルの持ち主であるユーザーはファイルの読み書きができるが、それ以外のユーザーは中身を読めるだけということを意味している。LinuxやMac OS X、*BSDでは、基本的にこれがデフォルトの設定になっていることが多い。

インタラクティブシェル「bash」の設定ファイル(~/.bashrc)のパーミッション

公開鍵のように、公開されても問題のないデータも基本的には「rw-r—r—」という設定になっている。他人に見られても、問題ないからだ。いったん作成した公開鍵はもう編集することはないだろうから、ここは別に「r—r—r—」となっていてもよい。

SSH公開鍵(~/.ssh/id_rsa.pub)のパーミッション

一方、秘密鍵のようにほかのユーザーに見られると困るファイルもある。その場合、次のように「rw———-」が設定される。本人だけが編集できて、ほかのユーザーは中身を読むこともできない。これも、先ほどと同じ理由で「r————」となっていてもかまわない。

SSH秘密鍵(~/.ssh/id_rsa)のパーミッション

また、システムの設定ファイルの場合には次のようなパーミッションが設定されることが多い。

SSHサーバのデフォルト設定ファイルのパーミッション

持ち主がroot(管理者ユーザー/スーパーユーザー)になっており、パーミッションが「rw———」なので、rootのみが編集でき、それ以外のユーザー(一般ユーザー)は設定内容を確認することもできない。

もう1つ知っておいたほうが良い典型的なパーミッションが、実行ファイルのパーミッションだ。実行ファイル(コマンド、アプリケーション、シェルスクリプトなど)のパーミッションは、「x」が付いて「rwxr-xr-x」のようになっている。

実行ファイルのパーミッション

これは、rootは編集も実行も可能であり、それ以外のユーザーはコマンドの読み込みと実行ができる状態を表している。

コマンドやアプリケーションの実行を許可するだけならば、「—x—x—x」でも良いじゃないか、と思われるかもしれないが、それだと実行できない。読み込みを許可する「r」が指定されていないと、そもそもその中身を読み込むことができないので、実行も何もないわけだ。

これまでファイル・パーミッションを意識したことがないのであれば、cdコマンドとlsコマンドを繰り返し実行して、いろいろなパスにあるファイルのパーミッションを調べてみてほしい。システムがどういった意図を持って構築されているのかが、今までよりもよく理解できるようになるだろう。

ディレクトリのパーミッション

ファイルのパーミッションとディレクトリのパーミッションは、lsコマンドの出力では同じ「rwx」の表記が使われているが、その意味が異なっている。以降では、いくつかの例を挙げながら、その違いを説明しよう。

まず、ユーザーのホームディレクトリ(ログインしたときに最初に出ているパス)のパーミッションを見てみよう。ちなみに下記の画面では、lsコマンドに「-d」というオプションも指定している。これは、「ディレクトリそのものについて表示せよ」という意味のオプションだ。これを指定しないと、ディレクトリ下のファイルなどの情報まで表示されてしまい、説明の邪魔になるからだ。多用するオプションではないが、知っておくとたまにこうして役に立つことがある。

ホームディレクトリのパーミッション

ここでは、ホームディレクトリに「rwx———」というパーミッションが設定されている。これは、持ち主のユーザーだけに「ホームディレクトリ以下のファイルやディレクトリの一覧の取得」、「ホームディレクトリ以下に新しいファイルやディレクトリを作成」、「ホームディレクトリ以下のファイルやディレクトリの編集(実行)」が許可されていることを意味している。

ファイルにおけるパーミッションは直感的に理解しやすかったと思うが、ディレクトリに対するパーミッションはちょっと難しく感じるかもしれない。「ディレクトリとは、ディレクトリ以下に配置するファイルやディレクトリの名前を書き込んだファイルである」と思ってもらうとわかりやすいだろう。

そう考えると(と言うか、実際そうなのだが)、ディレクトリに「r」を指定→ディレクトリの中身を読める→ディレクトリ以下のファイルやディレクトリの一覧が見える、ということになる。「w」に関しても同様に、ディレクトリに「w」の指定→ディレクトリの中身に書き込みができる→ディレクトリ以下に新しくファイルやディレクトリのエントリを追加できる、というわけだ。

「x」に関しては、ディレクトリ以下のファイルの編集を許可するか否かという指定なので、このまま覚えるしかないかもしれない。ちなみに、ディレクトリに「w」を許可して「x」を許可しなかった場合、ディレクトリ以下に新しくファイルやディレクトリを追加することはできない。

この辺りを理解しておけば、一般ユーザーが作成するディレクトリのパーミッションが次のようになるのは何となく理解できるだろう。

ユーザーが作成するディレクトリのパーミッション

これはCentOS 7の例だが、この場合ユーザー名が「daichi」、グループ名が「daichi」であり、ほぼこのユーザー専用の状態になっているので、パーミッションは「rwxrwxr-x」になっている。Mac OS Xのように、ここが「rwxr-xr-x」になっているケースもある。

一方、システムの設定ファイルが格納されたディレクトリのパーミッションになると、次のように「rwxr-xr-x」が設定されている。

システムの設定ファイルのパーミッション

これは、基本的にrootだけが編集できる設定だ。ルートディレクトリのように、rootですら編集する必要がない場所はさらに規制が厳しくなり、次のように「r-xr-xr-x」が設定される(「別にrootが書き込めても良い」という判断で「rwxr-xr-x」になっているシステムもある)。

ルートディレクトリのパーミッション

同様に、コマンドなどが格納されたディレクトリも基本的に書き換える必要がないので「r-xr-xr-x」(もしくは「rwxr-xr-x」)になっている。

コマンドが納められたディレクトリのパーミッション

ディレクトリのパーミッションは直感的には理解しにくいが、それほど設定パターンは多くないので、システムをcdコマンドで移動して周り、典型的なパーミッションだけ覚えておくと良いだろう。

今回のおさらい

今回のおさらいは、次のとおりだ。

  • 「ls -ld」でディレクトリのパーミッション情報を表示
  • ファイルの「r」は読み込み許可
  • ファイルの「w」は書き込み許可
  • ファイルの「x」は実行可能指定
  • ディレクトリの「r」は配下のファイルやディレクトリの一覧取得許可
  • ディレクトリの「w」は配下に新しくファイルやディレクトリのエントリを追加する操作許可
  • ディレクトリの「x」は配下のファイルやディレクトリの編集(実行)許可

特にディレクトリのパーミッションは意味を忘れがちなので、いろいろなディレクトリの設定を見て、慣れておいていただきたい。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【特別企画】 管理者にお馴染みの

【特別企画】 管理者にお馴染みの"バックアップ問題"、Win/Linux混在環境の担当者が出した答えとは?

地味ながらも面倒なうえ、ミスが許されないために精神的苦痛も伴うシステム管理作業。それがバックアップではないだろうか。コスト抑制のためLinuxを使って自力で構築したが、運用に関してもお金をかけられず、シェルスクリプトを組んでバックアップを行う。しかし、細かい作業にそれなりの人足をとられるため結果的にコストが嵩むうえ、実のところ正常にリストアできるかも怪しい。…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
対話システムをつくろう! Python超入門
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
PowerShell Core入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る