2

Время от времени Cygwin, похоже, создает файлы, которые вообще не могут быть удалены. При удалении из cygwin этого просто не происходит (rm ничего не говорит, но файл все еще там). При попытке из проводника он говорит, что мне нужны разрешения от администратора (и я администратор, у элемента удаления в выпадающем меню есть щит, и я предполагаю, что это означает, что я пытаюсь сделать это с привилегиями администратора). При попытке от Total Commander я сначала получаю сообщение об ошибке, и меня спрашивают, не хочу ли я повторить попытку администратора, а затем у меня все еще нет разрешения на удаление файла.

Я получаю ту же проблему, если пытаюсь просмотреть файл. Проблемы, когда я пытаюсь просмотреть свойства безопасности - нужно нажать защитную кнопку, чтобы стать администратором, а затем мне сообщают, что мне не разрешено просматривать ее, пока я не стану владельцем (что мне не разрешено делать).

Используя оболочку cygwin, я могу просматривать, но не изменять ACL (даже если оболочка запускается от имени администратора):

$ getfacl makefile.wine
# file: makefile.wine
# owner: Unknown+User
# group: Unknown+Group
user::rw-
group::r--
other:---
$ setfacl -b makefile.wine
setfacl: Permission denied

Однако при перезапуске Windows не было проблем с удалением файлов.

Почему / как Cygwin создает эти файлы (я выяснил, что они были созданы при запуске sed -i)? Как я могу избежать этого? И, наконец, есть ли вменяемый способ удалить файл?

4 ответа4

1

cygwin не должен создавать файлы, которые можно восстановить, по крайней мере, больше. Предполагая, что у вас установлена обновленная версия (cygwin 2.5.1): проверьте ACL для файлов с помощью: getfacl "filename", вы можете очистить разрешение ACL с помощью: setfacl -b "filename" Для получения подробной информации см. Руководства getfacl и setfacl. Дополнительное чтение https://cygwin.com/cygwin-ug-net/ntsec.html#ntsec-files

Как у вас от getfacl

владелец: неизвестен + пользователь

группа: неизвестно + группа

Это означает, что Cygwin не распознает владельца. Две возможности:

1) владелец больше не действителен в машине windows

2) вы используете какой-либо тип VPN или доменного подключения, а пользователь базы данных windows недоступен в определенных условиях.

Как администратор Windows, вы сможете сменить владельца, в том числе и Cygwin.

0

Я наконец-то решил эту проблему, используя Process Explorer (по умолчанию в последних версиях Windows), ищите в дескрипторах любой процесс, использующий это имя файла, и завершайте процесс.

Я подробно рассказал об этом в своем блоге.

Не пытайтесь восстановить разрешения, это не сработает.

0

Пожалуйста, попробуйте с командой takeown . В оболочке CMD с правами администратора выполните следующую команду:

takeown /F makefile.wine

и посмотрим теперь, если вы можете удалить его,

rm makefile.wine

Обновление: Спасибо за сообщение, и это был мой недосмотр. После команды takeown , вы можете щелкнуть правой кнопкой мыши по этому файлу в проводнике, чтобы просмотреть информацию о владельце и выполнить настройку оттуда?

0

У меня была та же проблема с Cygwin, но у меня не было прав администратора. У меня были папки с разрешениями, как это:

d---r-xr-x    1 jac  root        0 Feb  7 13:25 ciao

В моем случае я решил так:

  1. В проводнике Windows щелкните правой кнопкой мыши файл / папку и выберите "Свойства".
  2. Перейдите на вкладку "Безопасность".
  3. В: "Группы или имена пользователей" нажмите "Изменить"
  4. В: "Группы или имена пользователей" нажмите Добавить ...
  5. В: введите имена объектов, чтобы выбрать, введите ваше имя пользователя
  6. Нажмите Ok, если найдено несколько имен, вам может потребоваться подтвердить, какое из них ваше имя
  7. Выберите своего пользователя и дайте ему полный контроль над файлом, установив флажок.
  8. Нажмите OK во всех диалоговых окнах, теперь вы сможете удалить файл.

Проверено на Windows 7.

Надеюсь, что это может помочь любому, кто столкнется с той же проблемой.

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