web-dev-qa-db-ja.com

フォルダのアクセス許可をicaclsに置き換えます

フォルダの権限を置き換えたいのですが。最初に私はこれをしました:

icacls folder /grant user:(oi)(ci)f

次に、アクセス許可と継承を次のように変更します。

icacls folder /grant:r user:(oi)(io)rx

この後も、ユーザーの権限は(oi)(ci)f

アクセス許可が置き換えられないのはなぜですか?

権限と継承をsetaclに置き換えると、期待どおりに機能します。

setacl -on folder -ot file -actn ace -ace
"n:user;p:read_ex;i:io,so;m:set;w:dacl"

ご回答有難うございます。しかし、これは仕様によるものですか?それともこれはバグですか?パーミッション(および継承)を確実に置き換えることができる唯一の方法がこれである場合、「:r」スイッチの使用は何ですか?

icacls folder /remove user
icacls folder /grant user:(oi)(io)rx

「icacls/grant」がどのように機能するかをテストしてきましたが、icaclsがすべてのタイプの継承のエントリを書き込むことがわかりました。

これを試して:

md test
icacls test /inheritance:r
icacls test /grant user:f
icacls test /grant:r user:(oi)rx
icacls test /grant:r user:(ci)rx
icacls test /grant:r user:(oi)(ci)rx
icacls test /grant:r user:(ci)(oi)(io)rx
icacls test /grant:r user:(io)(oi)rx
icacls test /grant:r user:(io)(ci)rx

次に、ACLを確認します。

icacls test

結果は次のとおりです。

test PC\user:(F)
     PC\user:(OI)(IO)(RX)
     PC\user:(OI)(RX)
     PC\user:(CI)(IO)(RX)
     PC\user:(CI)(RX)
     PC\user:(OI)(CI)(IO)(RX)
     PC\user:(OI)(CI)(RX)

だから私はそれを見つけましたicacls /grant:r同じタイプの継承に対してのみアクセス許可を置き換えます。私の元の質問では:

md test
icacls test /inheritance:r
icacls test /grant user:(oi)(ci)f
icacls test /grant:r user:(oi)(io)rx

icaclsテストは出力を与えます

test PC\user:(OI)(IO)(RX)
     PC\user:(OI)(CI)(F)

そして、GUIには(OI)(IO)(RX)が含まれているため、(OI)(CI)(F)のみが表示されると思います。

私は何かが足りないのですか?これはバグですか、それとも仕様によるものですか?

1
liamZ

最初のコマンドは、「このフォルダー、サブフォルダー、およびファイル」のフォルダーへのフルアクセスを許可します。

オブジェクト継承の組み合わせ(OI)(IO)を使用しているため、アクセス許可は、ファイルのみの読み取りおよび実行アクセス許可を付与する2番目のコマンドに置き換えられません。どうやらあなたはできませんreplace「このフォルダ、サブフォルダ、ファイル」に適用される権限をファイルのみに適用される権限に。

フルアクセスを「このフォルダー、サブフォルダー、およびファイル」の読み取りと実行のアクセス許可に置き換えるには、2番目のコマンドで同じオブジェクト継承を使用します。

icacls folder /grant:r user:(oi)(ci)rx