名前

smbcacls — Windows NT 上のファイルやディレクトリの ACL の取得や設定

書式

smbcacls {//server/share} {/filename} [-D|--delete acl] [-M|--modify acl] [-a|--add acl] [-S|--set acl] [-C|--chown name] [-G|--chgrp name] [-I allow|remove|copy] [--propagate-inheritance] [--numeric] [-t] [-U username] [-d] [-e] [-m|--max-protocol LEVEL] [--query-security-info FLAGS] [--set-security-info FLAGS] [--sddl] [--domain-sid SID] [-x|--maximum-access]

説明

このツールは samba(7) システムの一部である。

smbcacls は、SMB ファイル共有内の ACL (Access Control Lists)を操作するプログラムである。 ACL はなにもないか、特定のユーザーやグループに対するアクセス制限を行う、 1 つ以上の ACE(Access Control Entries)から構成される。

オプション

smbcacls コマンドでは以下のオプションが 利用可能である。ACL の形式は、ACL FORMAT セクションで記述する。

-a|--add acl

エントリを、指定された ACL に追加する。既存の ACE は変更されない。

-M|--modify acl

コマンドラインで指定された ACE の mask 値 (パーミッション)を変更する。オブジェクトの ACL に指定された ACE が存在しない場合、 その ACL ごとにエラーが出力される。

-D|--delete acl

コマンドラインで指定された ACE を削除する。 オブジェクトの ACL に指定された ACE が存在しない場合、その ACL ごとにエラーが 出力される。

-S|--set acl

このコマンドは、コマンドラインで指定された ACL のみをオブジェクトに設定する。存在する ACL は削除される。 呼び出しを成功させるためには、指定する ACL に最低限リビジョン、タイプ、 所有者とグループが含まれている必要がある。

-C name

-C オプションを利用することで、 ファイルやディレクトリの所有者を name で指定したアカウントに変更することが可能である。 name は S-1-x-y-z 形式の sid で指定するか、 最初の引数で指定したサーバーが認識可能な名前で指定する。

このコマンドは -M OWNER:name の短縮形になる。

-G name

ファイルやディレクトリのグループ所有者は、 -G オプションを利用することで指定した name に変更することが可能である。名前は S-1-x-y-z 形式の sid で指定するか、 先頭の引数で指定したサーバーが認識可能な name で指定する。

このコマンドは -M GROUP:name の短縮形になる。

-I|--inherit allow|remove|copy

-I オプションを使うことで Windows の "Allow inheritable permissions" チェックボックスの設定/解除を 行う。設定するとチェックボックスに許可が渡される。解除すると チェックボックスには削除かコピーのどちらかが渡される。削除は すべての継承された ACE を削除するコピーの場合には、すべての 継承された ACE がコピーされる。

--propagate-inheritance

inheritance フラグが付いているディレクトリツリー 全体に対して、ACE の追加、変更削除または設定を行う。詳細については INHERITANCE 節を参照のこと。

--numeric

このオプションは、全ての ACL 情報を数値形式で 表示させる。デフォルトでは、SID は名前に、ACE の type と mask は、 可読性のある文字列形式に変換される。

-m|--max-protocol PROTOCOL_NAME

これは、ユーザーに対して、smbcacls がサーバー接続時に使用する 最上位の SMB プロトコルを選択出来るようにする。既定値では、 これは、SMB1 プロトコルの最上位である NT1 に設定されている。 SMB2 または SMB3 プロトコルで接続する場合、おのおの SMB2 または SMB3 という文字列を指定する。通信路の暗号化を使って Windows 2012 Server に接続する場合、max-protocol は SMB3 が必要である ことに注意。

-t

実際に処理は行わず、指定した引数の正当性を検証する。

--query-security-info FLAGS

問い合わせにおける security-info フラグ。

--set-security-info FLAGS

問い合わせにおける security-info フラグ。

--sddl

sddl 形式による acl の入出力。

--domain-sid SID

sddl 処理に使う SID。

-x|--maximum-access

ACLを追加で表示する場合、有効な最大パーミッションを 得るためにサーバに問合せする。これは、 SMB プロトコルバージョン 2 以降 でのみサポートされていることに注意。

-d|--debuglevel=level

level は0から10までの整数値である。 既定値の値は、パラメーターが設定されていなければ0である。

この値を大きくするほど、サーバーの動作に関するより詳細な情報が ログファイルに記録される。レベル 0 では、致命的なエラーと重大な警告 のみが記録される。レベル 1 は日々の運用に適しており、少量の稼働状況 に関する情報を生成する。

1 より上のレベルは大量のログが生成されるので、問題解決の時にのみ 使用すべきである。 3 より上のレベルは開発者だけが利用するように設計されて おり、莫大な量のログデータが生成される。そのほとんどは非常に謎めいた内容 となっている

このパラメーターの指定は、smb.conf ファイル中の、 log level パラメーターの 指定よりも優先する事に注意。

-V|--version

プログラムのバージョン番号を表示する。

-s|--configfile=<configuration file>

サーバーが必要とする詳細な設定を含む設定ファイルを 指定する。このファイルには、サーバーが提供するサービスに関する記述や、 どの printcap ファイルを利用するかといった情報が含まれている。詳細は smb.conf を参照のこと。設定ファイルの名前の既定値は、コンパイル時 に決定される。

-l|--log-basename=logdirectory

ログ/デバッグファイルのファイル名。拡張子として ".progname" が追加される(例えば log.smbclient, log.smbd,など)。ログファイルはクライアントによって削除されることはない。

--option=<name>=<value>

コマンドラインから smb.conf(5) オプション "<name>" に値 "<value>" を設定。 これはコンパイル時の既定値と設定ファイルから読み込まれたオプションを上書きする。

-N|--no-pass

このオプションを指定すると、クライアントはユーザーへの パスワード入力要求をしなくなる。パスワードが必要ないサービスにアクセスする ときに有用である。

コマンドラインにパスワードが指定されておらず、このオプションも指定 されていないと、クライアントはパスワードを要求する。

もしも、パスワードがコマンドライン上で指定され、このオプションも 定義されていた場合、コマンドライン上のパスワードは無視され、パスワードは 使われない。

-k|--kerberos

Kerberos による認証を試みる。アクティブディレクトリ環境でのみ有効である。

-C|--use-ccache

winbindによってキャッシュされた資格情報を使うようにする。

-A|--authentication-file=filename

このオプションは、指定したファイルから、接続に使用する ユーザー名とパスワードを読み込むために使用する。ファイルの形式は次の通り:

username = <value>
password = <value>
domain   = <value>

ファイルのパーミッションを確認し、ほかのユーザーから参照されない ように注意すること。

-U|--user=username[%password]

SMB のユーザー名、またはユーザー名とパスワードを指定する。

もしも %password を指定しないと、ユーザーにパスワードの入力を求める。 クライアントはまず初めにUSERLOGNAMEの順に 環境変数の存在を調べ、もしもどちらかが存在するならば、その文字列を大文字にする。 環境変数が存在しない場合、ユーザー名としてGUESTが用いられる。

このほかに、平文のユーザー名とパスワードを記述した認証ファイルを使用する オプションがある。このオプションは主にスクリプト向けに用意されており、認証情報を コマンドラインや環境変数に含めたくない場合に有用である。このオプションを利用する ときは、ファイルのパーミッションを確認し、ほかのユーザーから参照されないように 注意すること。詳細は-Aオプションを参照のこと。

パスワードをスクリプトに含める場合は注意すること。多くのシステムでは、実行 中のプロセスのコマンドラインはpsコマンドで参照することが できてしまう。安全のため、必ず、rpcclientを使用して、 パスワード入力を要求し、直接入力するようにしておくこと。

-S|--signing on|off|required

クライアント署名ステートの設定。

-P|--machine-pass

保存されたマシンパスワードアカウントを使用する。

-e|--encrypt

このコマンドラインパラメーターは、UNIX拡張をサポートするか、 SMB3プロトコルを選択したリモートサーバーを必要とする。 コネクション要求は暗号化される。SMB暗号化は、SMB3あるいはUNIX拡張 のどちらかを、GSSAPI経由を使って調停される。暗号化の調停に与えられた 資格情報を(kerberosまたはNTLMv1/v2)、ドメイン/ユーザー名/パスワードの 3回利用する。暗号化が調停不能だった場合、接続は失敗する。

--pw-nt-hash

提供されたパスワードはNTハッシュである。

-n|--netbiosname <primary NetBIOS name>

このオプションは Samba 自身が使う NetBIOS名を上書きする。 これは、smb.conf ファイル中の netbios name パラメータ で設定することと同じである。しかし、コマンド行での設定は smb.conf での設定よりも優先する。

-i|--scope <scope>

nmblookupが、通信用のNetBIOS名 を生成する時に使うNetBIOS スコープを指定する。NetBIOS スコープの詳細な 利用方法については、 RFC 1001 と RFC 1002 を参照のこと。NetBIOSスコープ はごく稀にしか利用されない。NetBIOS システム 全体を運営している管理者が、そのシステム内の相手と通信する場合にのみ、 このパラメーターを設定する。

-W|--workgroup=domain

ユーザー名の SMB ドメインを指定する。このオプションは、 smb.conf 内のデフォルトのドメイン設定よりも優先される。ドメイン名として サーバーの NetBIOS 名を指定すると、クライアントは (ドメインの SAM では なく) サーバーのローカル SAM を使用してログオンを試みる。

-O|--socket-options socket options

クライアントのソケットに設定する TCP のソケットオプ ション。有効なオプションの一覧については、smb.conf マニュアルページ 中の socket options パラメーターを参照のこと。

-?|--help

コマンドラインオプションの要約を表示する。

--usage

簡単な使用法を表示する。

ACL 形式

ACL の形式は、カンマか改行記号で 1 つ以上の エントリを区切ったもの である。ACL エントリは以下のいずれかの形式をとる:

 
REVISION:<revision number>
OWNER:<sid or name>
GROUP:<sid or name>
ACL:<sid or name>:<type>/<flags>/<mask>

Control bits related to automatic inheritance

  • OD - "Owner Defaulted" - セキュリティ記述子の所有者の SID が、既定のメカニズムによって提供されたことを示す。

  • GD - "Group Defaulted" - セキュリティ記述子グループの SID が、既定のメカニズムによって、提供されたことを示す。

  • DP - "DACL Present" - discretionary access control list (DACL) を持っているセキュリティ記述子を示す。

  • DD - "DACL Defaulted" - 既定の DACL を持つセキュリティ記述子を示す。

  • SP - "SACL Present" - system access control list (SACL) を持つセキュリティ記述子を示す。

  • SD - "SACL Defaulted" - セキュリティ記述子の元のプロバイダではなく、既定のメカニズムが SASL を提供した。

  • DT - "DACL Trusted"

  • SS - "Server Security"

  • DR - "DACL Inheritance Required" - 継承可能なアクセス制御エントリ(ACE)の既存の子オブジェクトへの自動継承をサポートするように、DACL が設定されている必須のセキュリティ記述子を示す。

  • SR - "SACL Inheritance Required" - 継承可能なアクセス制御エントリ(ACE)の既存の子オブジェクトへの自動継承をサポートするように、SACL が設定されている必須のセキュリティ記述子を示す。

  • DI - "DACL Auto Inherited" - 継承可能なアクセス制御エントリ(ACE)の既存の子オブジェクトへの自動継承をサポートするように、DACL が設定されているセキュリティ記述子を示す。

  • SI - "SACL Auto Inherited" - 継承可能な ACE の既存の子オブジェクトへの自動継承をサポートするように、SACL が設定されているセキュリティ記述子を示す。Indicates a security descriptor in which the SACL is set up to support automatic propagation of inheritable ACEs to existing child objects.

  • PD - "DACL Protected" - 継承可能な ACL によって、セキュリティ記述子の DACL が変更されないようにする。

  • PS - "SACL Protected" - 継承可能な ACL によって、セキュリティ記述子の SACL が変更されないようにする。

  • RM - "RM Control Valid" - リソースマネージャ制御が有効であることを示す。

  • SR - "Self Relative" - 自己相対セキュリティ記述子であることを示す。

REVISION は、セキュリティディスクリプタに対する内部的な Windows NT ACL のリビジョンを表す。特に指定されない場合のデフォルトは 1 である。 1 以外の値を指定した場合は、挙動がおかしくなることがある。

OWNER と GROUP はオブジェクトの所有者およびグループの sid を指定する。 SID が S-1-x-y-z の形式で指定された場合はそのまま用いられ、 それ以外の場合、指定された名前はファイルやディレクトリが存在するサーバーに よって解析される。

ACE は "ACL:" プレフィックスで指定され、SID に対して与えられるパーミッション を指定する。この SID も S-1-x-y-z の形式で指定するか、名前で指定することが可能で、後者の場合、 ファイルやディレクトリが存在するサーバーによって解析される。 type, flag, mask の値は、SID に対して与えられたアクセスの種類を指定する。

typeは ALLOWED か DENIED のどちらかで、SID に対する許可および拒否に 対応する。

フラグフィールドは、継承を実行するときに、どのように ACE を考慮 するかを定義する。smbcacls は、 - -propagate-inheritance が指定されて実行された 時にこれらのフラグを使う。

flag の値は 10進又は16進値か、縦棒 "|" で区切られた それぞれの (XX) 別名で指定できる。

  • (OI) Object Inherit 0x1

  • (CI) Container Inherit 0x2

  • (NP) No Propagate Inherit 0x4

  • (IO) Inherit Only 0x8

  • (I) ACE was inherited 0x10

mask は SID に対して与えられたアクセス権を表現する値である。それは 10 進数もしくは 16 進数で設定するか、NT のファイルパーミッションと同じ名称である 以下の文字列のうちの一つを利用して設定することができる。

  • R - 読み取りの許可

  • W - 書き込みの許可

  • X - オブジェクトの実行

  • D - オブジェクトの削除

  • P - パーミッションの変更

  • O - 所有権の取得

以下の複合パーミッションも指定可能である。

  • READ - 'RX' パーミッションと等価である。

  • CHANGE - 'RXWD' パーミッションと等価である。

  • FULL - 'RWXDPO' パーミッションと等価である。

終了ステータス

継承

ACE 毎の継承フラグは ACE フラグフィールド中で設定できる。既定では、 inheritable ACEs、すなわち、オブジェクト継承 (OI) またはコンテナ継承 (CI) としてマークされたもの で、これらはサブファイル又はフォルダには伝搬しない。しかし、 --propagate-inheritance 引数を指定すると、 このような ACE は自動的にいくつかの継承ルールによって伝搬される。

  • Inheritable (OI)(OI) ACE フラグはフォルダにのみ 適用される。

  • サブフォルダ又はフォルダに適用される任意の inheritable ACE は、inherited (I) フラグが付けられる。Inheritable ACE は、no propagation (NP) フラグが設定されていたとしてもフォルダに 適用される。

  • (OI) フラグのみが設定された ACE が、子のフォルダに 伝搬された時は、inheritance only フラグ (IO) も設定される。 これは、 ACE に関連づけられたパーミッションはフォルダそれ自身に 適用されない(その子のファイルにのみ)と言うことを示している。 子に ACE を適用する場合、ACE は通常通り伝搬される。

  • (CI) フラグのみが設定された ACE が子のファイルに 伝搬されたときは、特に何も影響はなく、このフォルダに伝搬されたときは、 通常通り継承する。

  • (OI) & (CI) とフラグ両方が設定された ACE は、 フォルダとファイル両方に対して通常通り伝搬される。

(OI)(READ) を親フォルダに追加r

+-parent/        (OI)(READ)
| +-file.1       (I)(READ)
| +-nested/      (OI)(IO)(I)(READ)
  |   +-file.2   (I)(READ)

(CI)(READ) を親フォルダに追加r

+-parent/        (CI)(READ)
| +-file.1
| +-nested/      (CI)(I)(READ)
  |   +-file.2

(OI)(CI)(READ) を親フォルダに追加r

+-parent/        (OI)(CI)(READ)
| +-file.1       (I)(READ)
| +-nested/      (OI)(CI)(I)(READ)
  |   +-file.2   (I)(READ)

(OI)(NP)(READ) を親フォルダに追加r

+-oi_dir/        (OI)(NP)(READ)
| +-file.1       (I)(READ)
| +-nested/
|   +-file.2

(CI)(NP)(READ) を親フォルダに追加r

+-oi_dir/        (CI)(NP)(READ)
| +-file.1
| +-nested/      (I)(READ)
|   +-file.2

(OI)(CI)(NP)(READ) を親フォルダに追加

+-parent/        (CI)(OI)(NP)(READ)
| +-file.1       (I)(READ)
| +-nested/      (I)(READ)
|   +-file.2

保護された ACL があるファイルとフォルダは、inheritable な パーミッション(-Iで設定)を許可しない。そのような オブジェクトは、(CI) 又は (OI) がある継承用に ACE にフラグが付いている ものを受け取らない。

smbcacls コマンドは、操作が成功したか、 その他の結果になったかに応じた戻り値を設定する。 戻り値は、以下の値のいずれかになる。

操作が成功した場合、smbcacls は戻り値として 0 を返す。もし smbcacls が指定したサーバーに接続できなかったか、 ACL を取得または設定する際にエラーが発生した場合、戻り値として 1 が返される。 コマンドライン引数の解析に失敗した場合は、戻り値として 2 が返される。

バージョン

このマニュアルページは Samba バージョン 4.14.5 用である。

著者

オリジナルの Samba ソフトウェアと関連するユーティリティは、Andrew Tridgell によって作成された。現在 Samba は Samba Team によって、Linux カーネルの開発と同様のオープンソースプロジェクトとして開発が行なわれている。

smbcacls は Andrew Tridgell と Tim Potter によって書かれた。

Samba 2.2 における DocBook 形式への変換は、Gerald Carter によって行なわれた。Samba 3.0 における DocBook XML 4.2 形式への変換は、 Alexander Bokovoy によって行われた。

日本語訳

このマニュアルページは Samba 4.14.5 - 4.14.5 に対応する。

このドキュメントの Samba 3.0.0 - 4.14.5 対応の翻訳は

  • たかはしもとのぶ (monyo@samba.gr.jp)

  • 山田 史朗 (shiro@miraclelinux.com)

  • 太田俊哉(ribbon@samba.gr.jp>

によって行なわれた。