Squeak.ru - шаблоны программирования

Программа удаляет файл другого пользователя

У меня есть два пользователя. Пользователь 1 запускает программу, которая пытается удалить файл пользователя 2. Но моя программа всегда возвращает мне «отказано в доступе».

Когда я пытаюсь удалить файл сам как user1 с помощью команды rm, проблем нет. Разрешение файлов 775, и мой пользователь1 находится в группе пользователя2. Эта группа также является владельцем файлов. Разрешение каталога, в котором находятся файлы, тоже 775.

Для удаления файла написанная мной программа использует функцию «удалить» из c/c++. У кого-нибудь есть решение или идея?

Я уже задавал этот вопрос на unix.stackexchange.com. Они послали меня сюда.

Вот мой код:

недействительным удалить файл () {

    if(0 != remove("File1.txt"))
        cout<<"Error deleting File: "<<strerror(errno)<<endl;
    if(0 != remove("File2.txt"))
        cout<<"Error deleting File: "<<strerror(errno)<<endl;
}

я переименовал файлы, но я знаю, что исходные пути верны. я уже тестировал это

дополнительная информация: хорошо, я запустил программу как user2, и файлы были удалены без каких-либо проблем.

groups user1 users user2

groups user2 user2 adm www-data plugdev users ftp vsftpd

ls -lah drwxrwxr-x 7 user2 user2 4.0K Nov 27 14:13 . drwxrw-r-x 4 user2 user2 4.0K Nov 11 12:34 .. -rwxrwxr-x 1 user2 user2 50 Nov 12 15:12 File1.txt -rwxrwxr-x 1 user2 user2 826 Nov 27 14:13 File2.txt


  • какова собственность содержащего каталога? режим 775 не очень помогает, если он находится в какой-то ДРУГОЙ группе, чем файлы/пользователи. 02.12.2014
  • Каковы разрешения исполняемой программы? 02.12.2014
  • Я думал, что функция удаления файла была unlink. 02.12.2014
  • stackoverflow.com/questions/678325/remove- файл-в-c-под-unix 02.12.2014
  • извините, но я не могу понять, что именно вы имеете в виду. каталог, в котором находятся файлы, принадлежит пользователю user2 и группе user2. Вы можете увидеть это в выводе ls -lah, который я уже разместил в вопросе. Или я неправильно тебя понимаю? 02.12.2014
  • @BenVoigt функция удаления автоматически вызывает отмену ссылки, если путь указывает на файл. увидеть человека удалить 02.12.2014
  • @Camron_Godbout разрешение исполняемой программы также равно 775 и принадлежит пользователю1 и группе пользователь2 02.12.2014

Ответы:


1

Попробуйте запустить rm и вашу команду с strace как user1:

strace your_program
strace rm File1.txt File2.txt

Вы должны увидеть, что Ваша программа и rm делают по-разному.

01.12.2014
Новые материалы

Угловая структура архитектуры
Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

«Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

Создайте API с помощью Python FastAPI
Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

Веселье с прокси-сервером JavaScript
Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...