69
権限を管理する

コマンドラインはMacを操作する最も直感的な方法ではないかもしれませんが、多くの場合、最も高速です。特にアクセス権に関しては顕著です。これらの裏で行われる設定は、ファイルやフォルダを開く、変更する、削除する権限を決定します。Finderの「情報を見る」コマンド(command + I)を使ってファイルのアクセス権を確認することもできますが、Unixが提供するすべての設定を確認できるわけではありません。そのため、必要に応じて確認する必要があるかもしれません。

ターミナルが時間を節約するとき

例えば、あなたが25台のMacを備えたコンピュータラボを担当する教師だとしましょう。各コンピュータに5人の生徒用の標準アカウントを作成し、合計125人の生徒アカウントを作成しています。生徒たちがラボを使い始めて間もなく、大恐慌時代の経済学を研究している生徒たちとは思えないほど、クスクス笑いながら必死にタイピングしていることに気づきます。あなたは何気なく部屋の端まで歩いて行き、机の一つに向かってくるりと向きを変えます。

ああ、iChatだ!自分のファッションセンスについて書かれたコメントにひどく落ち込み、生徒たちに二度とこのアプリを使わせないと誓う。選択肢はいくつかある。すべてのMacのアプリケーションフォルダからiChatを削除するという方法もある。しかし、コンピュータクラブが放課後に教室で集まり、メンバーたちはいつもiChatでコミュニケーションを取っている。各アカウントにペアレンタルコントロール(「お子様に安全なMac」を参照)を設定するという方法もある…ただし、同じ作業を124回も繰り返さなければならない。

あるいは、Macでターミナル(/アプリケーション/ユーティリティ)を起動し、簡単なコマンドを入力して、標準アカウント所有者のiChat実行権限をオフにすることもできます(コンピュータクラブのメンバーは全員管理者アカウントを持っています)。この作業を24回繰り返すだけで済みます。

権限の中身を覗いてみよう

ターミナルでiChatの所有権と権限情報を表示するには、

ls

コマンドは次のようになります:

ls -l /アプリケーション/iChat.app/コンテンツ/ MacOS

その

-l

フラグは 長いリスト (ディレクトリ内の各項目(この場合は単一のiChatファイル)に関する追加情報を示す拡張表示)を生成します。ターミナルの応答には次のようなものが含まれます。

	合計 4400 -rwxrwxr-x 1 ルート管理者 2252792 3 月 20 日 21:07 iChat	

何ですか

-rwxrwxr-x

? アプリケーションの権限を表す Unix の略語が、役に立つはずの列にリストされています (スクリーンショットを参照)。

コードを解読する ls -al コマンドの出力結果の1行を以下に示します。ファイルモード列の文字は単なるランダムなものではなく、3つの異なる情報セットによって、誰が何を実行できるかが分かります。

• タイプ 行 の最初の文字はファイルの種類を示します。通常は

d

ディレクトリの場合、

l

シンボリックリンク(Unix版のエイリアス)の場合は、ハイフン(

-

) を使用します。

• ファイルモード ファイルタイプと一緒に9文字の文字列(この場合は

rwxrwxr-x

)。これは、コード化された形式で、その項目の実際のアクセス権を示します(下記の「ファイルモード コードのデコード」を参照)。

• 所有者 ターミナルの応答では、このファイルまたはディレクトリを所有しているユーザーのアカウント名も識別されます。通常は、そのファイルまたはディレクトリを作成したユーザーです。

OS X自体が所有権を持っていることを意味します。そのため、管理者であっても、通常はルート権限を持つディレクトリを削除することはできません。(Finderの「情報を見る」ウィンドウでは、所有権が「システム」と表示されている場合があります。これはAppleがルートを「システム」と呼んでいる、より優しく穏やかな表現です。)

• グループ 所有者の後に、このファイルまたはディレクトリを所有するグループの名前が続きます。

管理者

グループにはすべての管理者が含まれます。

• パス名 行の末尾 (ファイルのサイズと日付に続く) には、リストされているディレクトリを基準とした、このファイルまたはディレクトリのパスが続きます。

計画を立案する

さて、iChatの起動を阻止する作業に戻りましょう。iChatの権限を見てみると、

×

どのユーザーカテゴリでも、誰でもプログラムを実行できるという設定になっています。もしこれを受け入れるなら、あなたの任務は、これらの設定を変更して、あるアカウント所有者(管理者)はiChatを実行できるが、別のアカウント所有者(標準)は実行できないようにすることです。

ご覧のとおり、各ファイルの権限セットには所有者とグループの両方が設定されます。iChatファイルの所有者はadminです。当然のことながら、adminクラスのユーザーはadminグループに属しているため、管理者およびadminグループのメンバーであれば問題なくプログラムを実行できます。

権限に関して言えば、標準アカウントの所有者は「その他全員」のカテゴリに該当します。このタスクを完了するには、その他全員のiChat実行権限をオフにするだけです。これにより、ファイルの所有者(root)とそのグループのメンバー(admin)のみがファイルを実行(つまりプログラムを開く)できるようになります。その他のアカウント所有者、つまり標準グループのメンバーは残念ながらこの権限を利用できません。授業に集中して聞く必要があります。

chmod でまとめる

ファイルモード(パーミッション)を変更するためのUnixコマンドは

chmod

( change mode の略 )。iChatファイルで使用するコマンドは次のとおりです。

chmod ox /Applications/iChat.app/Contents/MacOS/iChat

仕組みは次のようになります。コマンドラインは当然ながら、

chmod

コマンド自体で始まり、iChat ファイルのパス名で終わります。

間には、モード変更句の 3 つの部分を構成する 3 つの文字があります。

最初の文字は、

o

は、変更が影響を与えるユーザーのクラスを表します。この場所に次のように入力できます。

あなた

ファイルの所有者を表すために、

グラム

そのグループのために、

o

他の人(他の全員)のために、または

1つの

3 つのクラスすべてを一度に示すことができます。

2 番目の文字は実行する操作を表します。ほとんどの場合、プラス記号 (

+

) またはハイフン (

-

) 最後の文字は、変更する権限を指定します。

r

読むために、

書き込み用、または

×

実行のため。

それで、完全な

chmod

上記のコマンドには、「他のユーザーの実行権限を削除する」とありますが、これはまさにあなたがやりたいことです。

許可を得る 実際に試してみる場合は

chmod

ただし、上記のコマンドを実行すると、エラーメッセージ(「操作は許可されていません」)が表示されます。アイテムの権限を変更できるのは所有者のみであり、あなたはiChatの所有者ではありません。

では、どうやってこの問題を解決すればいいのでしょうか?

須藤

コマンド。技術的には、

須藤

はsuperuser do の略で 、 root(スーパーユーザー)アカウントでログインしているかのように任意のコマンドを実行できます。rootアカウントを持っている場合、またはsudoを使ってrootアカウントをシミュレートできる場合は、iChatのようにアプリケーションディレクトリ内の項目の変更を禁止する設定も含め、あらゆる権限設定を上書きできます。

ついに、あの厄介なiChatアプリケーションファイルの権限を変更する準備が整いました。

須藤

コマンドライン全体の先頭に

須藤

スペースを入れます。次のように入力します。

sudo chmod ox /Applications/iChat.app/ Contents/MacOS/iChat

このコマンドは次のように分類されます。

• 

須藤

: 「私に、何でも好きなことができる力を与えてください。」

• 

chmod

:「ファイルモードを変更します…」

• 

: 「…このように:他のユーザーの実行権限を削除します…」

• 

/アプリケーション/iChat.app/コンテンツ/MacOS/iChat

: 「…Applications/iChat.app/Contents/ MacOS フォルダ内にある iChat というファイルから。」

それから

須藤

管理者パスワードの入力を求められます。これは、あなたが悪さを企む中学1年生ではないことを確認するためです。これで、管理者以外のユーザーがiChatを開こうとすると、Dock内でアイコンが一度だけ跳ねるだけで、それ以上は何も起こりません。iChatの権限を元の状態に戻すには、同じコマンドを使用しますが、ハイフンをプラス記号に置き換えます。例:

sudo chmod o+x /Applications/iChat.app/ Contents/MacOS/iChat

OS Xの「アクセス権の修復」機能が実行されるたびに(Mac OS Xアップデートをインストールするたびに自動的に実行される場合と、ディスクユーティリティを使用して手動で実行される場合)、iChatは元のアクセス権設定に戻ります。コマンドを再実行する必要があります。

ファイルモードコードをデコードする

Unixのパーミッションを理解するのに秘密のデコーダーリングは必要ありませんが、 ファイルモードコードについて理解しておく必要があります 。ターミナルを使ってファイルのパーミッションを確認する際には、必ずこの9文字のファイルモードセクションが表示されます。

コードの3つのサブカラムは、所有者、グループ、その他3つのカテゴリーの人物に対応しています。各シーケンス内の3つの文字は、読み取り(

r

)、 書く (

)、実行(

×

) 権限は、この個人またはグループがこのファイルまたはディレクトリに対して持っている権限です。ハイフン (

-

)は、「この人にはこの種のアクセスが許可されていません」という意味です。

本記事は、 David Pogue 著の『Mac OS X: The Missing Manual, Tiger Edition 』 (O'Reilly Media の許可を得て 2005 年に転載) を基に作成されました 。

読み取りアクセス ファイルへの読み取りアクセスとは、誰かがファイルを開いて読むことができることを意味します。(iChatのようなプログラムの場合、実行するためにシステムがユーザーに代わってファイルを読み取る必要があります。)一方、ディレクトリ(フォルダ)への読み取りアクセスとは、ターミナルを使用している人が、次のようなコマンドを使用してその内容の一覧を見ることができることを意味します。

ls

書き込みアクセス: ファイルへの書き込みアクセスとは、誰かがファイルを変更し、変更内容を保存できることを意味します。ディレクトリへの書き込みアクセスとは、フォルダに含まれるすべてのアイテム(ただし、サブディレクトリ内のアイテムは必ずしも対象ではありません)を追加、削除、および名前変更できることを意味します。

実行アクセス 実行アクセスは、アプリケーションに適用された場合、誰かがその特定のプログラムを実行できることを意味します。(実際、Unix はこの設定の状態をチェックすることで、アプリケーションと通常のファイルを区別します。)

[ 寄稿編集者のデイビッド・ポーグは 、ニューヨーク・タイムズ紙 の週刊テクノロジーコラムニストです。クリス・ストーンは 、『Mac OS X Panther in a Nutshell』 (O'Reilly、2004年)の共著者です。 ]