Cygwin をインストールした後、Windows 7 アカウントを削除し、同じ名前でアカウントを再作成しました。現在、Cygwin フォルダー内のファイルを編集したり、新しいフォルダー/ファイルを作成したりする際に問題が発生しています。権限を取り戻すために実行できるコマンドはありますか?
答え1
私は使わなければならなかった所有するcygwinで最初にすべてのファイルの所有権を取得します。私は管理者モード(右クリック)でcygwinを実行しました。cygwinディレクトリの所有権を取得するのは難しいです。サイグドライブすべてのハードドライブにリンクするので、cygwin フォルダで再帰的に実行しないことをお勧めします。構文は次のとおりです。
所有 /Fフォルダ/R
/R は再帰的です。したがって、cygwin 内のすべてのファイルとフォルダーに対してこれを実行します (または、cygwin フォルダーで試してください。ただし、お勧めしません)。
その後、Windows エクスプローラーで権限を設定する必要がありました。「cygwin」フォルダーを右クリックし、「セキュリティ」タブに移動して、ユーザー名が上部のウィンドウに表示されていることを確認します。また、以前のアカウントだったと思われる「不明」ユーザーも削除しました。そこに表示されていない場合は、編集 -> 追加 -> 名前を入力して「名前の確認」をクリックします。自分が誰であるかが見つかるはずです。「OK」をクリックします。「フル コントロール」を許可するチェックボックスをクリックすると、すべてのボックスにチェックが入ります。「OK」をクリックします。
その後、セキュリティタブが開いたままになっているはずです。「詳細設定」->「権限の変更」->ユーザー名を強調表示->「編集」->「許可」の下のすべてのボックスがチェックされていることを確認し、応募する「このフォルダ、サブフォルダ、およびファイル」です(チェックボックスはオンにしないでください)。「OK」を1回押し、「すべての子オブジェクトのアクセス許可を置き換える...」がオンになっていることを確認して、「OK」、「OK」、「OK」の順にクリックします。
これで準備完了です。
答え2
人間の名前は関係ありません。コンピューターは数字を扱います。
この特定のケースでは、数字はセキュリティ識別子、SID。
新しいアカウントを作成したとき、新しい SID が与えられました。古いアカウントの古い SID は再利用されませんでした。(セキュリティ上の問題になります。) すべてのファイルとディレクトリは、作成者所有者として古い SID でマークされています。また、それらの ACL では、作成者所有者または古い SID に直接アクセス権が付与されている可能性が非常に高いです。したがって、古いSID はアクセス権を持ち続けるものです。
たとえば、古いアカウントの SID が だった場合S-1-5-21-90593156-579754539-1338337383-1002
、新しいアカウントの SID は のように異なりますS-1-5-21-90593156-579754539-1338337383-1003
。ファイルとディレクトリは-1002
SID に読み取り/書き込み/検索/その他あらゆるアクセスを許可しますが、-1003
SID にはアクセス権限がありません。
takeown
所有権を取得するには、 ACLが作成者所有者ではなく、作成者所有者にアクセスを許可する場合、次のようなツールが1つの答えです。直接作成者所有者を変更するだけで、作成者所有者に権限を与えるACLは自動的に正しいSIDに権限を与えます。問題は、Windows NTでは所有権を取得する権限がないことです。元の所有者から許可を得る必要がある意図された新しい所有者に。所有権は(特別な権限がない限り)譲渡することも、許可なく引き継ぐこともできません。古いSIDのアカウントを削除したので、元の所有者はいません。付与するその権利を取得する必要があります。したがって、3 段階の手順を使用する必要があります。まず、何でも所有権を取得できるアカウント (管理者アカウントなど) が所有権を取得する必要があります。次に、そのアカウントが新しいアカウントに所有権の取得権限を付与する必要があります。最後に、新しいアカウントが管理者アカウントから所有権を取得する必要があります。
ACLが作成者所有者を介して間接的にではなく、古いSIDに直接アクセスを許可している場合、所有権を取得することはないこれに対する答えは、他の理由で後で実行する必要があるかもしれませんが、ACE 内の古い SID を新しい SID に置き換えることです。これは、subinacl
リソース キットのツールとその/replace
パラメータを使用して実行します。
参考文献
- マイクロソフト社(2004年)。SubInACL をダウンロード. ダウンロード センター。
- マイクロソフト株式会社 (2003-03-08)。セキュリティ記述子とアクセス制御リストのツールと設定. テックネット。
- ジェスパー・M・ヨハンソン(2008年)。ACL を管理するためのセキュリティ監視ツール. MSDN マガジン。TechNet。
- ジェスパー・M・ヨハンソン(2005年11月8日)。セキュリティで自ら足を撃つ方法、パート 2: ACL を使うべきか、使わないべきか. テックネット。
- マイクロソフト株式会社 (2006-11-01). Windows NT でオブジェクトをあるドメインから別のドメインに移行する方法. ID 301940。Microsoft KnowledgeBase。
答え3
そのため、cygwin の管理者として takeown を使用することができました。cygdrive ではなく、ディレクトリ cygwin/ のみを再帰的に変更する必要があることに同意します。私が付け加えることができる唯一のことは、所有権を取得したら、管理者として UNIX コマンドを発行して権限を変更できることです。
chmod 744 *
所有者が rwx 権限を持ち、他のすべてのユーザーが読み取り専用になるように権限を変更します。したがって、Windows 側で調整する必要はありません。