Su Windows XP: come creare un utente con accesso in lettura a una sola directory specifica?

StackOverflow https://stackoverflow.com/questions/407069

  •  03-07-2019
  •  | 
  •  

Domanda

Lasciatemi dire prima: so che qualsiasi utente che desidera eseguire un programma (o addirittura effettuare l'accesso) deve avere accesso (probabilmente almeno) alle directory di sistema di Windows e alle librerie condivise in % ProgramFiles % , ma vorrei poter accedere a Skype, ad esempio, eseguendolo con un utente non privilegiato e assicurandomi che non possa accedere a nessun file non necessari.

Temo che l'unico modo per farlo sarebbe quello di identificare tutte le directory gazillion in cui memorizzo i file a cui non voglio che questo utente acceda e quindi creare un nuovo gruppo di utenti che può accedere a queste directory o eseguire Skype e Azureus in una macchina virtuale.

C'è un modo migliore?

È stato utile?

Soluzione

Normalmente, gli account sono almeno membri del gruppo Users, che ha accesso a molte cose. Puoi rendere l'account un membro di nessun gruppo o il gruppo Guest, che è molto restrittivo.

Il vero problema è che il token del programma (un oggetto di sicurezza interno che tiene traccia delle identità di sicurezza di un processo in esecuzione) conterrà i gruppi Everyone e Authenticated Users, che hanno anche accesso in lettura a molte cose. Non è possibile creare un account senza tali gruppi. Potresti rimuovere l'accesso che hanno tutti e gruppi di utenti autenticati a quasi tutto, ma sarebbe molto difficile rintracciarli tutti.

Direi che la creazione di un account di accesso utente o ospite standard per programmi non attendibili sarebbe abbastanza sicura. Per supportare gli aggiornamenti automatici e mantenere i file correlati nello stesso posto, ti suggerisco di installare quei programmi direttamente nel profilo dell'account utente che verranno eseguiti come, ad es. C: \ Documents and Settings \ skype \ Programmi \ Skype

Se vuoi essere davvero fantasioso, puoi usare un token limitato per far negare solo i gruppi Everyone, Authenticated Users, ecc. (quindi non possono concedere alcun accesso) o creare un elenco SID limitato. Questo sarà difficile da implementare perché ci sono oggetti globali a cui i programmi si aspetteranno di accedere a cui il gruppo Everyone ha accesso, che di solito è una scelta sicura.

Vedi Funzione CreateRestrictedToken .

Esiste anche un programma da riga di comando open source che ho creato al momento un programma per la creazione di token e oggetti lavoro limitati: UlimitNT

Altri suggerimenti

Forse sudown è una soluzione. È un approccio sudo-simile (come noto da Linux) all'esecuzione come utente non privilegiato, ma con la possibilità di promuovere un account amministrativo (con password) quando necessario.

Suppongo che tu possa bloccare la macchina in modo che l'utente possa solo accedere, nemmeno avviare skype con i suoi diritti, ma avviare skype con " esegui come " con il sudown.

Oltre all'utilizzo di una VM, è possibile esaminare l'utilizzo di un Sandbox. Guarda Sandboxie fox un esempio.

usa semplicemente acl apis (esempi in msdn)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top