Indipendentemente dalla lingua di Windows, come posso impostare il comando ICACLS per impostare una cartella per avere pieno accesso a tutti?


9

sfondo

Di 'che ho questo comando

icacls C:\FullyAccessibleFolder /grant Users:(OI)(CI)F

Funziona bene nelle versioni inglesi di Windows, ma non sembra funzionare nelle versioni francesi, dando il seguente errore, presumibilmente dovuto alla Usersdifferenza in francese. Everyoneviene tradotto come Tout le mondein Windows, quindi neanche questa è una soluzione.

Users: Le mappage entre les noms de compte et les ID de sécurité n'a pas été effectué.

Che Google traduce come

Users: The mapping between account names and security IDs was not performed.

Domanda

Esiste un comando che posso usare per impostare una cartella e ricorsivamente tutto il suo contenuto in modo da disporre delle autorizzazioni complete per tutti gli utenti in un modo che funzioni su versioni linguistiche diverse di Windows?

Contenuto da tutto il Web

Questa pagina con un problema in gran parte simile parla di come Everyonediventa Jederin tedesco e Tout le mondein francese.


2
Basta usare il SID: icacls C:\FullyAccessibleFolder /grant S-1-5-32-545:(OI)(CI)F funziona ovunque.
Ben

2
@Ben, dovrebbe essere icacls C:\folder /grant *S-1-5-32-545:(OI)(CI)F, hai lasciato fuori l'asterisco.
Harry Johnston,

Risposte:


10

Non funziona nelle versioni francesi, presumibilmente a causa della Usersdiversa

Hai tre opzioni, descritte di seguito:

  1. Utilizzare il portale della lingua per ottenere il nome tradotto

  2. Recupera il nome localizzato dal UsersSID

  3. Utilizzare il UsersSID conicacls


Opzione 1: utilizzare il portale linguistico (risorsa canonica per Microsoft Terminology)

Viene restituita una ricerca per Utenti :

Traduzioni in prodotti Microsoft localizzati

    English Translation         Product
    Users   Utilisateurs        Windows 7
    Users   des utilisateurs    Windows 7
    Users   Utilisateurs        Windows 8 Modern Voice
    Users   Utilisateurs        Windows 8
    Users   Utilisateurs        Windows 8.1
    USERS   UTILISATEURS        Windows 8.1
    Users   Utilisateurs        Windows 10
    Users   des utilisateurs    Windows 10
    Users   Utilisateurs        Windows 10 Anniversary Update
    users   utilisateurs        Windows 10 Anniversary Update

Ciò suggerisce che il seguente comando potrebbe funzionare:

icacls C:\FullyAccessibleFolder /grant Utilisateurs:(OI)(CI)F

Opzione 2: recuperare il nome localizzato dal UsersSID ( S-1-5-32-545)

SID: S-1-5-32-545

Nome: utenti

Descrizione: un gruppo integrato. Dopo l'installazione iniziale del sistema operativo, l'unico membro è il gruppo Utenti autenticati. Quando un computer si unisce a un dominio, il gruppo Domain Users viene aggiunto al gruppo Users sul computer.

Origine Identificatori di sicurezza noti nei sistemi operativi Windows

Per recuperare il Usersnome del gruppo localizzato :

Questo semplice script ti darà il nome effettivo del (S-1-5-32-545)gruppo "Utenti" su un determinato PC:

    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set objAccount = objWMIService.Get ("Win32_SID.SID='S-1-5-32-545'")
    Wscript.Echo objAccount.AccountName

Inseriscilo in un file con estensione vbs (supponiamo usersName.vbs).

Ora esegui:

echo Y|for /f "delims=" %i in ('cscript -Nologo usersName.vbs') do cacls foldername /G "%i":F

Source Cacls, Windows 7, autorizzazioni complete, nomi locali di wmz


Opzione 3: utilizzare il UsersSID conicacls

Utilizzare il comando seguente:

icacls C:\FullyAccessibleFolder /grant *S-1-5-32-545:(OI)(CI)F

Commento alla fonte di Harry Johnston


Ho accettato la risposta da DavidPostill in quanto lo fa in un vero modo da riga di comando, il che è fantastico quando si usano script batch o PS. Alla fine ho effettivamente creato un piccolo eseguibile in C # che prende solo un percorso e fa esattamente quello che mi serve. Non è personalizzabile come le risposte qui e richiede .NET Framework, ma si adatta molto bene al mio scopo particolare. Se qualcuno è interessato, ecco la base del codice C # con cui ho finito. stackoverflow.com/a/35461832/1639615
Geesh_SO

xcaclssembra essere uno script che puoi scaricare. Non c'è bisogno; icaclsè integrato in Windows e può fare lo stesso lavoro.
Harry Johnston,

@HarryJohnston Corretto, ma la mia risposta sta mostrando come recuperare la versione localizzata di Users... Ho chiarito la risposta in quanto non abbiamo bisogno della xaclsparte della soluzione citata.
DavidPostill

@HarryJohnston Ho anche aggiunto usando icaclsdirettamente con credito a te.
DavidPostill

7

È necessario specificare il gruppo AD non in base al nome, ma in base al numero SID.
Per gruppi standard come "EveryOne", "Domain Users", ecc. Esistono numeri SID standardizzati, che possono essere trovati nella pagina MSDN Identificatori di sicurezza noti (SID) .

Di seguito sono riportati gli identificativi relativi più comuni.

inserisci qui la descrizione dell'immagine

La struttura di un SID è descritta come segue:

I componenti di un SID sono più facili da visualizzare quando i SID vengono convertiti dal formato binario al formato stringa utilizzando la notazione standard:

SRX-Y1-Y2-Yn-1-Yn

    Component                   Definition

    S                         Indicates that the string is a SID
    R                         Revision level
    X                         Identifier authority value
    Y            A series of subauthority values, where n is the number of values

Ad esempio, il SID per il gruppo Administrators incorporato è rappresentato nella notazione SID standardizzata come la seguente stringa:

S-1-5-32-544

Questo SID ha quattro componenti:

  • Un livello di revisione (1)

  • Un valore di autorità identificatore (5, autorità NT)

  • Un identificatore di dominio (32, incorporato)

  • Un identificatore relativo (544, Amministratori)

Come funzionano gli identificatori di sicurezza


Vale la pena sottolineare che tutti gli utenti fanno parte del gruppo di utenti per impostazione predefinita. Quindi, se si desidera dare "accesso completo: a tutti gli account utente, basta usare SID S-1-5-32-544, quindi modificare l'ACL per dare tutte le autorizzazioni al gruppo per il file o la cartella in questione
Ramhound

@Ramhound 544è Administrators, 545is Users.
DavidPostill

@DavidPostill - Sì; Errore di copia e incolla.
Ramhound,

@Ramhound Molto meglio. Era il massimo che potevo fare mentre ero al telefono. Grazie per la modifica.
Tonny

3

Se ti piacciono gli script di PowerShell ma hai difficoltà a ricordare i numeri per i SID:

$acl = Get-Acl .\myfolder
$sid = New-Object System.Security.Principal.SecurityIdentifier ([System.Security.Principal.WellKnownSidType]::BuiltinUsersSid, $null)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule ($sid, 'FullControl', 'ObjectInherit,ContainerInherit', 'None', 'Allow')
$acl.AddAccessRule($rule)
Set-Acl .\myfolder $acl

So che sembra una tonnellata di digitazione, ma questi lunghi identificatori sono completati da tabulazioni:

  • System.Security.Principal.SecurityIdentifier a partire dal securityi
  • System.Security.Principal.WellKnownSidType a partire dal wellknownsi
  • System.Security.AccessControl.FileSystemAccessRule a partire dal filesystem

Tutte queste stringhe sono identificatori .NET, quindi non vengono localizzate.

Se si desidera Everyoneinvece il SID, utilizzare WorldSidal posto di BuiltinUsersSid. Per ottenere l'elenco di tutte le WellKnownSidTypeopzioni, vedere MSDN o eseguire questo comando:

[System.Security.Principal.WellKnownSidType].DeclaredFields | select Name

FileSystemAccessRule senza Sid e utilizzando group names?
Kiquenet,

@Kiquenet Non sono del tutto sicuro di ciò che stai chiedendo, ma se preferisci specificare un nome di gruppo leggibile dall'uomo, questo non sarà più indipendente dalla lingua. Se siete d'accordo con questo, è possibile rimuovere la $sid =linea e sostituire $sidin $rule =linea con una stringa che identifica il gruppo.
Ben N,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.