トップ画像
呪われた(自分で呪った)フォルダを解呪した話

執筆者: 終に鮭

最終更新: 7/3/2021

こんにちは。鮭です。
皆さんはWindowsでこれまで使えていたファイルやフォルダにアクセスできなくなってブチギレたことはありますか?
私はあります。別にブチギレてはいませんが、先日以下のようなやりとりがありました。

呪いについて

先輩:Dドライブに置いたOneDriveのフォルダを(管理者を含む)別のユーザーから見れへんようにしたいんやけど、どうしたらいい?
私:多分プロパティ>セキュリティ>詳細設定から自分のユーザーにフルコントロール権限を付与して、Administratorsを全て拒否にすればいいんじゃないですかね?
先輩:すごいそれっぽい

みたいな感じでやったんですが、まさかのその先輩からもアクセス不可能になってしまいました(タイトルにもある「呪い」)。
何がいけなかったのでしょうか?
まあどう考えてもAdministratorsの権限を拒否してるからですね(とは言え、単に指定しない状態にしただけではAdministratorsならば権限を取得することが可能)
なので、先輩の言ったようなことはWindowsのファイルシステムのみではおそらく実現できません。

まず呪いを解く


例のフォルダは70GBもあります。いくらDドライブが3TBあるからといって、解呪しないで放置するわけには行かないサイズ感なので、なんとかします。
さて、まずは状況を把握しましょう。
件のフォルダがどのようにして呪われたかというと、他人が所有権を持っているフォルダについて、自分のユーザーにフルコントロール権限を与え、

アクセス権を与えている様子

UsersやAdministratorsから権限を剥がすと

アクセス権を剥がす様子

こうなって

アクセス拒否食らった

こうなって

舐めてくれるなよ

こうなります

アクセス権変更できへんなったわ、許してくれ


ウィザードにあるように、所有者を変更すればアクセスできるのですが、サブディレクトリにも拒否権限が引き継がれており、数百~数千個のファイルを手で相手するのは無理があります。

ACL関連のコマンドを利用


所有権とアクセス権が失われてしまった状態から復旧するのに役に立つコマンドがあります。
それが、 takeownicaclsです。
百聞は一見に如かずといいますし、実際に使ってみましょう。

PS D:\> takeown /f "cursed-folder" /r /a

成功: ファイル (またはフォルダー): "D:\cursed-folder" は現在 Administrators グループによって所有されています。

成功: ファイル (またはフォルダー): "D:\cursed-folder\child" は現在 Administrators グループによって所有されています。

成功: ファイル (またはフォルダー): "D:\cursed-folder\child\grandchild" は現在 Administrators グループによって所有されています。

成功: ファイル (またはフォルダー): "D:\cursed-folder\child\grandchild\新しいテキスト ドキュメント.txt" は現在 Administrators グループ によって所有されています。
PS D:\> icacls "cursed-folder" /reset /t
処理ファイル: cursed-folder
処理ファイル: cursed-folder\child
処理ファイル: cursed-folder\child\grandchild
処理ファイル: cursed-folder\child\grandchild\新しいテキスト ドキュメント.txt
4 個のファイルが正常に処理されました。0 個のファイルを処理できませんでした


解説します。

takeownコマンドはファイルの所有権を特定のユーザーに与えるためのコマンドです。
/fオプションでファイルを指定し、/rオプションで再帰的に処理、 /aオプションで管理者(Administratorsグループ)に所有権を与えます。
これによって管理者がアクセス権を変更できるようになります。

icaclsコマンドはファイルのアクセス権を指定するためのコマンドです。
第一引数でファイルを指定し、/resetオプションでアクセス権をリセット(デフォルトの継承値にする)、/tオプションで再帰的に処理しています。
これによってアクセス権が元の状態に戻ります。

良かったね、これで元通りだよ。

当初の目的は


当初の目的は、「管理者を含む自分以外のユーザーからアクセスできないようにする」ことでした。
この手順はアクセス権をもとに戻すだけであって、目的は達成できていません。
ではどうすればいいかというと、EFS(Encrypted File System)を利用します。


……部室のPC、Windows 10 Homeやから使えへんわ!!
ちなみにEFS(上図の「内容を暗号化してデータをセキュリティで保護する」)を使えば、ユーザーに紐付けされた秘密鍵を利用して復号するので、目的が達成できます。自宅のPCで試してみたところ、うまく管理者でもアクセスできないようになりました(特殊な方法を使えばどうか分かりませんが)。やはりWindowsはProを買えということだな

~終~

ちなみにOneDriveにはPersonal Vaultという機能がありますが、無料では3つまでしかファイルを追加できず、組織アカウントでは利用できません。

本当に終われ

取得に失敗しました

2020年度 入部

Twitter GitHub YouTube