Запрет удаления файлов

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slesh, 26 May 2011.

Thread Status:
Not open for further replies.
  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Собственно говоря возник вопрос - как через права NTFS сделать так, чтобы пользователь не мог удалить файл (без предварительного изменения прав доступа)

    т.е. когда-то видел что можно такое делать (какой-то малвар так делал), но вот что-то потерял.

    Причем самое что интересное :
    1) Админский аккаунт
    2) для файла ставлю - запретить любой доступ к файлу
    3) меняю владельца файла на SYSTEM

    т.е. по идее мой пользователь ничего не сможет сделать, пока не изменятся права доступа, так оно и есть, но вот почему-то файл удаляется всё равно.


    Может кто нибудь видел как это реализуется?
    т.е. важно именно через NTFS права (т.е. атрибут read only не подходит, да и использование сторонних защит тоже)
     
  2. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    по идее надо шаманить что то с acl списками?
     
  3. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 DooD ты гений!!!
    Я же описал сетуацию, что по ACL - доступа к файлу нет ни у кого. Владелец файла - SYSTEM и всё равно его можно в лёгкую удалить (хотя ни писать, ни читать, ни получать атрибуты нельзя. даже права доступа получать не даёт)
     
  4. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    только правами ntfs? перехват api не конает да?
    p.s. а малварь не мог повесить поток на файл?
     
    #4 DooD, 26 May 2011
    Last edited: 26 May 2011
  5. Steam[777]

    Steam[777] Elder - Старейшина

    Joined:
    27 Sep 2010
    Messages:
    295
    Likes Received:
    41
    Reputations:
    25
    Все правильно,запрет имеет более высокий приоритет, значит доступ к файлу будет запрещен.
    Может ПО, которое удаляет файл, работает из под учётки не того пользователя, которому запрет стоит?


    А по сабжу - добавить в ACL группу "Все" и запретить им любые действия с файлом - пока владелец не уберет эту запись из ACL, никто ничего с файлом не сделает
     
    #5 Steam[777], 26 May 2011
    Last edited: 26 May 2011
  6. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 DooD тут именно надо без перехватов и прочей хрени. Тем более что программа не всегда может быть запущена

    2 Steam[777] да в том, то и дело что всё запрещено, а файл всё равно можно удалить. (прога через которую удаляю - под моей учёткой запущена)
     
  7. Steam[777]

    Steam[777] Elder - Старейшина

    Joined:
    27 Sep 2010
    Messages:
    295
    Likes Received:
    41
    Reputations:
    25
    Проверил у себя на win 7 - при установленном запрете для "все" - не удаляет.
    Может, софтина стартует через шедуллер? В XP была проблема, когда софт стартовавший через at получал права SYSTEM

    Посмотри tasklist /v , может это прояснит ситуацию...
     
    #7 Steam[777], 26 May 2011
    Last edited: 26 May 2011
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    И Total Commander и Explorer - все в лёгкую удаляют этот файл. Потому что сижу под учёткой из группы админов.
    на Win7 у тебя не удаляется наверное из-за UAC.
     
  9. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    в настройках безопасности запретил удаление-не могу удалить.не через какой софт.
     
  10. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 DooD а ты попробуй shift+del сделать для этого файла
     
  11. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    я так сразу и делал
     
    2 people like this.
  12. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    я тестил и на WinXP SP2 и на WinXP SP3 - везде в лёгкую удаляется файл
     
  13. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    а ты через gui делал? попробуй через cacls или xcacls
     
  14. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 DooD да причем тут это? неважно как ты делаешь, главное что права меняются.
    я юзал уже и GUI и cacls и subinacl и сам писал прогу

    Короче тема закрыта. В винде (покрайней мере в XP) невозможно заблокировать удаление файла для администратора, даже если он не владелец файла. Можно ограничить доступ к файлу, но не запретить его удаление. такова уже система винды. Прав не тот, кто прав, а у кого больше прав
     
  15. Steam[777]

    Steam[777] Elder - Старейшина

    Joined:
    27 Sep 2010
    Messages:
    295
    Likes Received:
    41
    Reputations:
    25
    Возможно, но из ACL надо выносить всех,включая SYSTEM
    Проверил в XP,итого:
    1. Пользователь,из под которого велась работа - локальный администратор,владелец файла
    2. В ACL для группы пользователей "Все" установлен полный запрет над действия с файлом
    3. Из ACL удалены все записи кроме SYSTEM и "Все"
    4.Владелец оставлен прежний(пользователь, из под которого велась работа)
    5.Тестовый файл: c:\1.txt

    При попытке удаления через explorer - запрет доступа

    Ради интереса воткнул консольную команду для удаления тестового файла в батник c:\2.bat:
    del c:\1.txt

    Далее,через Run:
    at 12:25 /interactive c:\2.bat

    Файл - удалился

    Чтобы избежать удаления файла через at пришлось убрать из ACL и пользователя SYTEM тоже
    В общем, явный пример повышения привилегий до SYSTEM :)
    Получится ли без админских прав - не проверял
     
  16. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    2 Steam[777]
    1) удалил у файла все права доступа
    2) добавил Для Всех - запрет на всё
    3) Добавил для system запрет на всё

    Файл не удаляется. Все проги пишут что отказано в доступе, но достаточно сделать shift+del и файл спокойно удаляется.
     
Thread Status:
Not open for further replies.