竹形誠司 ブログ
Mac mini サーバー化計画    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
ファイルのパーミッション
by 竹形 誠司[takegata]
MacOSXでは、ファイルやディレクトリごとにリード、ライト、実行の権限が設定されるようになっています。これは、誰かが作ったファイルを別のユーザーが勝手に削除したり、変更したりできないようにするためです。このような権限の設定をファイルのパーミッションといいます。

パーミッションの表示
ファイルのパーミッションを調べるには、lsコマンドに-l(ハイフン、エル)をつけて実行します。
mini:~ takegata$ ls -l
total 16
drwx------+ 10 takegata  takegata  340  3 25 09:05 Desktop
drwx------+  6 takegata  takegata  204  3 21 02:21 Documents
drwx------+  3 takegata  takegata  102  3 19 20:54 Downloads
drwx------+ 26 takegata  takegata  884  3 26 13:41 Library
drwx------+  3 takegata  takegata  102  3 19 20:03 Movies
drwx------+  4 takegata  takegata  136  3 23 00:05 Music
drwxr-xr-x  2 takegata  takegata  68  3 21 01:23 NewDir
drwx------+  4 takegata  takegata  136  3 22 12:51 Pictures
drwxr-xr-x+  4 takegata  takegata  136  3 19 20:03 Public
drwxr-xr-x+  5 takegata  takegata  170  3 19 20:03 Sites
-rw-r--r--  1 takegata  takegata    5  3 20 23:02 test.txt
lrwxr-xr-x  1 root      takegata  58  3 19 20:04 ユーサ゛登録 -> /Users/takegata/Library/Assistants/Send Registration.setup
mini:~ takegata$
各行の先頭の文字はファイル・ディレクトリの種類をあらわしています。dはディレクトリ、l(エル)はシンボリックリンク、-(ハイフン)は通常のファイルです。

次のrwxがパーミッションです。rはリード、wはライト、xは実行の権限で、-(マイナス)はその権限が無いことを表しています。パーミッションは、「ファイルのオーナー(作成者)」、「グループ(オーナーと同じグループに所属するユーザー)」、「その他のユーザー」のそれぞれに対して設定できます。最初のrwxが「オーナー」、次のrwxが「グループ」、最後のrwxが「その他のユーザー」に対するパーミッションです。たとえば、ファイルのパーミッションがrwxr-xr-xの場合は「オーナー」に対してリード、ライト、実行の権限が与えられていて、「グループ」と「その他のユーザー」にはリードと実行の権限だけが与えられます。

パーミッション表示の後に+記号が表示されている場合は、ファイルにACL(アクセスコントロールリスト)が関連付けられています。ACLは個々のユーザーに対して(パーミッションよりきめ細かく)アクセス権を設定するためのしくみです。パーミッション表示の後に@マークが表示されている場合は、ファイルに拡張属性が設定されていることを示しています。

その後の数字はディレクトリ内のファイルの数(隠しファイルを含む)です。通常のファイルの場合、この数字は1です。

オーナーとグループ
ディレクトリ内のファイル数の後に、オーナーとグループが表示されます。上の例では、「ユーザー登録」というシンボリックだけオーナーがrootでグループがtakegata、それ以外はオーナーとグループがともにtakegataになっています。

オーナーの変更
ファイルのオーナーを変更するにはchownコマンドを使います。たとえば、test.txtのオーナーをtakegataからrootに変更するには、次のコマンドを使います。
mini:~ takegata$ chown root test.txt
chown: test.txt: Operation not permitted
mini:~ takegata$
おっとだめでしたね。ファイルのオーナーをrootにするには管理者権限が必要でした。まず、suで管理者権限を取得します。
mini:~ takegata$ su
Password:
sh-3.2#
それからchownを実行します。
sh-3.2# chown root test.txt
sh-3.2#
ls -l でファイルのオーナーを確認します。
sh-3.2# ls -l test.txt
-rw-r--r--  1 root  takegata  5  3 20 23:02 test.txt
sh-3.2#
パーミッションの変更
ファイルのパーミッションを変更するにはchmodコマンドを使用します。アクセス権の指定は3桁の数字で、それぞれの桁がオーナー、グループ、その他のユーザーの権限を表します。権限は0〜7の数字でリード、ライト、実行の各権限を次のような2進数に見立てた値になります。
権限
--- 0
--x 1
-w- 2
-wx 3
r-- 4
r-x 5
rw- 6
rwx 7

たとえば、次のコマンドでtest.shファイルに権限751を指定した場合、オーナーがリード、ライト、実行の権限を持ち、グループがリードと実行の権限を持ち、その他のユーザーは実行権限だけを持ちます。
mini:~ takegata$ chmod 751 test.sh
権限の指定は数字ではなく+または-の記号とrwxの文字で行うこともできます。たとえば、+wを指定すると、オーナー、グループ、その他のユーザーに対して同時にライト権限が付与されます。-wを指定すると、ライト権限が取り消されます。

実行権の付与
UNIXと同様に、MacOSXでは実行権の付与されていないファイルはコマンドとして実行できません。たとえば、"ls -l" という内容のファイルをtest.shというファイル名で作ってみます。
mini:~ takegata$ echo "ls -l" > test.sh
このように、シェルで実行可能なコマンドをテキストファイルに記述したものをシェルスクリプトと呼びます。現在のディレクトリにあるシェルスクリプトを実行するには、ファイル名の頭に./(ドットスラッシュ)を付けてコマンドラインに入力します。ドットは「現在のディレクトリ」を表し、スラッシュは「その下にあるファイル(またはディレクトリ)」を表します。このファイルには、まだ実行権限を付与していないので権限エラーになります。
mini:~ takegata$ ./test.sh
-bash: ./test.sh: Permission denied
chmodコマンドで +x を指定することによってファイルに実行権限を付与することができます。
mini:~ takegata$ chmod +x test.sh
このコマンドで、test.shファイルのパーミッションは次のようになります。
mini:~ takegata$ ls -l test.sh
-rwxr-xr-x  1 takegata  takegata  6  3 27 04:41 test.sh
これで、このシェルスクリプトがコマンドとして実行できるようになります。
mini:~ takegata$ ./test.sh
total 24
drwx------+ 10 takegata  takegata  340  3 25 09:05 Desktop
drwx------+  6 takegata  takegata  204  3 21 02:21 Documents
drwx------+  3 takegata  takegata  102  3 19 20:54 Downloads
drwx------+ 26 takegata  takegata  884  3 26 13:41 Library
drwx------+  3 takegata  takegata  102  3 19 20:03 Movies
drwx------+  4 takegata  takegata  136  3 23 00:05 Music
drwxr-xr-x  2 takegata  takegata  68  3 21 01:23 NewDir
drwx------+  4 takegata  takegata  136  3 22 12:51 Pictures
drwxr-xr-x+  4 takegata  takegata  136  3 19 20:03 Public
drwxr-xr-x+  5 takegata  takegata  170  3 19 20:03 Sites
-rwxr-xr-x  1 takegata  takegata    6  3 27 04:41 test.sh
-rw-r--r--  1 root      takegata    5  3 20 23:02 test.txt
lrwxr-xr-x  1 root      takegata  58  3 19 20:04 ユーサ゛登録 -> /Users/takegata/Library/Assistants/Send Registration.setup
mini:~ takegata$
投稿:竹形 誠司[takegata]/2009年 03月 27日 05時 07分 /更新:2009年 03月 27日 05時 10分