レンタルサーバー選びの迷いを解決!全力サポートします

Google or AdMax Promotion (srv)

コマンド ls -l で表示されるアクセス権「+」を消す手順

ターミナルで「ls- l」を実行して表示されたパーミッションの末尾に、
「+」が表示されている場合があります。
これは拡張ACLという属性が付与されていることを示しています。
ここでは「+」が表示される状態を作り、削除する手順をご紹介します。

 

「+」の表示は「-le」オプションで確認

最初にMacOSのカーネルはUNIXが採用されています。
UNIXにおいてアクセス制御を行う仕組みでは、
以下の3つの属性に対してアクセス制御(パーミッション)を指定することができます。

  • オーナー(所有者)
  • グループ
  • その他

それぞれに対して、書き込み・読み込み・実行の
各権限を設定することができます。(他にもありますが)

では、MacOSのファイル情報ウィンドウを見てみます。

以下のファイルはテキストエディットで作成したものです。
初期では以下のように権限が設定されています。

  • オーナー(自分): 読み/書き [rw-]
  • グループ(staff):読み出しのみ [r–]
  • その他(everyone):読み出しのみ [r–]
remove-plus_st01

テストファイル・拡張メタ・ACL情報の削除

 

さて上記を見て、3つの属性に対してアクセス権の設定ができますが、
Finderのファイル情報からはさらにユーザーの追加を行って権限設定ができます。

パーミッション設定先が3項目しかないところに、
オーナー以外の別のユーザーを追加してアクセス権の設定ができます。
これでは格納先がありません。

この格納先が拡張ACLデータです。
実際にユーザーを追加してみます。

remove-plus_st03

ユーザーアクセス権の追加・拡張ACL情報の削除

 

次に、以下のコマンドを実行します。

ls -le (ファイルパス)
※-le を付与することで、アクセス制御情報がある場合には表示されます。

以下のように、パーミッション情報の横に「+」が表示され、
追加した「macports」ユーザーの情報が表示されています。

-rw-r–r–+ 1 <userneme> staff 4 2 2 07:14 (ファイルパス)
0: user:macports allow read,readattr,readextattr,readsecurity

この情報が「+」の意味する拡張ACLデータです。

remove-plus_st04

+の表示と拡張ACL情報・拡張ACL情報の削除

 

 

プロモーション

Google or AdMax Promotion (srvpos)

コマンド ls -l で表示される「+」をターミナルから消す手順

さて、次は2ユーザーを追加して確認してみます。
「macports」ユーザーと「admin」グループを追加しています。

remove-plus_st05

ユーザー・グループ設定済・拡張ACL情報の削除

 

同様にls -le (ファイルパス)で確認します。
2行の拡張ACLデータが表示されます。

-rw-r–r–+ 1 <userneme> staff 4 2 2 07:14 /Users/<userneme>/Documents/memo.txt
0: user:macports allow read,readattr,readextattr,readsecurity
1: group:admin allow read,readattr,readextattr,readsecurity

上記キャプチャの状態から削除処理を行っています。

拡張ACLの個別削除

chmod コマンドに「-a#」オプションを付け、
削除対象の拡張ACL番号(0:macportsユーザー)を指定しています。

sudo chmod -a# 0 (ファイルパス)

実行後にls -le (ファイルパス)で確認します。

以下のように0番が削除され、残った「1:adminグループ」が、
繰り上がって0になっています。
正しく削除されています。

-rw-r–r–+ 1 <userneme> staff 4 2 2 07:14 /Users/<userneme>/Documents/memo.txt
0: group:admin allow read,readattr,readextattr,readsecurity

このようにsudo chmod -a# n (ファイルパス)形式で拡張ACLデータを個別に削除できます。

remove-plus_st06

ターミナル操作・拡張ACL情報の削除

 

削除後に再度「ファイル情報」を開くと、
追加したユーザーが削除されているのが確認できます。

remove-plus_st07

ユーザーの削除確認・拡張ACL情報の削除

 

続いて拡張ACLの全削除を行います。

拡張ACLの全削除

拡張ACLの全削除は以下のコマンドで行えます。

chmod コマンドに「-N」オプションを付けると拡張ACLデータがすべて削除されます。

sudo chmod -N (ファイルパス)

実行後にls -le (ファイルパス)で確認します。

remove-plus_st08

拡張ACLの全削除一括削除処理・拡張ACL情報の削除

 

削除後に再度「ファイル情報」を開くと、
追加したユーザーが削除されているのが確認できます。

remove-plus_st09

拡張ACLの全削除確認・拡張ACL情報の削除

 

実行後にls -le (ファイルパス)で確認します。
拡張ACLデータがすべて削除され「+」が表示されなくなっています。

-rw-r–r– 1 <userneme> staff 4 2 2 07:14 /Users/<userneme>/Documents/memo.txt

remove-plus_st10

拡張ACL「+」の非表示・拡張ACL情報の削除

 

このようにしてターミナルから拡張ACLを削除することができます。

 

コマンド ls -l で表示される「+」をFinderから消す手順

ターミナルから消せることは分かりましたが、
Finderから消すこともできます。

ファイル情報のウィンドウの「共有とアクセス権」から、
ユーザーを削除します。
「-」をクリックするだけでユーザーは削除できます。

誤って元のパーミッション設定を消してしまわないか?

ユーザーを追加すると「共有とアクセス権」の一覧からは、
どのユーザーがオーナーなのか?などが分からなくて誤って消しそうに感じます。

しかし、オーナーとその他ユーザーでは「-」が有効になりません。
また、グループを消そうとすると「権限がない」旨のメッセージが表示されます。

消してはならないパーミッション設定されている
「オーナー」「グループ」「その他」は消すことができません。

要は、消せるユーザーとグループを削除して、
最終的に残った3つが元々のパーミッション設定されていたものであると分かります。

そういう意味では、拡張ACLを消すには、
以下のコマンドを利用した方が1回の処理で無用なアクセス権を削除できます。
※無用であることは事前に確認する必要があります。

sudo chmod -N (ファイルパス)

 

参考

以下を参考にしています。

ACL MANIPULATION OPTIONS
ACLs are manipulated using extensions to the symbolic mode grammar. Each file has one ACL, containing
an ordered list of entries. Each entry refers to a user or group, and grants or denies a set of per-missions. permissions.
missions. In cases where a user and a group exist with the same name, the user/group name can be pre-fixed prefixed
fixed with “user:” or “group:” in order to specify the type of name.

(中略)

-N Removes the ACL from the named file(s).

(引用)chmod(1) Mac OS X Manual Page|developer.apple.com

ls(1) Mac OS X Manual Page|developer.apple.com

 


AdMax Promotion

公開日:

コンテンツナビ
すべて展開 | すべて省略

AdMax Promotion

カテゴリ
すべて展開 | すべて省略

QRコードからもこのURLを開けます。