3

Я установил Cygwin, а затем удалил свою учетную запись Windows 7 и заново создал учетную запись с тем же именем. Теперь у меня проблемы с редактированием файлов в папке Cygwin или созданием новых папок / файлов. Есть ли команда, которую я могу запустить, чтобы вернуть мои разрешения?

3 ответа3

7

Мне пришлось использовать takeown в cygwin, чтобы сначала взять на себя ответственность за все файлы. Я запустил Cygwin в режиме администратора (правой кнопкой мыши). Взять на себя ответственность за каталог cygwin довольно сложно, поскольку cygdrive будет ссылаться на все ваши жесткие диски , поэтому я бы посоветовал не делать это рекурсивно в папке cygwin. Синтаксис:

забрать /F папка /R

где /R рекурсивно. Сделайте это для всех файлов и папок в cygwin (или попробуйте в папке cygwin, но я не рекомендую).

После этого мне нужно было настроить свои разрешения через проводник Windows. Щелкните правой кнопкой мыши папку "cygwin", перейдите на вкладку "security" и убедитесь, что ваше имя пользователя находится в верхнем окне. Я также удалил "неизвестного" пользователя, который, как я предполагаю, был моим предыдущим аккаунтом. Если вас там нет: Нажмите "Изменить" -> "Добавить" -> введите свое имя и нажмите "Проверить имена". Он должен найти, кем вы себя считаете, а затем нажать "ОК". Установите флажок для разрешения "Полный доступ", и он должен поставить флажки во всех полях. Нажмите "ОК".

Затем вы все равно должны быть на вкладке "Безопасность", нажать "Дополнительно" -> "Изменить разрешения" -> Выделите свое имя пользователя -> "Изменить" -> убедитесь, что все флажки установлены в "разрешить" и « Применить к» это "Эта папка" , подпапки и файлы "(флажок не должен быть отмечен). Нажмите "ОК" один раз, убедитесь, что установлен флажок «Заменить все разрешения дочернего объекта ...», нажмите "ОК", "ОК", "ОК".

И тебе должно быть хорошо идти.

2

Таким образом, я смог использовать takeown, как был администратором в Cygwin. Я согласен, что ТОЛЬКО каталог cygwin/, а не cygdrive, должен изменяться рекурсивно. Единственное, что я могу добавить, это то, что после того, как я вступил во владение, я мог выдавать команды unix, как администратор, для изменения разрешений.

chmod 744 *

Изменяет разрешения так, чтобы у владельца был rwx, а у всех остальных - только для чтения. Так что не стоит возиться со стороной Windows.

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 . Файлы и каталоги предоставляют доступ на чтение / запись / поиск / любой SID -1002 , а SID -1003 не имеет доступа.

Принятие прав собственности с помощью такого инструмента, как takeown является одним из ответов на этот случай в случае, когда списки ACL предоставляют доступ создателю-владельцу, а не напрямую к старому SID. Просто измените, кто является владельцем-создателем, и списки ACL, которые предоставляют права владельцу-создателю, автоматически предоставляют права на правильный SID. Проблема в том, что в Windows NT разрешение на владение должно быть предоставлено первоначальным владельцем предполагаемому новому владельцу. Право собственности не может (без особых привилегий) быть передано или принято без разрешения. Вы удалили учетную запись со старым идентификатором безопасности, поэтому теперь нет первоначального владельца, который бы предоставил это право. Таким образом, вы должны использовать трехходовую процедуру. Во-первых, учетная запись с возможностью взять на себя ответственность за что-либо (например, учетная запись администратора) должна вступить во владение. Затем эта учетная запись должна предоставить права владения новой учетной записью. Наконец, ваша новая учетная запись должна стать владельцем учетной записи администратора.

Если списки ACL предоставляют доступ непосредственно к старому SID, а не косвенно через владельца-создателя, то переход к владению не является ответом на это, хотя, возможно, вы захотите сделать это позже по другим причинам. Подстановка нового SID для старого SID в ACE - это. Это делается с помощью инструмента subinacl из Resource Kit и его параметра /replace .

дальнейшее чтение

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .