コマンドラインからファイルの所有権を取得する方法は?


34

所有権を取得する必要があるファイルに頻繁に遭遇します。私は通常caclsntfsのアクセス許可を変更するために使用しますが、所有権を行っていないようです。* nixでは、次のようなものを実行しますchown me:me <file>。に相当するウィンドウはありchownますか?


あまりにも悪いsetACLは上記のスクリプトでは機能しません。Windows XP、7、および8でエラーメッセージが表示され、問題のある箇所を見つけるにはプロフェッサーになる必要があります

回答:


25

subinaclは、所有権とACLに関連するすべてのことを行うためのWindows sysadminの強力なツールです。所有権を自分以外に変更できます(GUIでこれを行うことはできません)。

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

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


Windows XPでは無効ですSUBINACL.exe(Windows 2003リソースキット)をダウンロードしてWindows XPで使用できますか?
キケネット

もちろんできます!それはおそらく私がそれを手に入れた場所です。こちらをお試しください
crb

26

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

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

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

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

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

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

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

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

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

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

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

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

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

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



SS64より良いドキュメントリンクがあります:ss64.com/nt/takeown.html
jpaugh

17

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

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リファレンス


1
icaclsは長いパス名でチョークすることに注意してください。「ファイルが見つかりません」というエラーメッセージは、誤解を招く恐れがあり、さらに悪いことに、icalcsはメッセージなしでツリーの残りの処理を中止します。これを回避するために、ツリーのより深いところにSUBSTボリュームを作成するトリックを使用できます。Takeown.exeは長い名前を許容します。
アンドリューデニソン

有効ではありませんのWindows XP
Kiquenet

8

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

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

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

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

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


最初のコマンドで十分でした。
ブノワブランション

6

許可管理のスイスアーミーナイフである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ます。


3

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

icacls.exeのデフォルトは「編集」モードであり、cacls.exeのデフォルトは「置換」モードであることに注意してください。


icaclsは、Windowsの最新バージョンに含まれており、任意のユーザーに所有権を割り当てることができるため、優れています。
デビッド14




0
  1. 管理者ユーザーとしてコマンドプロンプトを開き、問題のあるディレクトリに変更します
  2. そこにあるすべてのファイルの所有権を取得します...例: takeown /f *.jpg
  3. 選択したユーザーにアクセス権を付与します...例:(icacls *.jpg /grant "Everyone":F英語以外のWindowsでは "Everyone"が存在しない可能性があります。たとえば、ドイツ語のWindowsでは "Jeder"でのみ動作します。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.