txt texto notas manipular lineas leer guardar escribir eliminar directorios directorio datos crear bloc archivos archivo agregar c# security permissions ntfs

texto - Creación de archivos C#: ¿cómo otorgar IUSR DELETE?



leer y escribir archivos en c# (3)

Tengo un programa de consola escrito en C # que se ejecuta bajo el usuario foo. El programa crea un archivo. En algunas situaciones, una aplicación web que se ejecuta bajo el IUSR necesita poder eliminar los archivos creados por la aplicación de la consola.

Me gustaría otorgar DELETE (o algo equivalente) a IUSR cuando se crea el archivo. ¿Cómo puedo hacer eso en C #?

Encontré FileIOPermission y no estoy seguro de qué es eso, pero como no puede especificar un usuario en particular, estoy bastante seguro de que ahora es lo que necesito.

Alguien tiene un buen puntero sobre cómo hacer esto?

[Por cierto, me doy cuenta de que en algunos círculos otorgar los derechos de IUSR DELETE sobre cualquier archivo sería una cosa bastante dudosa, pero en este caso la naturaleza de los archivos implicados significa que estoy feliz de otorgar estos derechos a IUSR]


@Sabau: gracias por la enmienda a su respuesta, me inspiró a intentarlo de nuevo y esta vez parece que funcionó. Escribí un pequeño programa de prueba para que otros puedan ver cómo se hace. Para mis pruebas, le di al IUSR el control total, pero obviamente puede agregar / denegar lo que quiera.

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); } } }

Gracias a todos por sus respuestas.



Use el Explorador de Windows -> seleccione el directorio donde reside el archivo -> haga clic con el botón derecho -> Propiedades -> pestaña Seguridad -> proporcione el derecho "Modificar" a la cuenta de usuario IUSR_xxx.

Supongo que tiene acceso físico a la computadora que ejecuta tanto la aplicación de la consola como la aplicación web.

Editado: para la configuración programática de los permisos ntfs que necesita manipular con la clase System.Security.AccessControl.FileSecurity y el método File.SetAccessControl .

Espero eso ayude.