お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2017-01-30 14:25:54

Ilya
新しいメンバ
登録日: 2017-01-25

linuxにおけるrwxのアクセス権限の概念について

 コマンド ls -l において -rw-rw-r-- とパーミッションに関して表示してありました。左からファイルの所有者、グループ、第三者のパーミッションということですが、はっきりと理解ができません。

 ファイルの所有者とは、このファイルを管理している自分ということで間違えないのでしょうか。また、グループと第三者に関してはこの場合どのような人のことなのでしょうか?
またパーミッションにまつわる知っておくべきこと等ございましたら是非よろしくお願いしたします。

 勉強が追いついておらず誠に申し訳ないのですが、よろしければ是非お教えください。

オフライン

 

#2 2017-01-30 22:35:00

santaomura2
メンバ
From: 札幌市
登録日: 2011-10-25

Re: linuxにおけるrwxのアクセス権限の概念について

ネット・書籍さまざま解説があると思います。そのなかのネットのひとつをご紹介しておきます。
http://www.atmarkit.co.jp/ait/articles/ … 002_2.html

わたしは、水口克也著「これならわかる!Linux入門講座第2版」という本で勉強しました。
が、よる年波もあり(現在67歳)なかなか身につかないのがはがゆいところです。
かつては「Ubuntu Magazine Japan」という結構面白い雑誌もありましたがいまはありません。
興味があれば、バックナンバーすべてウェブ上に公開されていますので、ご覧になることもできます。
http://ubuntu.asciimw.jp/cate/5010/

いずれにしましても王道はなく、自分で地道に勉強していくのが本筋かと思います。

オフライン

 

#3 2017-01-30 22:40:32

misha
メンバ
登録日: 2016-11-03

Re: linuxにおけるrwxのアクセス権限の概念について

ファイルの所有者とは、このファイルを管理している自分ということで間違えないのでしょうか。

はい。概ねその通りです。
より厳密に言えば、 -rw-rw-r--の右に表示されるユーザーが所有者です。
この点については後述いたします。

また、グループと第三者に関してはこの場合どのような人のことなのでしょうか?

ごく簡単に言ってしまいますと、グループは、ファイルやディレクトリの、そのグループパーミッションが適用されるユーザーの属性です。
などと言ってしまうと、同義反復のようになってしまい、説明として不十分でしょうから、実際の操作で説明いたします。
bash(コンソール画面)上で、

コード:

    id

と打ってみてください。
uidのカッコ内にご自身のユーザー名、そしてgidにもご自身のユーザー名が表示されているはずです。
このまま

コード:

    touch xxx

と打ってみてください(xxxは任意の存在しないファイルとします)
これでxxxという0バイトのファイルが作成されますが、

コード:

    ls -l xxx

と打ってください。
-rw-rw-r 1 の次に、ご自身のユーザー名が2つ並んでいるはずです。
これは左側がユーザー名、右側がグループ名です。

先ほどのidで、ご自身のユーザー名とグループ名が同じであることを確認されたかと思いますが、そのために同じ名前になっており、これだけでは直感的に何のことか分からないかと思います。
そこで、実際に試してみることにします。

念のため汚してもいいUbuntu環境を1つ用意した上、例えば、1つの任意のグループを作成します。

コード:

    sudo groupadd hogehoge

これでグループhogehogeが作られます。
次に、グループhogehogeに属するユーザーhogeを作成します。

コード:

    sudo useradd -m -g hogehoge hoge

作成完了したら、

コード:

    id hoge

と打ってください。
hogeのgidのカッコ内がhogehogeになっているはずです。
同じく、グループhogehogeに属するユーザーfugaを作成します。

コード:

    sudo useradd -m -g hogehoge fuga

これも、

コード:

    id fuga

で確認すると、gidがhogehogeになっているはずです。
最後に、今度はhogehogeに属さないユーザーpiyoを作成します。

コード:

    sudo useradd -m piyo

このpiyoをidコマンドで確認すると、今度はご自身のユーザーと同様、gidがpiyoになっているはずです。

まず、

コード:

    sudo -u hoge touch /tmp/yyy

(ただし/tmp/yyyは任意の存在しないファイルとします)
と打って、ユーザーhogeとして、/tmp/yyyを作成します。
すると、-rw-r--r-- 1 hoge hogehoge のような状態で/tmp/yyyが作成されたはずです。
念のため、もう一度
sudo -u hoge touch /tmp/yyy
と打ってみてください。
コマンドは問題なく終了し、更新日時も変わった、つまり上書きされたはずです。
次は、同じ要領で、ただしユーザーfugaで実行します。

コード:

    sudo -u fuga touch /tmp/yyy

すると「touch: '/tmp/yyy' に touch できません: 許可がありません」とエラーメッセージが表示されるはずです。
これは書き込み権限がないために、アクセス拒否をされたことによるエラーです。
そこで、/tmp/yyyにグループの書き込み権限を与えます。

コード:

    sudo chmod g+w /tmp/yyy

このコマンドを打った後、

コード:

    ls -l /tmp/yyy

で、状態を確認すると、-rw-rw-r-- 1 hoge hogehoge と、グループの書き込み権限が与えられたはずです。
このままもう一度、

コード:

    sudo -u fuga touch /tmp/yyy

と打ってください。
今度は正常に上書きができたはずです。

以上、グループについて、ファイル操作レベルでの説明をいたしました。
グループについては、少しここで話を止めます。

さて次に、今度はユーザーpiyoで同じことを試してみます。

コード:

    sudo -u piyo touch /tmp/yyy

「touch: '/tmp/yyy' に touch できません: 許可がありません」のエラー表示がされたはずです。
同じグループhogehogeに属さないユーザーpiyoは、これだけでは書き込み権限がまだありません。
そのため、piyoにも書き込み権限を与えることにします。

コード:

    sudo chmod o+w /tmp/yyy

これで/tmp/yyyの状態を確認すると、-rw-rw-rw- 1 hoge hogehoge となります。
もう一度、

コード:

    sudo -u piyo touch /tmp/yyy

と打つと、今度は上書きに成功しているはずです。
この状態で、ご自身のユーザー権限で同じくtouchコマンドを打ってみてください。

コード:

    touch /tmp/yyy

当然ながら、上書きできます。
つまり、先に仰っていた「第三者」すなわち「誰でも」書き込みができる状態となっています。

以上は、グループと第三者の書き込み権限ついて説明いたしましたが、さらに興味があれば、読み出し権限(r)や実行権限(x)についても、同様に試されるとよいかと思います。
なお、実行権限(x)と簡単に述べましたが、ディレクトリのxは権限のニュアンス(というより振る舞い)が少々異なります。ただ、話が細かくなるので、ここでは省略します。

このコメントでは、唐突にいくつかのコマンドを紹介いたしましたが、これらでもし、不明な点がありましたら、ご質問ください。
ただし、

またパーミッションにまつわる知っておくべきこと等

に関して、とくに上記コマンドの内
・chmod
それと、
・chown (所有者の変更)
は、知っておいたほうがよいかと思います。
その他のコマンドは、おそらくこれらほど頻繁に使うことはなく、必要に応じてリファレンスを見ながら操作する程度かと思います。


また、これらパーミッション操作のもう一方の側には、ユーザー・グループ操作があり、当然こちらも知っておくべき事柄ですが、話が広がり過ぎてしまうので、このコメントでは省略します。
ただし、先ほどから多く出てきた、
・sudo (あるいはsuもありますが、sudoほど多く使うことはありません)
はユーザーの操作です。
ちなみに先ほど、ユーザー作成コマンドにuseraddを使いましたが、ubuntuでは一般にadduserコマンドを使用します。
そこをあえてuseraddにしたのは、usermodコマンドも、できたら紹介しようと思ったからです。
何れにせよユーザー側の権限をコントロールする、という観点から、これらコマンド内容を調べれば、基本的にはさほど難解なものでないと思います。


なお、先ほどの「汚した部分」の後片付けですが、

コード:

sudo rm /tmp/yyy
sudo userdel -r hoge
sudo userdel -r fuga
sudo userdel -r piyo
sudo groupdel hogehoge

で、一応きれいになります。

オフライン

 

Board footer

Powered by FluxBB