C # создание файла - как предоставить IUSR DELETE? - PullRequest
0 голосов
/ 06 февраля 2009

У меня есть консольная программа, написанная на C #, которая работает под пользователем foo. Программа создает файл. В некоторых ситуациях веб-приложение, работающее под управлением IUSR, должно иметь возможность удалять файлы, созданные консольным приложением.

Я хотел бы предоставить DELETE (или что-нибудь эквивалентное) IUSR при создании файла. Как я могу сделать это в C #?

Я нашел FileIOPermission , и я не уверен, для чего это нужно, но так как вы не можете указать конкретного пользователя, я почти уверен, что теперь это то, что мне нужно.

Кто-нибудь получил хороший указатель о том, как это сделать?

[Между прочим, я понимаю, что в некоторых кругах предоставление IUSR DELETE прав на любые файлы было бы довольно хитрым делом, но в этом случае природа файлов означает, что я рад предоставить эти права IUSR ]

Ответы [ 3 ]

2 голосов
/ 06 февраля 2009

@ Сабау: спасибо за поправку к вашему ответу - это вдохновило меня на повторную попытку, и в этот раз мне кажется, что все получилось. Я написал небольшую тестовую программу, чтобы другие могли видеть, как это делается. Для тестирования я предоставил полный контроль над IUSR, но, очевидно, вы можете добавлять / отклонять все, что захотите.

    using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Security.Permissions;
using System.Security.Principal;
using System.Security.AccessControl;

namespace GrantingFilePermsTests
{
    class Program
    {
    static void Main(string[] args)
    {
        string strFilePath1 = "E:/1.txt";
        string strFilePath2 = "E:/2.txt";

        if (File.Exists(strFilePath1))
        {
        File.Delete(strFilePath1);
        }
        if (File.Exists(strFilePath2))
        {
        File.Delete(strFilePath2);
        }

        File.Create(strFilePath1);
        File.Create(strFilePath2);
        // Get a FileSecurity object that represents the
        // current security settings.
        FileSecurity fSecurity = File.GetAccessControl(strFilePath1);

        // Add the FileSystemAccessRule to the security settings.
        fSecurity.AddAccessRule(new FileSystemAccessRule("IUSR_SOMESERVER",FileSystemRights.FullControl,AccessControlType.Allow));

        // Set the new access settings.
        File.SetAccessControl(strFilePath1, fSecurity);



        }
    }
}

Спасибо всем за ответы.

1 голос
/ 06 февраля 2009

Произведен быстрый поиск в Google Установка разрешений NTFS с C #

1 голос
/ 06 февраля 2009

Используйте проводник Windows -> выберите каталог, в котором находится файл -> щелкните правой кнопкой мыши -> Свойства -> вкладка Безопасность -> предоставьте право «Изменить» учетной записи пользователя IUSR_xxx.

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

Отредактировано: для программной установки разрешений ntfs вам нужно поиграться с System.Security.AccessControl.FileSecurity и File.SetAccessControl методом.

Надеюсь, это поможет.

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