Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Diritti Utente ASPNET
giovedì 09 dicembre 2004 - 17.17
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
gio 9 dic 2004 - 17:17
Ciao, nel mio portale un particolare utente con diritti amministrativi può creare directory (tramite C#) sul webServer in cui poi il codice C# può scrivere delle info (oppure ad esempio effettuare upload dei file).
Ma come aggiungere nelle proprietà di Protezione l'utente ASPNET piuttosto che NETWORK Service con i relativi diritti di Lettura, modifica, pieno controllo?
LudovicoVan
Profilo
| Junior Member
106
messaggi | Data Invio:
ven 10 dic 2004 - 01:47
Ciao,
NETWORK Service? Se il codice C# di cui parli viene eseguito da pagine web, allora l'utente corrente è (già) ASPNET, dunque i folder creati avranno automaticamente i permessi giusti. Occorre solo che nel folder che fa da *root* ci siano i permessi necessari per ASPNET.
Forse non ho capito qualcosa?
-LV
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 10 dic 2004 - 09:32
Ciao LudovicoVan,
di solito si impostano manualmente questi diritti nel file system.
Se fai tasto destro proprietà sulle cartelle, linguetta protezione, puoi definire i vari permessi ai vari utenti.
Le cartelle create all'interno se non erro ereditano i permessi da quelle superiori.
ciao
david
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
ven 10 dic 2004 - 09:56
LudovicoVan, l'utente NetworkService si riferisce ad IIS 6 e come diceva BrainKiller non voglio impostarli manualmente.
Ho trovato una soluzione, molto utile e funzionale ma ahimè sembra molto lenta (penso sia normale), chi volesse può provare.
Active Directory Service Interfaces (ADSI) SDK 2.7 (Microsoft):
http://www.microsoft.com/ntserver/nts/download/other/ADSI25/default.asp
per scaricare l'SDK.
Per un esempio (in vb):
http://support.microsoft.com/kb/818362/EN-US/
Questa invece la mia conversione in C# (la sto testando):
public static void SetPermissions(string vPath, string UserName)
{
ADsSecurity objADsSec;
SecurityDescriptor objSecDes;
AccessControlList objDAcl;
Object objAce;
AccessControlEntry objAce1;
AccessControlEntry objAce2;
ADsSID objSId;
Object objSIdHex;
objADsSec = new ADsSecurityClass();
objSecDes = Convert.ChangeType(objADsSec.GetSecurityDescriptor("FILE://" & vPath), SecurityDescriptor);
objDAcl = Convert.ChangeType(objSecDes.DiscretionaryAcl, AccessControlList);
objSId = new ADsSIDClass();
objSId.SetAs(ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SAM, UserName);
objSIdHex = objSId.GetAs();
// Add a new objAce so that the User has Full Control on NTFS Files.GetAs()
objAce1 = new AccessControlEntryClass();
objAce1.Trustee = (objSIdHex).ToString();
objAce1.AccessMask = ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL;
objAce1.AceType = ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;
objAce1.AceFlags = ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ACE || ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ONLY_ACE || 1;
objDAcl.AddAce(objAce1);
// Add a new objAce so that the User has Full Control on NTFS Folders.
objAce2 = new AccessControlEntryClass();
objAce2.Trustee = (objSIdHex).ToString();
objAce2.AccessMask = ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL;
objAce2.AceType = ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED;
objAce2.AceFlags = ActiveDs.ADS_ACEFLAG_ENUM.ADS_ACEFLAG_INHERIT_ACE || 1;
objDAcl.AddAce(objAce2);
objSecDes.DiscretionaryAcl = objDAcl;
// Set Permissions on the NTFS folder.
objADsSec.SetSecurityDescriptor(objSecDes);
}
FrancescoGuadagno
Profilo
| Senior Member
224
messaggi | Data Invio:
ven 10 dic 2004 - 11:01
scusate, ma ho scritto una versione "intermedia" del codice. La versione definitiva, testata e funzionante è la seguente:
public static void SetPermissions(string vPath, string UserName)
{
ADsSecurity objADsSec;
SecurityDescriptor objSecDes;
AccessControlList objDAcl;
Object objAce;
AccessControlEntry objAce1;
AccessControlEntry objAce2;
ADsSID objSId;
Object objSIdHex;
try
{
objADsSec = new ADsSecurityClass();
objSecDes = (SecurityDescriptor)(objADsSec.GetSecurityDescriptor("FILE://" + vPath));
objDAcl = (AccessControlList)(objSecDes.DiscretionaryAcl);
objSId = new ADsSIDClass();
objSId.SetAs(Convert.ToInt32(ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SAM), UserName);
objSIdHex = objSId.GetAs(Convert.ToInt32(ADSSECURITYLib.ADS_SID_FORMAT.ADS_SID_SDDL));
// Add a new objAce so that the User has Full Control on NTFS Files.GetAs()
objAce1 = new AccessControlEntryClass();
objAce1.Trustee = (objSIdHex).ToString();
objAce1.AccessMask = Convert.ToInt32(ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL);
objAce1.AceType = Convert.ToInt32(ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED);
objAce1.AceFlags = (0x2 | 0x8 | 0x1);
objDAcl.AddAce(objAce1);
// Add a new objAce so that the User has Full Control on NTFS Folders.
objAce2 = new AccessControlEntryClass();
objAce2.Trustee = (objSIdHex).ToString();
objAce2.AccessMask = Convert.ToInt32(ActiveDs.ADS_RIGHTS_ENUM.ADS_RIGHT_GENERIC_ALL);
objAce2.AceType = Convert.ToInt32(ActiveDs.ADS_ACETYPE_ENUM.ADS_ACETYPE_ACCESS_ALLOWED);
objAce2.AceFlags = (0x2 | 0x1);
objDAcl.AddAce(objAce2);
objSecDes.DiscretionaryAcl = objDAcl;
// Set Permissions on the NTFS folder.
objADsSec.SetSecurityDescriptor(objSecDes,("FILE://" + vPath));
}
catch (Exception ex)
{
...
}
}
per richiamare la funzione:
Classe.SetPermissions("c:/prova","NOMEMACCHINA\ASPNET");
ciao
LudovicoVan
Profilo
| Junior Member
106
messaggi | Data Invio:
ven 10 dic 2004 - 11:08
> di solito si impostano manualmente questi diritti nel file system.
> Se fai tasto destro proprietà sulle cartelle, linguetta protezione,
> puoi definire i vari permessi ai vari utenti.
> Le cartelle create all'interno se non erro ereditano i permessi da quelle superiori.
E io cosa ho detto?
Secondo me state cercando di risolvere un problema che non esiste... anyways, just my two cents.
-LV
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !