
Ubuntu日本語フォーラム

ログインしていません。
コマンド ls -l において -rw-rw-r-- とパーミッションに関して表示してありました。左からファイルの所有者、グループ、第三者のパーミッションということですが、はっきりと理解ができません。
ファイルの所有者とは、このファイルを管理している自分ということで間違えないのでしょうか。また、グループと第三者に関してはこの場合どのような人のことなのでしょうか?
またパーミッションにまつわる知っておくべきこと等ございましたら是非よろしくお願いしたします。
勉強が追いついておらず誠に申し訳ないのですが、よろしければ是非お教えください。
オフライン
ネット・書籍さまざま解説があると思います。そのなかのネットのひとつをご紹介しておきます。
http://www.atmarkit.co.jp/ait/articles/ … 002_2.html
わたしは、水口克也著「これならわかる!Linux入門講座第2版」という本で勉強しました。
が、よる年波もあり(現在67歳)なかなか身につかないのがはがゆいところです。
かつては「Ubuntu Magazine Japan」という結構面白い雑誌もありましたがいまはありません。
興味があれば、バックナンバーすべてウェブ上に公開されていますので、ご覧になることもできます。
http://ubuntu.asciimw.jp/cate/5010/
いずれにしましても王道はなく、自分で地道に勉強していくのが本筋かと思います。
オフライン
ファイルの所有者とは、このファイルを管理している自分ということで間違えないのでしょうか。
はい。概ねその通りです。
より厳密に言えば、 -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
で、一応きれいになります。
オフライン