Mac OS X(Mac OS X Server)を使い始めると、つい先日まで書き込めたディレクトリにファイルが書き込めなくなっていたり、削除しようにも削除できなくなっていたなんて事があります。本来ならこんな事は無いはずなのですが、そのディレクトリのオーナーやグループが変わってしまっていたりすることがあるようです。これは特に何かソフトをインストールするときに起こるようで、ちゃんとオーナーの変更やアクセス権を変更してあげなければ、期待通りの動作をしてくれません。そこでTerminal.appからアクセス権の変更をします。以下の操作は、rootユーザが設定されていないと出来ません(sudoと言うコマンドでも可能ですが、私はこの方法をとっています)。今回は、私のホームディレクトリ内の【Sites】フォルダのアクセス権変更を例にとって話を進めます。
- /Applications/Utilities/Terminalを起動します。
するとウインドが開き下記のような行が1行表示されます。
[localhost:~] david%
そこで【su】と入力しリターンキーを押すと、パスワードの入力を求められますので、rootユーザのパスワードを入力して、リターンキーを押します。
[localhost:~] david% su
Password:
[localhost:/Users/david] root#
プロンプトが【david%】から【root#】に変わったのが確認できます。また現在いるディレクトリについても【:~】から【:/Users/david】に変わっていることがわかります。【:~】とはterminalを起動したときのユーザの、ホームディレクトリを表します。また【:/Users/david】とはUsersと言うディレクトリの中のdavidと言うディレクトリにいることを表しています。
- ここで【ls -l】と言うコマンドを入力します。【ls】と言うコマンドは現在いるディレクトリの中身を一覧してくれます。また【-l】と言うオプションは、情報のアクセス権を同時に一覧してくれます。
[localhost:/Users/david] root# ls -l
total 8
-rw-r--r-- 1 david staff 4 Nov 15 2000 .CFUserTextEncoding
drwx------ 2 david staff 264 Sep 15 20:48 .Trash
drwx------ 7 david staff 194 Sep 16 16:24 Desktop
drwx------ 2 david staff 24 Nov 15 2000 Documents
drwx------ 17 david staff 534 Sep 16 12:15 Library
drwx------ 2 david staff 264 Nov 16 2000 Movies
drwx------ 2 david staff 264 Nov 16 2000 Music
drwx------ 2 david staff 264 Nov 16 2000 Pictures
drwxr-xr-x 3 david staff 264 Nov 16 2000 Public
drwx------ 4 root admin 92 Feb 14 2001 Sites
[localhost:/Users/david] root#
トータルで8件の情報が一覧されています。次の行の最初にある【-rwx-r--r--】と言う部分がアクセス権です。この内最初の文字は【-】ファイルか、【d】ディレクトリかを表しています。次は【rwx】が3組並びます。ここで【-】になっている部分は権利がないと言うことです。【r】はリード(読むことが出来る)【w】はライト(書き込みが出来る)【x】は検索(検索することが出来る)、いわゆる実行権限を表します。3組の内1組目はオーナー(今回は私のはず)、2組目はグループ、3組目はその他のアクセス権を表します。次にくる数字は内包されるファイル、ディレクトリの数(見えないファイルも含まれる)を表します。次がオーナーで、その次がグループです。そして容量、作成日付、最後がファイル、ディレクトリの名前になります。
ここで問題の箇所が見て取れます。最後の行の赤い部分がそうです。オーナがrootでグループがadmin、そしてアクセス権はオーナー以外全くありません。これではここに私は何も書き込めないどころか、中身を見ることも出来ません。
アクセス権の読み方と書き方:【r】を4、【w】を2、【x】を1と置き換えて考えてください。【-】はゼロとしておきます。そして一組づつの和を出し、3組の和を3桁に並べます。たとえば一番下の赤い部分【rwx(7)---(0)---(0)】については、700となるわけです。その上の行の【rwxr-xr-x 】は755となります。
そこでアクセス権、オーナー、グループの変更を行います。アクセス権については【chmod】、オーナ変更には【chown】、グループの変更には【chgrp】と言うコマンドを使用します。
『ここで今回のコマンドの説明』
コマンド内の【_】はスペースを表しています。
(1)chmod:mod_(アクセス権、3桁の数字)_(変更するディレクトリか、ファイル名)
この時複数のファイル、ディレクトリを列挙することが出来ます。複数入力することで、列挙した全てのファイル、ディレクトリのアクセス権変更が出来ます。
(2)chown:chownは次のこうせいで入力します。chown_(変更後のオーナー名)_(変更するディレクトリかファイル名)
chownも複数のファイル、ディレクトリを列挙することが出来ます。複数入力することで、列挙した全てのファイル、ディレクトリのオーナー変更が出来ます。
(3)chgrp:chgrpは次の構成で入力します。chgrp_(変更後のグループ名)_(変更するディレクトリかファイル名)
chgrpも複数のファイル、ディレクトリを列挙することが出来ます。複数入力することで、列挙した全てのファイル、ディレクトリのグループ変更が出来ます。
- 最初にアクセス権の変更をします。本来このディレクトリのアクセス権は【rwxr-xr-x(755)】です。そこで下記のように入力して、リターンキーを押します。また確認のため【ls -l】を入力してリターンキーを押します。
[localhost:/Users/david] root# chmod 755 Sites
[localhost:/Users/david] root# ls -l
total 8
-rw-r--r-- 1 david staff 4 Nov 15 2000 .CFUserTextEncoding
drwx------ 2 david staff 264 Sep 15 20:48 .Trash
drwx------ 7 david staff 194 Sep 16 16:24 Desktop
drwx------ 2 david staff 24 Nov 15 2000 Documents
drwx------ 17 david staff 534 Sep 16 12:15 Library
drwx------ 2 david staff 264 Nov 16 2000 Movies
drwx------ 2 david staff 264 Nov 16 2000 Music
drwx------ 2 david staff 264 Nov 16 2000 Pictures
drwxr-xr-x 3 david staff 264 Nov 16 2000 Public
drwxr-xr-x 4 root admin 92 Feb 14 2001 Sites
[localhost:/Users/david] root#
赤い部分が変更された所です。【rwx(7)r-x(5)r-x(5)】に変更されたことがわかります。この時のアクセス権はオーナーが読み書きおよび実行権限があり、グループとその他は読みと実行権限が有ることになります。
- 次にオーナーの変更をします。下記のように入力し、リターンキーを押します。ここでも確認のため【ls -l】を入力してリターンキーを押します。
[localhost:/Users/david] root# chown david Sites
[localhost:/Users/david] root# ls -l
total 8
-rw-r--r-- 1 david staff 4 Nov 15 2000 .CFUserTextEncoding
drwx------ 2 david staff 264 Sep 15 20:48 .Trash
drwx------ 7 david staff 194 Sep 16 16:24 Desktop
drwx------ 2 david staff 24 Nov 15 2000 Documents
drwx------ 17 david staff 534 Sep 16 12:15 Library
drwx------ 2 david staff 264 Nov 16 2000 Movies
drwx------ 2 david staff 264 Nov 16 2000 Music
drwx------ 2 david staff 264 Nov 16 2000 Pictures
drwxr-xr-x 3 david staff 264 Nov 16 2000 Public
drwxr-xr-x 4 david admin 92 Feb 14 2001 Sites
[localhost:/Users/david] root#
オーナーがrootからdavidに変更できました。
- 次にグループの変更をします。下記のように入力し、リターンキーを押します。ここでも確認のため【ls -l】を入力してリターンキーを押します。
[localhost:/Users/david] root# chgrp staff Sites
[localhost:/Users/david] root# ls -l
total 8
-rw-r--r-- 1 david staff 4 Nov 15 2000 .CFUserTextEncoding
drwx------ 2 david staff 264 Sep 15 20:48 .Trash
drwx------ 7 david staff 194 Sep 16 16:24 Desktop
drwx------ 2 david staff 24 Nov 15 2000 Documents
drwx------ 17 david staff 534 Sep 16 12:15 Library
drwx------ 2 david staff 264 Nov 16 2000 Movies
drwx------ 2 david staff 264 Nov 16 2000 Music
drwx------ 2 david staff 264 Nov 16 2000 Pictures
drwxr-xr-x 3 david staff 264 Nov 16 2000 Public
drwxr-xr-x 4 david staff 92 Feb 14 2001 Sites
[localhost:/Users/david] root#
グループがadminからstaffに変更できました。
- 最後にTerminal.appを終了します。終了するためには下記のように入力します。一度【exit】と入力することで特権モードから抜けます。次に【exit】と入力することで、 ログアウトします。
[localhost:/Users/david] root# exit
exit
[localhost:~] david% exit
logout
[Process completed]
最後の行[Process completed]が出力されてくるまでTerminal.appを終了させないようにしましょう。いきなり終了させると、コンピュータはあなたからの指示を待ったままになっています。重大なエラーがすぐに起きると言うわけではありませんが、正式な手順としてそうした方が無難です。
以上でアクセス権の変更が終了しました。これで今回設定したディレクトリの中に何かを書き込んだり、中身の削除が可能になります。