Я установил Cygwin, затем удалил свою учетную запись Windows 7 и заново создал учетную запись с тем же именем. Теперь у меня возникли проблемы с редактированием файлов в папке Cygwin или созданием новых папок/файлов. Есть ли команда, которую я могу выполнить, чтобы вернуть свои разрешения?
решение1
Мне пришлось использоватьзабратьв cygwin, чтобы сначала стать владельцем всех файлов. Я запустил cygwin в режиме администратора (щелчок правой кнопкой мыши). Стать владельцем каталога cygwin сложно, потому чтоcygdriveбудет ссылаться на все ваши жесткие диски, поэтому я бы не советовал делать это рекурсивно в папке cygwin. Синтаксис такой:
забрать /Fпапка/Р
где /R рекурсивно. Так что сделайте это для всех файлов и папок в cygwin (или попробуйте это для папки cygwin, но я не рекомендую).
После этого мне нужно было настроить разрешения через проводник Windows. Щелкните правой кнопкой мыши по папке "cygwin", перейдите на вкладку "безопасность", убедитесь, что ваше имя пользователя находится в верхнем окне. Я также удалил "неизвестного" пользователя, который, как я предполагаю, был моей предыдущей учетной записью. Если вас там нет: Нажмите "Изменить" -> "Добавить" -> введите свое имя и нажмите "Проверить имена". Он должен найти, кем вы себя считаете, а затем нажмите "ОК". Установите флажок "Разрешить полный доступ", и он должен установить все флажки. Нажмите "ОК".
Затем вы все еще должны находиться на вкладке «Безопасность», нажмите «Дополнительно» -> «Изменить разрешения» -> Выделите свое имя пользователя -> «Изменить» -> убедитесь, что все флажки установлены под «Разрешить» иПодать заявку на"Эта папка, подпапки и файлы" (флажок не должен быть установлен). Нажмите "ОК" один раз, убедитесь, что "Заменить все разрешения дочерних объектов..." отмечено, нажмите "ОК", "ОК", "ОК".
И все должно быть готово.
решение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
является одним из ответов на этот вопрос, в случае, когда списки контроля доступа предоставляют доступ создателю-владельцу, а ненапрямуюна старый SID. Просто измените, кто является создателем-владельцем, и ACL, которые предоставляют права создателю-владельцу, автоматически предоставят права правильному SID. Проблема в том, что в Windows NT разрешение на получение права собственностидолжно быть предоставлено первоначальным владельцемпредполагаемому новому владельцу. Право собственности не может быть (без особых привилегий) передано или принято без разрешения. Вы удалили учетную запись со старым SID, поэтому теперь нет первоначального владельцанаградитьэто право. Таким образом, вам придется использовать трехэтапную процедуру. Во-первых, учетная запись с возможностью стать владельцем чего-либо (например, учетная запись администратора) должна стать владельцем. Затем эта учетная запись должна предоставить права стать владельцем вашей новой учетной записи. Наконец, ваша новая учетная запись должна стать владельцем учетной записи администратора.
Если списки контроля доступа предоставляют доступ напрямую к старому SID, а не косвенно через создателя-владельца, то принятие права собственностинетответ на это, хотя кто-то может захотеть сделать это позже по другим причинам. Замена нового SID на старый SID в ACE. Вы делаете это с помощью инструмента subinacl
из Resource Kit и его /replace
параметра.
дальнейшее чтение
- Корпорация Microsoft (2004).Скачать SubInACL. Центр загрузки.
- Корпорация Microsoft (08.03.2003).Инструменты и настройки дескрипторов безопасности и списков контроля доступа. ТехНет.
- Йеспер М. Йоханссон (2008).Инструменты наблюдения за безопасностью для управления списками контроля доступа. Журнал MSDN. TechNet.
- Йеспер М. Йоханссон (08.11.2005).Как выстрелить себе в ногу с помощью безопасности, часть 2: делать или не делать ПКС. ТехНет.
- Корпорация Microsoft (01.11.2006). Как перенести объекты из одного домена в другой в Windows NT. Идентификатор 301940. База знаний Microsoft.
решение3
Итак, я смог использовать takeown, будучи администратором под cygwin. Я согласен, что ТОЛЬКО каталог cygwin/, а не cygdrive, должен быть изменен рекурсивно. Единственное, что я могу добавить, это то, что как только я стал владельцем, я смог выполнять команды unix, как администратор, для изменения прав доступа
чмод 744 *
Изменяет разрешения так, что владелец имеет rwx, а все остальные имеют права только на чтение. Так что никаких манипуляций со стороной Windows.