web-dev-qa-db-ja.com

Windowsでファイルのアクセス権を変更するためのchmodと同等

ファイルの権限を変更するための、Linuxのchmodと同等のWindows版はありますか?

50
sunmoon

Gregattribに言及 - しかしattribchmodに近くないattribは単一ファイルの読み取り専用/隠し属性を設定できます - それは icacls のようなきめ細かい制御を提供しません。

icaclsはアクセス制御リストを設定/リセットするので、あなたは個々のSIDとグループに対する権利を許可/拒否することができます。それはかなり複雑です。

これは私が github Gist に保存した例です。フォルダ内のすべてのファイルの所有権とアクセス制御リストをリセットします。特に、以前のインストールからファイルを移動するときに、「この操作を実行するには..からのアクセス許可が必要です」という厄介な問題を修正するのに特に便利です。

icacls * /reset /t /c /q 

リセットを実行すると、既存のリストがデフォルトのリストに置き換えられます。
/tはすべてのファイル、フォルダ、サブフォルダに再帰的に作用します
/qは成功メッセージを表示しません
エラーが発生しても/cは残りのファイルを継続します。

既存のACLをバックアップしたり、すべてのACLに適用したりすることもできます。さまざまなオプションとスイッチについて非常によく説明している ss64 をご覧ください。

21
Sathyajith Bhat

caclsxcacls 、または私の大好きな icacls のいずれかでおそらくうまくいくでしょう。あなたが必要です。

11
Bryan

LinuxとDOS/Windowsは異なる目的で属性を使用しているので(残念ながら)まったく同じことはできません。(Chathurangaが述べたように)セキュリティモデルは異なります。

  • Windowsファイルシステムには、隠し(H)属性とシステム(S)属性がありますが、それらはLinuxにはありません。そこでは、ファイル名の前にドット(.)を付けてファイルを隠します。
  • Windowsの "archive"(A)属性に相当するものもありません。
  • DOS/Windowsファイル属性には、「実行可能」(x)Linux属性に相当するものはありません。
  • そこにWindowsの "directory"(D)属性と同等です(しかしそれはとにかく変更することはできません)。
  • Linuxファイルシステムでは、すべてのエントリは正確に1人のユーザーと正確に1つのグループによって所有されており、読み取り/書き込み/実行はそれらのそれぞれおよび他のユーザーに対して許可することができます。 ACLは(Windowsで使われているように)もっと柔軟ですが、もっと複雑で、コマンドラインの構文はPITAです(もちろん私の控え目な意見では)

DOSファイルの属性R(読み取り専用)は、同等のものと見なされる可能性のあるものです。この属性setは、w属性とほぼ同じです。すべて行方不明です。しかし、この属性を変更する許可はACLの影響を受けます。

Windows上でchmod/chownと同等のものを使用するのはクールかもしれません。おそらく、何らかのスクリプト言語で書かれていて、それが今度はattribcacls(または後継者)を呼び出すのです。

8
Tobias
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

ドメインユーザーのフォルダに対するアクセス許可を変更するのが魅力的です。 caclsicaclsに関する追加情報。

5
MDT Guy

attribコマンドは、非常に基本的なもの(読み取り専用、アーカイブフラグ)に最も近いものです。それからACL(アクセス制御リスト)コマンドcaclsがあります。大事なことを言い忘れましたが、Windowsは実際にはPosixに準拠しているので、unix風のフラグが存在します。 Cygwinツールセットをインストールすると、chmodが手に入ります。 (ちょっと話題を異にしているのですが、unixコマンドに相当するものを探しているので、Cgygwinをダウンロードしてインストールすることはあなたにとって興味深いものかもしれません。)

4
user27570

Windowsのコマンドtakeown.exeを使用して、現在のログインユーザーIDにファイルのアクセス権を変更します。 http://technet.Microsoft.com/ja-jp/library/cc753024.aspx

2

WindowsのセキュリティモデルはLinuxとは異なるため、Windowsにはchmodという名前のものはありません。 attribコマンドを使用して、オブジェクトのプロパティを変更できます。 (しかし、それらはよりグローバルな資産に向かっています。)

私にとっては、回避策としてCygwinをインストールし、そのbinフォルダをシステムパスに追加します。それから、あなたがコマンドラインで "chmod"を実行すれば、それはうまくいくでしょう。私はその正当性を検証していませんが。

1
WHOIF