Я использую GNU/Linux уже более 10 лет, поэтому считаю себя довольно знакомым с разрешениями на файлы.c program: Почему remove() удаляет файл без разрешения на запись
Чтобы проверить следующий код, я использовал 'chmod -w' в 'undo_path'. Затем я подтвердил, что файл не имеет разрешений на запись, используя ls -al. Он показал:
-r - R - r-- 1 Andy Andy 52 26 сентября 18:17 lastrmw
Затем я попробовал код. Дважды. Оба раза команда remove() была успешной.
if (remove (undo_path))
{
fprintf (stderr, "Warning: failed to remove %s\n", undo_path);
perror (__func__);
}
Как удалить файл без разрешения на запись?
Я использую Debian 8/Jessie, и мое ядро: Linux OCEANUS 3.16.0-4-amd64 # 1 SMP Debian 3.16.36-1 + deb8u1 (2016-09-03) x86_64 GNU/Linux
Разрешения для файлов относятся к * содержимому * файла. –
Но подумайте еще раз: есть ли, возможно, какой-то другой файл, имя которого, собственно, является частью содержимого? –
Спасибо, @KerrekSB, я вижу, когда я использую rm в файле, я получаю приглашение удалить его до его удаления. Забавно, что раньше я этого не осознавал. – andy5995