質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.04%

Linux(UNIX)のchmodコマンドとchownコマンドをどのように使い分けているのか知りたい

解決済

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,316

score 97

質問・実現したいこと

Linux(UNIX)のコマンドで, chmodchownというコマンドがあります。
これらのコマンドは, ツールをインストールした時にパーミッション等を変更するために用いられるはずです。

しかし, これらのコマンドを使っていると
chmodだけで良いのではないか?」
という疑問を持つようになりました。

何故ならば, 実現したいことはファイルの読み・書き・実行であり, グループやオーナーを変更したところで直接の解決になっていないと考えたためです。
(確かにグループやオーナーを自身に変更すれば実行等ができるようになりますが, chmodでパーミッションを変更すれば同じように実行等ができるので, chmodで代用できると考えています)

しかし, 調べてみるとchmodchownの定義のみしか書かれておらず, その使い分けについて具体的に言及されている記事を発見することができませんでした。

そのため, chmodchownコマンドがどのように使い分けられているのかを教えていただけないでしょうか?

試したこと・確認したこと

コマンドの定義

これらのコマンドについて調べると, つぎのような用途で使用されると書いてありました。

コマンド名 説明
chmod ファイルのパーミッションを変更する
chown ファイルの所有者やグループを変更する

実際のファイルのパーミッション等の調査

ls -lコマンドでパーミッション等を確認できるので, 確認しました。

$ ls -l
合計 1188
-rw-r--r--.   1 vagrant docker    170  3月 21 02:19 README.md
drwxr-xr-x.   2 root    root       20  3月 21 09:34 client
~~~ 以下略 ~~~

ここから, つぎのことが分かります。

パーミッション オーナー グループ
644 vagrant docker
755 root root

ここで, パーミッションがファイルの編集や閲覧の権限を設定しているのはわかりますが, グループやオーナーの存在意義が見出せませんでした。
chownでオーナーやグループを変更せずとも, chmodでパーミッションを変更してしまえばそれで事足りるからです。

Linux(UNIX)ではユーザをグループで管理しているので, ファイルにオーナーやグループを付与するのは分かります。しかし, わざわざchownというコマンドを用意して, ファイルごとのオーナーやグループを変更する必要があるとは思えないのです......

なにとぞ, 回答よろしくお願いします!

参考にしたサイト

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+2

chmodだけだと、ユーザーAには読み書きさせたいが、ユーザーBには読み取りだけ、それ以外のユーザーには読み書き不可、みたいなことが出来ません。

あと、ファイル所有者しか出来ないこともありますね。例えば、/tmpの下に作ったファイルの削除とか、chmodとか。

そのシステムに、root以外のユーザーが1つしか無いので有れば、仰るとおり。
普通そんなシステムはないです。システム系ユーザー(人間がログインしないもの)だけでもたくさんあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/21 21:23

    回答ありがとうございます。

    > そのシステムに、root以外のユーザーが1つしか無いので有れば、仰るとおり。
    > 普通そんなシステムはないです。システム系ユーザー(人間がログインしないもの)だけでもたくさんあります。

    これが本質でした。
    私自身, root以外のユーザが1つしかないローカルマシンで細々と開発をしている井の中の蛙のような状態だったので, 視野が狭くなっていました。
    確かに, システムの運用を考えると複数ユーザが存在しているはずですよね。

    普段は無闇に`sudo`や`chmod`を使っていましたが, これは現実的な使い方ではないようですね......

    キャンセル

  • 2019/03/21 21:56

    人間のユーザーが一人しかいないシステムは、普通よくあるでしょうね。
    > 確かに, システムの運用を考えると複数ユーザが存在しているはずですよね。
    /etc/passwdの中を見たことは無いですか?

    例えば、Webシステムに脆弱性があり、apacheユーザー権限で何かされた場合にも、他に被害が及ばないようにするとかを考えると、どのファイルをどのユーザー所有、グループ所属にして、どういうアクセス権を与えるかは、よく考えて設計するか、一般的なやり方に倣っておく必要があります。
    もしくはSELinuxできちんと設計するか(このあたり苦手です)。

    セキュリティ対策はこれ1つで100%と言う物は無いので、可能な対策はできる限り行います(多重防御)。

    そういう心配をしなくて良いシステムの場合は、「other権限は俺のための物」という考えでchmodのみで運用することも出来ますが、勉強のために、普通のやり方をした方が良いと思います。

    キャンセル

  • 2019/03/23 16:38

    > /etc/passwdの中を見たことは無いですか?
    今確認してみると, 確かに複数ユーザがいますね。
    意識していないところでも多くのユーザがいるんですね。
    システムにおいて, アクセス権の設計が重要なのも頷けます。

    また, SELinuxについてあまり詳しく調べたことが無かったので, いい機会になりました。サービス毎にアクセス権を管理することができるんですね。知りませんでした.....
    すぐに慣れるのは難しそうですが, 頭の片隅には置いておこうと思います。

    > そういう心配をしなくて良いシステムの場合は、「other権限は俺のための物」という考えでchmodのみで運用することも出来ますが、勉強のために、普通のやり方をした方が良いと思います。

    otnさんの仰る通りですね。今後はchmodだけを無闇に使用することは控えます。
    付加情報まで教えていただき, ありがとうございました。勉強になりました。

    キャンセル

checkベストアンサー

+1

オーナーが自分以外の場合に、自分しか参照/編集できない設定はできません。そのためのオーナー設定ですね。
グループも同様、自グルーブ以外、アクセスできない設定にする場合に必要となります。

rwxrwxrwx とした時の、最初の rwxはオーナーのアクセス権で、次(真ん中)のrwx はグループのアクセス権です。 (最後のその他、一般)

作成する時は、一ユーザーの権限で作成したが、作成後は、rootとかの特定のユーザーでしか、アクセスしないような設定にしたい場合、変更する事が多いと思います。

chmod は、完成までは、自分以外のアクセスは認めないが、完成したら、他のユーザーも使ってイイよとかいう時に、変更しますね。 ディレクトリで、xをオフすると、ディレクトリの中に入れないとか、r をオフだと、ディレクトリ内のファイル一覧が取得できないとか、、色々とあります。 (1人で使っているとそこまで、使い分ける事は少ないが)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/21 21:16

    回答ありがとうございます。
    具体的に書かれていて分かりやすかったです!

    > オーナーが自分以外の場合に、自分しか参照/編集できない設定はできません。そのためのオーナー設定ですね。
    > グループも同様、自グルーブ以外、アクセスできない設定にする場合に必要となります。

    基本的に1つのローカルマシンで1つのアカウントのみで開発していたので, 全て`sudo chmod`でアクセス権を755にしていました。

    他の方に指摘されてハッとなったのですが, 1つの共有資源を複数人で利用する場合はグループという概念が必要になるんですよね。
    完全に理解不足でした。

    キャンセル

0

「自分の作ったファイルを自分自身では好きなように書き換えたいが他の人にいじられたくはない。このファイルは俺だけがいじれるもの。」という設定をしたいというのはごく自然な欲求だと思うのですが、あまり想像つかないですかね。一つのマシンを多くの人間が使っている状況では特に切実だと思いますが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/21 21:09

    回答ありがとうございます。

    基本的に1人で1台のPCを使用しているので, そのような想像ができませんでした。

    確認なのですが, 同じローカルマシンを使用しているAさんとBさんがいて, 2人ともアクセスできる共有資源`file`があるとします。
    この時, Aさんのアカウントで`chmod 755 file`を実行した場合, Bさんのアカウントから見てもその共有資源`file`のパーミッションは755に変更されているということでしょうか?

    仮にそうだとした場合, その`file`にAさんとBさんの2人以外がアクセスできないように設定するには, ファイルの所属グループをAさんとBさんのみが所属するグループに変更してあげれば良いと言うことでしょうか?

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る