Как остановить Cygwin от создания файлов, которые невозможно восстановить? Или я могу их как-то удалить?
Время от времени 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
)? Как я могу избежать этого? И, наконец, есть ли какой-нибудь вменяемый способ удалить файл?
5 ответов
Cygwin не должен создавать файлы, которые можно удалить, по крайней мере, больше. Предполагая, что у вас установлена обновленная версия (cygwin 2.5.1): проверьте ACL для файлов с помощью: getfacl "имя-файла", вы можете очистить разрешение ACL с помощью: setfacl -b "имя-файла". Подробности см. В руководствах по getfacl и setfacl. Дополнительное чтение https://cygwin.com/cygwin-ug-net/ntsec.html
Как у вас от getfacl
владелец: неизвестен + пользователь
группа: неизвестно + группа
Это означает, что Cygwin не распознает владельца. Две возможности:
1) владелец больше не действителен в машине windows
2) вы используете какой-либо тип VPN или доменного подключения, а пользователь базы данных windows недоступен в определенных условиях.
Как администратор Windows вы сможете сменить владельца, в том числе и Cygwin.
Я наконец-то решил эту проблему, используя Process Explorer (по умолчанию в последних версиях Windows), ищите в дескрипторах любой процесс, использующий это имя файла, и завершайте процесс.
Я подробно рассказал об этом в своем блоге.
Не пытайтесь восстановить разрешения, это не сработает.
У меня была та же проблема с Cygwin, но у меня не было прав администратора. У меня были папки с такими правами доступа:
d---r-xr-x 1 jac root 0 Feb 7 13:25 ciao
В моем случае я решил так:
- В проводнике Windows щелкните правой кнопкой мыши файл / папку и выберите "Свойства".
- Перейдите на вкладку "Безопасность".
- В: "Группы или имена пользователей" нажмите "Изменить"
- В: "Группы или имена пользователей" нажмите Добавить...
- В: введите имена объектов для выбора введите ваше имя пользователя
- Нажмите Ok, если найдено несколько имен, вам может потребоваться подтвердить, какое из них ваше имя
- Выберите своего пользователя и дайте ему полный контроль над файлом, установив флажок.
- Нажмите OK во всех диалоговых окнах, теперь вы сможете удалить файл.
Проверено на Windows 7.
Надеюсь, что это может помочь любому, кто столкнется с той же проблемой.
Пожалуйста, попробуйте с takeown
команда. В оболочке CMD с правами администратора выполните следующую команду:
takeown /F makefile.wine
и посмотрим теперь, если вы можете удалить его,
rm makefile.wine
Обновление: Спасибо за сообщение, и это был мой недосмотр. После takeown
Команда, можете ли вы щелкнуть правой кнопкой мыши по этому файлу в проводнике, чтобы просмотреть информацию о владельце и выполнить настройку оттуда?
Я попробовал этот метод с помощью команды takeown, запущенной из окна cmd, как предложено в
https://wasteofserver.com/cygwin-created-file-cannot-delete/
Поэтому я документирую здесь проблему и метод на случай, если кто-то столкнется с той же проблемой.
Я скачал видео с нашей встречи в Скайпе и не смог его воспроизвести.
и не удаляйте его из проводника Windows:
Поэтому я запустил Cygwin, чтобы проверить права доступа к файлу:
tcsh 31> ls -l Video-20220524_154638-Meeting\ Recording.mp4-rw-r----- 1 Неизвестный+Пользователь Неизвестный+Группа 113770496 24 мая 12:10 'Video-20220524_154638-Meeting Recording.mp4'
у которого были Неизвестный+Пользователь и Неизвестный+Группа.
Я открыл окно командной строки (cmd) из Windows: нажмите «Пуск», затем введите «cmd» (без кавычек) в поле поиска.
В окне cmd перейдите в папку «Загрузки», в которой находился загруженный видеофайл:
C:\Users\vql>Загрузки компакт-диска
Запустите команду takeown с параметром /r (удалить) /f (принудительно) для видеофайла:
C:\Users\vql\Downloads>takeown /r /f "Video-20220524_154638-Meeting Recording.mp 4" ОШИБКА: доступ запрещен.
C:\Пользователи\vql\Загрузки>
Это не работает.
Обновление: после выхода из Skype я смог удалить видеофайл. Так что Skype просто сохранил видеофайл, который нельзя было удалить, пока я не вышел из Skype.