web-dev-qa-db-ja.com

コマンドラインからファイルの所有権を取得するにはどうすればよいですか?

所有権を取得する必要があるファイルに頻繁に出くわします。 NTFSアクセス許可の変更には通常caclsを使用しますが、所有権を持っているようには見えません。 * nixでは、chown me:me <file>のようなものを実行します。 chownに相当するウィンドウはありますか?

34
Joe

subinacl は、所有権とACLに関するすべてのことを行うためのWindowsシステム管理者のパワーツールです。所有権をあなた以外の誰にでも変更できます( GUIでこれを行うことはできません )。

subinacl /file test.txt /setowner=domain\foo

これにより、管理者である必要はなく、好きなユーザーにアクセス許可を設定できます(takeown.exeで必要になると思います)。

25
crb

あなたは「TAKEOWN.EXE」を探しています。これは、Windows Server 2003で標準コンポーネントとして最初に提供されたものであり、以前はリソースキットアイテムであったと思います。これは、Windows 7、およびおそらく新しいシステムで使用できます。

takeown /f <some-file-or-folder> /r

/rは、指定したフォルダーのすべての子に対して操作を再帰的に実行します。 subinaclとは異なり、所有権を取得しようとしているユーザーとしてログインする必要があります。または、単に「Administrators」グループに所有権を割り当てることができます。

SS64 に保存されているドキュメントのコピーを次に示します。

構文TAKEOWN [/ sコンピューター[/ u [ドメイン]ユーザー名[/ p [パスワード]]]]/fファイル名[/ a] [/ r [/ d {Y | N}]]

キー/ sコンピューターリモートコンピューターの名前またはIPアドレス(円記号は使用しないでください)。デフォルト=ローカルコンピュータ。このパラメーターは、コマンドで指定されたすべてのファイルとフォルダーに適用されます。

/ u [ドメイン]ユーザー名指定したユーザーアカウントのアクセス許可でスクリプトを実行します。デフォルト=システム権限。

/ p [パスワード]/uパラメータで指定されたユーザーアカウントのパスワード。

/ f FileNameファイル名、UNCパス、またはディレクトリ名のパターン。ワイルドカード文字を受け入れます*

/ a現在のユーザーではなくAdministratorsグループに所有権を与えます。

/ r指定されたディレクトリおよびサブディレクトリ内のすべてのファイルに対して再帰的な操作を実行します。

/ d {Y | N}現在のユーザーが指定したディレクトリに対する「フォルダのリスト」権限を持たない場合に表示される確認プロンプトを抑制し、代わりにデフォルト値を使用します。Y:ディレクトリの所有権を取得します。 N:ディレクトリをスキップします。このオプションは、/ rオプションと組み合わせて使用​​する必要があることに注意してください。/aパラメータが指定されていない場合、ファイルの所有権は現在コンピュータにログオンしているユーザーに与えられます。

(?と*)を使用した混合パターンは、takeownコマンドではサポートされていません。

ファイル/フォルダーの所有者を変更した後、ファイルに完全なアクセス許可を割り当て、その後それらを読み取るか削除することができます。

26
Evan Anderson

フォルダとその中のすべての所有権と完全な権利を取得します。

takeown /F somedir /A /R
icacls somedir /grant:r User:F /T

必ず管理者としてコマンドプロンプトを起動してください!

コマンドプロンプトを管理者として起動する必要がありましたが、Windows 8.1では問題なく動作しました。 Windows 8.1のぎこちなさで、「コマンド」を検索し、コマンドプロンプトアイコンを右クリックする必要がありました。 「管理者として実行」オプションを表示するために私にとって。タスクバーにコマンドプロンプトを固定しましたが、右クリックしても[管理者として実行]オプションが表示されませんでした。

Windows 10では、「管理者として実行」が右クリックオプションとして利用できるはずです。

Takeown構文

takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]

takeownリファレンス

Icacls構文

icacls <FileName>[/GRANT [: r] <Sid>: <Perm> [...]] [/ Denegar <Sid>: <Perm> [...]] [/Remove [:g|:d]] <Sid> [...]] [/ t] [/ c] [/ l] [/ q] [/ setintegritylevel <Level>: <Policy> [...]]Icacls <Directory>[/ sustituir <SidOld><SidNew>[...]] [/ restore <ACLfile>[/ c] [/ l] [/q]]

icaclsリファレンス

17
chipiik

私はこれが本当に古い投稿であることを知っていますが、Windows 7以降に組み込まれている方法があります(Windows Vistaにある可能性がありますが、わかりません)。リセットするフォルダのエスカレートされたコマンドプロンプトから次のコマンドを実行します。 /ticaclsに操作を再帰的に実行するように指示します。

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t

最初のコマンドは、所有者を環境変数を介してログオンしたユーザーにリセットします。もちろん、代わりに特定の名前を使用できます。

次に、2番目のコマンドは、ツリーの下のすべての子フォルダーとファイルにアクセス許可を強制的に再継承します。

これが将来の誰かを助けることを願っています。

8
Jim

権限管理のスイスアーミーナイフである SetACL をご覧ください。ドライブC:のすべてのファイルの所有権を「管理者」に割り当て、すべての子オブジェクトから継承の保護を一度に削除する方法の は次のとおりです。

SetACL.exe -on "C:\\" -ot file -actn setprot
           -op "dacl:np;sacl:nc"
           -rec cont_obj
           -actn setowner -ownr "n:S-1-5-32-544;s:y"

-silentを追加することもできます。

6
Helge Klein

Windows 2003、2008、Vistaまたは7の場合は、 Takeown を使用します。

Windows 2000の場合は Fileowners.pl を使用します。

3
Dave Drager

Windows Server 2003 R2(およびそれ以降)では、組み込みツールicacls.exeを利用して、コマンドラインから所有権を変更し、従来のすべてのcacls.exe操作を変更できます。それは拡大します...

Icacls.exeのデフォルトは「編集」モードですが、cacls.exeのデフォルトは「置換」モードです。caclsのわずかなニュアンスにかじられた(2回以上)私たちのものへの歓迎すべき変更!

3
jnaab

他の代替案は fileacl 小さく、ほとんどのWindowsユーティリティとは異なり、オブジェクトに「継承/継承しない」フラグを設定/設定解除できます。

1
Skelewir
  1. 管理者ユーザーとしてコマンドプロンプトを開き、問題のあるディレクトリに移動します
  2. そこですべてのファイルの所有権を取得します...例:takeown /f *.jpg
  3. 選択したユーザーにアクセス権を付与します...例:icacls *.jpg /grant "Everyone":F(英語以外のWindowsでは「Everyone」が存在しない可能性があることに注意してください。たとえば、ドイツ語版のWindowsでは「Jeder」でのみ機能します。Windowsがコマンドオプションを翻訳するのは本当です!)
0
Jörg

Windowsツールを使用して解決策を見つけました: cacls

cacls <file or directory> /E /T /G <user>:F
0
chepseskaf