web-dev-qa-db-ja.com

Windows Server 2012でICACLSを使用してグループ権限を割り当てることができない

権限を追加するためにicaclsでグループを受け入れることができません。次のコマンドで昇格したPower Shellを使用しています。

icacls 'C:/foo' /grant:r 'Group Foo':f

次のエラーが発生します。

Invalid parameter "Group Foo"

私もSUIDを使用してみましたが、それも失敗します。 「Domain\Group Foo」も試しました

グループが使用できるようにしようとしているファイルがたくさんあります。 Windows Server 2012で大量のアクセス許可を追加する適切な方法は何ですか?

-編集-

E:\> icacls "E:/Contact Numbers.xlsx" /grant:r "Users":f
Invalid parameter "Users"
9
user319862

一重引用符の代わりに二重引用符を使用します。

C:\>mkdir foo

C:\>icacls 'C:/foo' /grant:r 'Users':f
'Users': No mapping between account names and security IDs was done.
Successfully processed 0 files; Failed processing 1 files

C:\>icacls "C:/foo" /grant:r "Users":f
processed file: C:/foo
Successfully processed 1 files; Failed processing 0 files

cmdではなく、Powershellを使用していたことを知りませんでした。 Powershellには、外部コマンドと引用を混在させる際に、いくつかの奇妙な点があります。 Powershellを使用した例をいくつか示します。

PS v2:引用符をicaclsに渡すには、キャレットでエスケープする必要があります。 「F」の前後の括弧もエスケープする必要があることに注意してください。

PS C:\>icacls `"C:/foo`" /grant:r `"Users`":`(F`)

PS v3:バージョン3は新しいエスケープシーケンスを提供します--%(ダッシュ、ダッシュ、パーセント)は、残りの行をエスケープします。これにより、複雑な外部パラメータも簡単になります。

PS C:\>icacls --% "C:/foo" /grant:r "Users":F
10
jscott

Jscottのスレッドにコメントを付けることはできませんが、コマンドをPowershellで適切に実行するには、パラメーター全体を引用符で囲む必要があります。

    C:\> icacls .\foo /grant:r "Users:F"

これは、スペースが含まれているグループ名、および継承権限を含むコマンドに対して機能します。

    C:\> icacls .\foo /grant:r "Remote Desktop Users:(OI)(CI)(F)"

疑問がある場合は、常に完全なパラメータを引用符で囲んでください。お役に立てれば! :)

1
Josh Vance