3.10. smbcacls で SMB 共有上の ACL の管理
smbcacls ユーティリティーは、SMB 共有に保存されたファイルおよびディレクトリーの ACL をリスト表示、設定、および削除できます。smbcacls を使用して、ファイルシステムの ACL を管理できます。
- 高度な Windows ACL または POSIX ACL を使用するローカルまたはリモートの Samba サーバー
- Red Hat Enterprise Linux で、Windows でホストされる共有の ACL をリモートで管理
3.10.1. アクセス制御エントリー リンクのコピーリンクがクリップボードにコピーされました!
ファイルシステムオブジェクトの各 ACL エントリーには、以下の形式のアクセス制御エントリー (ACE) が含まれます。
security_principal:access_right/inheritance_information/permissions
security_principal:access_right/inheritance_information/permissions
例3.3 アクセス制御エントリー
AD\Domain Users グループに、Windows 上の このフォルダー、サブフォルダー、およびファイル に適用される 変更 権限がある場合、ACL には以下の ACE が含まれます。
AD\Domain Users:ALLOWED/OI|CI/CHANGE
AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACE には、以下が含まれます。
- セキュリティープリンシパル
- セキュリティープリンシパルは、ACL の権限が適用されるユーザー、グループ、または SID です。
- アクセス権
-
オブジェクトへのアクセスが許可または拒否されるかどうかを定義します。値は
ALLOWEDまたはDENIEDです。 - 継承情報
次の値を取ります。
Expand 表3.1 継承の設定 値 説明 マップ先 OIオブジェクトの継承
このフォルダーおよびファイル
CIコンテナーの継承
このフォルダーおよびサブフォルダー
IO継承のみ
ACE は、現在のファイルまたはディレクトリーには適用されません。
ID継承済
親ディレクトリーから ACE が継承されました。
また、値は以下のように組み合わせることができます。
Expand 表3.2 継承設定の組み合わせ 値の組み合わせ Windows の 適用先設定にマップします。OI|CIこのフォルダー、サブフォルダー、およびファイル
OI|CI|IOサブフォルダーおよびファイルのみ
CI|IOサブディレクトリーのみ
OI|IOファイルのみ
- 権限
この値は、Windows の権限または
smbcaclsエイリアスを表す 16 進値になります。1 つ以上の Windows の権限を表す 16 進値。
次の表に、Windows の高度な権限とそれに対応する値を 16 進法で表示します。
Expand 表3.3 Windows の権限とそれに対応する smbcacls 値を 16 進法で設定 Windows の権限 16 進値 完全な制御
0x001F01FFフォルダーのスキャンおよびファイルの実行
0x00100020フォルダーのリスト表示 / データの読み取り
0x00100001属性の読み取り
0x00100080拡張属性の読み取り
0x00100008ファイルの作成/データの書き込み
0x00100002フォルダーの作成/データの追加
0x00100004属性の書き込み
0x00100100拡張属性の書き込み
0x00100010サブフォルダーおよびファイルの削除
0x00100040削除
0x00110000権限の読み取り
0x00120000権限の変更
0x00140000所有権の取得
0x00180000ビット単位の
OR演算を使用すると、複数の権限を 1 つの 16 進値として組み合わせることができます。詳細は、ACE マスク計算 を参照してください。smbcaclsエイリアス。以下の表には、利用可能なエイリアスが表示されます。Expand 表3.4 既存の smbcacls エイリアスとそれに対応する Windows の権限 smbcaclsエイリアスWindows の権限へのマッピング -R読み取り
READ読み取りおよび実行
W主な機能:
- ファイルの作成/データの書き込み
- フォルダーの作成/データの追加
- 属性の書き込み
- 拡張属性の書き込み
- 権限の読み取り
D削除
%P権限の変更
O所有権の取得
Xスキャン / 実行
CHANGE修正
FULL完全な制御
注記権限を設定する際に、1 文字のエイリアスを組み合わせることができます。たとえば、Windows の権限の
ReadおよびDeleteを適用するようにRDを設定できます。ただし、1 文字以外のエイリアスを複数組み合わせたり、エイリアスと 16 進値を組み合わせることはできません。
3.10.2. smbcacls を使用した ACL の表示 リンクのコピーリンクがクリップボードにコピーされました!
SMB 共有で ACL を表示するには、smbcacls ユーティリティーを使用します。--add などの操作パラメーターを付けずに smbcacls を実行すると、ユーティリティーは、ファイルシステムオブジェクトの ACL を表示します。
手順
たとえば、//server/example 共有のルートディレクトリーの ACL をリスト表示するには、以下のコマンドを実行します。
smbcacls //server/example / -U "DOMAIN\administrator" Enter DOMAIN\administrator's password: REVISION:1 CONTROL:SR|PD|DI|DP OWNER:AD\Administrators GROUP:AD\Domain Users ACL:AD\Administrator:ALLOWED/OI|CI/FULL ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021
# smbcacls //server/example / -U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
REVISION:1
CONTROL:SR|PD|DI|DP
OWNER:AD\Administrators
GROUP:AD\Domain Users
ACL:AD\Administrator:ALLOWED/OI|CI/FULL
ACL:AD\Domain Users:ALLOWED/OI|CI/CHANGE
ACL:AD\Domain Guests:ALLOWED/OI|CI/0x00100021
コマンドの出力は以下のようになります。
-
REVISION- セキュリティー記述子の内部 Windows NT ACL リビジョン -
CONTROL- セキュリティー記述子の制御 -
OWNER- セキュリティー記述子の所有者の名前または SID -
GROUP- セキュリティー記述子のグループの名前または SID -
ACLエントリー。詳細は、アクセス制御エントリー を参照してください。
3.10.3. ACE マスク計算 リンクのコピーリンクがクリップボードにコピーされました!
ほとんどの場合、ACE を追加または更新するときは、既存の smbcacls エイリアスとそれに対応する Windows アクセス許可に リストされている smbcacls エイリアスを使用します。
ただし、Windows の権限と それに対応する smbcacls 値を 16 進法でリストしたように高度な Windows の権限 を設定する場合は、ビット単位の OR 操作を使用して正しい値を計算する必要があります。以下のシェルコマンドを使用して値を計算できます。
echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))
# echo $(printf '0x%X' $(( hex_value_1 | hex_value_2 | ... )))
例3.4 ACE マスクの計算
以下の権限を設定します。
- フォルダーのスキャン / ファイルの実行 (0x00100020)
- フォルダーのリスト表示 / データの読み取り (0x00100001)
- 属性の読み取り (0x00100080)
以前の権限の 16 進値を計算するには、以下を入力します。
echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 ))) 0x1000A1
# echo $(printf '0x%X' $(( 0x00100020 | 0x00100001 | 0x00100080 )))
0x1000A1
ACE を設定または更新する場合は、戻り値を使用します。
3.10.4. smbcacls を使用した ACL の追加、更新、および削除 リンクのコピーリンクがクリップボードにコピーされました!
smbcacls ユーティリティーに渡すパラメーターに応じて、ファイルまたはディレクトリーから ACL を追加、更新、および削除できます。
ACL の追加
このフォルダー、サブフォルダー、およびファイル の CHANGE 権限を AD\Domain Users グループに付与する //server/example 共有のルートに ACL を追加するには、以下のコマンドを実行します。
smbcacls //server/example / -U "DOMAIN\administrator --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE
# smbcacls //server/example / -U "DOMAIN\administrator --add ACL:"AD\Domain Users":ALLOWED/OI|CI/CHANGE
ACL の更新
ACL の更新は、新しい ACL の追加に似ています。ACL を更新する場合は、--modify パラメーターと既存のセキュリティープリンシパルを使用して ACL を上書きします。smbcacls が ACL リスト内でセキュリティープリンシパルを検出すると、ユーティリティーは権限を更新します。これを行わないと、以下のエラーでコマンドが失敗します。
ACL for SID principal_name not found
ACL for SID principal_name not found
たとえば、AD\Domain Users グループの権限を更新し、このフォルダー、サブフォルダー、およびファイル の READ に設定するには、以下のコマンドを実行します。
smbcacls //server/example / -U "DOMAIN\administrator --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ
# smbcacls //server/example / -U "DOMAIN\administrator --modify ACL:"AD\Domain Users":ALLOWED/OI|CI/READ
ACL の削除
ACL を削除するには、正確な ACL を持つ --delete パラメーターを smbcacls ユーティリティーに渡します。以下に例を示します。
smbcacls //server/example / -U "DOMAIN\administrator --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ
# smbcacls //server/example / -U "DOMAIN\administrator --delete ACL:"AD\Domain Users":ALLOWED/OI|CI/READ