どうも、Adminです。以前書いたとおり、弊社はまもなくオンプレミスのファイルサーバーを停止する予定です。
それに伴い、徐々にファイルサーバー上のファイルをクラウドに移し始めているわけですが、なぜか一部のデータが削除できないという事態に陥りました。当然Administratorでサーバーに入って作業をしているわけなんですけれども。
なんかファイルの所有権がおかしくなってるっぽいんだよなー。過去の管理者も素人だったので、よくわからない操作をしていたんじゃなかろうか。。。
Administratorとて操作のできないファイルがあるっぽい
軽く調べてみるとUAC(ユーザーアカウント制御)という機能のせいでAdministratorが操作できないこと自体はWindows Serverの仕様として正しいようだ。へー。
とはいえ削除できるファイルもあるので、その違いは何なんだ!?とアクセス権を見ていたら「所有者」が誰でもないファイルやフォルダが削除できなくなっているみたいだ。もしかしたら今はアカウントの存在しない、何代か前の管理者が所有者だったのかも知れない。

この画像は修正後のもの。ちなみにこのウィンドウはファイルのプロパティでセキュリティタブを選んで詳細設定ボタンを押すと表示される。
幸い変更することはできるようで、変更(C)リンクを押してユーザーまたはグループの選択ウィンドウでAdministratorを設定してやると所有者が変更されて、アクセス欄にもAdministratorが追加される。場所の指定欄にホスト名が入っているので、ホスト名で修飾する必要はなし。

ただし追加されるアクセス権はフルコントロールではないので、あらためてプロパティのセキュリティタブで編集ボタンを押して、Administoratorのアクセス権を変更しなくてはいけない。

これで晴れて所有権のおかしいファイルをAdministratorが削除できるようになるわけだが。。。
- ファイルの所有権をAdministratorに変更する
- Administratorのアクセス権をフルコントロールにする
こんなことをGUIでちまちまやるのはダルいし、何より対象ファイルがべらぼうに多いのだ!
PowerShellで解決
どうにかならんのかと調べてみたら、Windowsにおける所有権の割り当てとアクセス権に一括変更|物理の駅 Physics station by 現役研究者というサイトにPowerShellで変更できるという記載を発見。
unixでいうところのchownはtakeownというコマンドで、chown同様に再帰指定オプション/Rもある。/D Yはいちいち表示されるプロンプトに自動で”Y”を回答するオプション。
takeown /F 'E:\target' /R /D Y
Code language: PowerShell (powershell)
そしてchmodにあたるのがicaclsコマンド。/grantオプションでアカウントと権限を指定するようだ。Fはフルアクセス権。/Tがなんで再帰処理なんだろう。/Cと/Qはメッセージ抑制。
icacls 'E:\target' /grant Administrator:F /T /C /Q
Code language: PowerShell (powershell)
正確なオプションの説明はMicrosoftのドキュメントを見てね。
というわけで無事いらないファイルを削除することができました!
はじめまして!
いつも興味深く拝見させていただいています。
私はまだAdminさんほどの知識はないのですが(駆け出しのネットワークエンジニアです)、読んでいてすごくためになるし、いつかこの内容が自分でもできるようになりたいと思いながら読んでいます。
前にしばらく更新されていなかったことがあって、心配していました。
戻ってきてくださってうれしいです。これからも楽しみにしています。
じまじまさん、コメントありがとうございます。
私はただのパソコン好きの素人なので、ちゃんとした知識はあまりないのです。
毎日何かが起きるたびにあたふたしながら対応しています。
ここの内容が少しでもお役に立っているのであれば、とても嬉しいです。