Как программно изменить атрибуты безопасности файла, чтобы любой пользователь мог удалить файл - PullRequest
4 голосов
/ 12 февраля 2009

У меня есть сервер, написанный на C #, который использует олицетворение.

Я хотел бы знать, как я могу изменить атрибуты безопасности файла, чтобы его мог удалить любой пользователь.

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

Как мне это сделать (предпочтительно C #, но p / invoke тоже будет работать).

В настоящее время я использую .NET 1.1, поэтому был бы признателен метод, который может быть реализован в 1.1.

Ответы [ 2 ]

4 голосов
/ 12 февраля 2009

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

public static void AllowIdentityToDelete(FileInfo file, string identity)
{
    var rule = new FileSystemAccessRule(
        identity,
        FileSystemRights.Delete | FileSystemRights.DeleteSubdirectoriesAndFiles,
        AccessControlType.Allow);

    var acls = file.GetAccessControl();
    acls.AddAccessRule(rule);
    file.SetAccessControl(acls);
}

Вам нужно будет указать правильную личность для данного пользователя.

4 голосов
/ 12 февраля 2009

Похоже, что вы хотите использовать метод System.IO.File.SetAccessControl , чтобы добавить ACL, который дает встроенной группе «Все» возможность удалить файл. В документации MSDN есть достойный пример добавления и удаления записей ACL в файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...