Equivalente di chmod per modificare le autorizzazioni dei file in Windows


Risposte:


26

Greg menziona attrib - ma attrib non è vicino a nessuno chmod- attribpuò impostare gli attributi di sola lettura / nascosti di un singolo file - non fornisce controlli a grana fine come icaclsfa.

icaclsimposta / reimposta gli elenchi di controllo di accesso, in modo da poter concedere / negare diritti per singoli SID e gruppi. È abbastanza complicato però.

Ecco un esempio che ho salvato nel mio github gist ; reimposta la proprietà e l'elenco di controllo degli accessi per tutti i file in una cartella ed è particolarmente utile per correggere quei fastidiosi "Hai bisogno di autorizzazioni da ... per eseguire questa azione", specialmente quando si spostano i file da un'installazione precedente:

icacls * /reset /t /c /q 

Ripristina sostituisce quello esistente con l'elenco predefinito.
/tagisce in modo ricorsivo su tutti i file, cartelle e sottocartelle
/qnon visualizza alcun messaggio di successo
/ccontinua con i file rimanenti anche in caso di errore.

Puoi anche fare cose come il backup degli ACL esistenti e applicarli a tutti. Dai un'occhiata a ss64 che spiega molto bene le diverse opzioni e opzioni.


Il problema è che non posso farlo, per ogni file c'è il messaggio: "Accesso negato". Non c'è modo di aggirare questo? Su un sistema scolastico che blocca questo, ma non cmd?
theonlygusti,

Hai bisogno dei privilegi di amministratore; il "normale" cmdche si ottiene colpendo [Win] + [R] manca di questi. Per tali esigenze speciali ho un collegamento "Admin shell", con "Esegui come amministratore" (o simile; sono su un sistema Windows tedesco) selezionato (e con un colore di sfondo rosso scuro).
Tobias,

In realtà ho riscontrato il problema con errore di autorizzazione negata. Perché diavolo posso fare qualcosa se sono un amministratore e una console che eseguo funziona anche come amministratore. Cos'è quello?
Čamo,


9

Lì (purtroppo) non può essere un equivalente esatto, dal momento che Linux e DOS / Windows usano attributi per scopi diversi e (come aveva detto Chathuranga in precedenza) il modello di sicurezza è diverso:

  • Nei file system di Windows, ci sono attributi "hidden" ( H) e "system" ( S) che non hanno un equivalente in Linux; lì, i file vengono nascosti anteponendo il nome con un punto ( .).
  • Non esiste neanche un equivalente Adell'attributo "archivio" ( ) di Windows .
  • Non esiste un equivalente degli xattributi "eseguibili" ( ) di Linux negli attributi del file DOS / Windows.
  • V'è un equivalente di Windows "directory" ( Dattributo) (ma non può essere modificato in ogni caso).
  • Nei file system Linux, ogni voce è di proprietà di esattamente un utente e esattamente un gruppo e la lettura / scrittura / esecuzione può essere consentita per ciascuno di essi e per gli altri. Gli ACL (come quelli usati da Windows) sono ancora più flessibili, ma anche più complicati, e la sintassi della riga di comando è una PITA (a mio modesto parere, ovviamente)

L'attributo del file DOS R(sola lettura) è quello che potrebbe essere considerato avere un equivalente: questo set di attributi è approssimativamente simile wall'attributo per tutti quelli che mancano; ma l'autorizzazione a modificare questo attributo è soggetta agli ACL.

Potrebbe essere bello avere un chmod/ chownequivalente su Windows, forse scritto in un linguaggio di scripting, che a sua volta chiama attribe cacls(o successori), ma non ne ho uno.


Buon primo post!
slm,

Stai confondendo gli attributi e le autorizzazioni dei file. Linux ha attributi di file che possono essere modificati tramite chattr . Linux ha un controllo degli accessi accurato per gli attributi (ad es. L'attributo [i] mmutable può essere impostato solo da root o da un CAP_LINUX_IMMUTABLEprocesso), mentre l'accesso per impostare gli attributi in Windows è tutto o niente. È un errore comune nelle implementazioni di chmodWindows utilizzare questo comando per impostare l'attributo del file di sola lettura. Sfortunatamente i sistemi sono informati solo quanto i programmatori che li sviluppano.
Eryk Sun,

@eryksun: Interessante - Non ero a conoscenza di quel chattrcomando. Ma non volevi dire a me, "confondere gli attributi e le autorizzazioni dei file", giusto? AFAICS, ogni parola che ho scritto sugli attributi DOS è ancora corretta.
Tobias,

Un file è composto da molti attributi (estesi). In Unix il set principale di attributi è archiviato nell'inode, inclusa la modalità file (permessi). Altri attributi estesi (ad es. ACL) possono essere memorizzati esternamente. Windows non ha equivalenti all'attributo "mode" di Unix. Inoltre non ha un record di inode comune per i filesystem. Un record MFT NTFS è simile. Dal suo POV, gli attributi standard del file Windows sono un singolo attributo del record del file. Questi corrispondono agli attributi dei file Linux impostati tramite chattr, tranne per il fatto che Windows ha un attributo di directory poiché non è presente alcun inode.
Eryk Sun,

La domanda pone una domanda su un "[e] quivalente di chmod per modificare i permessi dei file in Windows". Non esiste un equivalente diretto chmodin Windows perché non esiste nulla come l'attributo "mode" del file. Il set standard di attributi di file di Windows non ha nulla a che fare con questo. L'attributo di sola lettura non è un'autorizzazione di file. Sostanzialmente dice che il file è scritto in pietra, quindi tutti i tentativi di modifica devono fallire. L'attributo del file "immutabile" di Linux è simile. Windows utilizza solo ACL per le autorizzazioni, quindi icacls.exe e simili sono gli unici comandi simili in materia di autorizzazioni.
Eryk Sun,


5

Il attribcomando è la corrispondenza più vicina per cose di base (sola lettura, flag di archivio). Quindi c'è il comando ACL (lista controllo accessi) cacls. Ultimo ma non meno importante, poiché Windows è in realtà conforme a Posix, esistono i flag unix-like. Se installi il set di strumenti Cygwin, otterrai un chmod. (Un po 'fuori tema, dal momento che stai cercando un equivalente di un comando unix, scaricare e installare Cgygwin potrebbe essere qualcosa di interessante per te.)



2

Non c'è nulla chiamato chmod in Windows perché il modello di sicurezza di Windows è diverso da Linux. È possibile utilizzare il attribcomando per modificare le proprietà degli oggetti. (Ma sono più verso le proprietà globali.)


2

Per me, la soluzione alternativa è installare Cygwin e aggiungere la sua cartella bin al percorso di sistema. Quindi, se esegui "chmod" nella riga di comando, funzionerà. Anche se non ho verificato la sua correttezza.


1
Riferimento: semplice e dettagliato
Bob,
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.