Equivalente de chmod para cambiar los permisos de archivo en Windows

Respuestas:

26

Greg menciona attrib , pero attrib no está cerca de eso chmod, attribpuede establecer atributos de solo lectura / ocultos de un solo archivo; no proporciona controles específicos como lo icaclshace.

icaclsestablece / restablece las listas de control de acceso, por lo que puede otorgar / denegar derechos para SID y grupos individuales. Sin embargo, es bastante complicado.

Aquí hay un ejemplo que he guardado en mi github gist ; restablece la propiedad y la lista de control de acceso para todos los archivos en una carpeta y es particularmente útil para corregir esos molestos "Necesitas permisos de ... para realizar esta acción" especialmente cuando mueves archivos de una instalación previa:

icacls * /reset /t /c /q 

Restablecer reemplaza el existente con la lista predeterminada.
/tactúa de forma recursiva en todos los archivos, carpetas y subcarpetas
/q, no muestra ningún mensaje de éxito,
/ccontinúa con los archivos restantes incluso en caso de error.

También puede hacer cosas como hacer una copia de seguridad de las ACL existentes y aplicarlas en todos. Eche un vistazo a ss64 que explica muy bien las diferentes opciones y conmutadores.

Sathyajith Bhat
fuente
El problema es que no puedo hacer esto, para cada archivo hay un mensaje: "Acceso denegado". ¿No hay forma de evitar esto? ¿En un sistema escolar que bloquea esto, pero no cmd?
theonlygusti
Necesita privilegios de administrador; lo "normal" cmdque obtienes al presionar [Win] + [R] carece de estos. Para tales necesidades especiales, tengo un acceso directo "Admin shell", con "Ejecutar como administrador" (o similar; estoy en un sistema Windows alemán) marcado (y con un color de fondo rojo oscuro).
Tobias
De hecho, me enfrento al problema con el permiso denegado error. ¿Por qué demonios puedo hacer algo si soy administrador y la consola que ejecuto también se ejecuta como administrador? ¿Que es eso?
Čamo
13

De cualquier cacls , xcacls , o mi favorito personal icacls probablemente harán lo que necesita.

Bryan
fuente
1
Creo que icaclssolo está disponible en Vista / 7.
Hola71
9

No puede haber un equivalente exacto, ya que Linux y DOS / Windows usan atributos para diferentes propósitos y (como dijo Chathuranga antes) el modelo de seguridad es diferente:

  • En los sistemas de archivos de Windows, hay atributos "ocultos" ( H) y "sistema" ( S) que no tienen un equivalente en Linux; allí, los archivos se ocultan al anteponer el nombre con un punto ( .).
  • Tampoco hay equivalente al Aatributo "archive" ( ) de Windows .
  • No hay equivalente a los xatributos "ejecutables" ( ) de Linux en los atributos del archivo DOS / Windows.
  • No es un equivalente a la de Windows "directorio" ( Datributo) (pero no se puede cambiar de todos modos).
  • En los sistemas de archivos de Linux, cada entrada es propiedad de exactamente un usuario y exactamente un grupo, y se puede permitir la lectura / escritura / ejecución para cada uno de ellos y para otros. Las ACL (como las que usa Windows) son aún más flexibles, pero también más complicadas, y la sintaxis de la línea de comandos es una PITA (en mi humilde opinión, por supuesto)

El atributo del archivo DOS R(solo lectura) es el que podría considerarse que tiene un equivalente: este conjunto de atributos es más o menos como el watributo para todos los que faltan; pero el permiso para cambiar este atributo está sujeto a las ACL.

Puede ser genial tener un chmod/ chownequivalente en Windows, tal vez escrito en algún lenguaje de secuencias de comandos, que a su vez llama attriby cacls(o sucesores), pero no tengo uno.

Tobias
fuente
Buena primera publicación!
slm
Estás confundiendo los atributos y permisos del archivo. Linux tiene atributos de archivo que se pueden cambiar a través de chattr . Linux tiene un control de acceso preciso para los atributos (por ejemplo, el atributo [i] mmutable solo puede establecerse por root o un CAP_LINUX_IMMUTABLEproceso), mientras que el acceso a establecer atributos en Windows es todo o nada. Es un error común en las implementaciones de chmodWindows usar este comando para establecer el atributo de archivo de solo lectura. Lamentablemente, los sistemas están tan informados como los programadores que los desarrollan.
Eryk dom
@eryksun: Interesante: no tenía conocimiento de ese chattrcomando. Pero no querías decir que yo "confundiera los atributos y permisos de los archivos", ¿verdad? AFAICS, cada palabra que escribí sobre los atributos de DOS sigue siendo correcta.
Tobias
Un archivo consta de muchos atributos (extendidos). En Unix, el conjunto central de atributos se almacena en el inodo, incluido el modo de archivo (permisos). Otros atributos extendidos (por ejemplo, ACL) pueden almacenarse externamente. Windows no tiene equivalente al atributo "modo" de Unix. Tampoco tiene un registro de inodo común para los sistemas de archivos. Un registro NTFS MFT es similar. Desde su POV, los atributos de archivo estándar de Windows son un solo atributo del registro de archivo. Estos corresponden a los atributos de archivo de Linux establecidos a través de chattr, excepto que Windows tiene un atributo de directorio ya que no hay inodo.
Eryk Sun
La pregunta se refiere a un "[e] equivalente de chmod para cambiar los permisos de archivos en Windows". No existe un equivalente directo chmoden Windows porque no hay nada como el atributo "modo" del archivo. El conjunto estándar de atributos de archivo de Windows no tiene nada que ver con esto. El atributo de solo lectura no es un permiso de archivo. Básicamente dice que el archivo está escrito en piedra, por lo que todos los intentos de modificarlo deben fallar. El atributo de archivo "inmutable" de Linux es similar. Windows solo usa ACL para los permisos, por lo que icacls.exe y similares son los únicos comandos similares sobre el tema de los permisos.
Eryk Sun
6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Funciona de maravilla para cambiar los permisos en una carpeta para usuarios de dominio. Información adicional sobre caclsy icacls.

MDT Guy
fuente
Bonito primer post! Nunca he oído hablar de icacls.
slm
5

El attribcomando es la coincidencia más cercana para cosas muy básicas (solo lectura, marcas de archivo). Luego está el comando ACL (lista de control de acceso) cacls. Por último, pero no menos importante, dado que Windows es realmente compatible con Posix, existen los indicadores tipo Unix. Si instala el conjunto de herramientas Cygwin, obtendrá un chmod. (Un poco fuera de tema, ya que está buscando un equivalente de un comando unix, descargar e instalar Cgygwin puede ser algo interesante para usted).

usuario27570
fuente
2

No hay nada llamado chmod en Windows porque el modelo de seguridad de Windows es diferente al de Linux. Puede usar el attribcomando para cambiar las propiedades de los objetos. (Pero son más hacia propiedades globales).

Chathuranga Chandrasekara
fuente
2

Para mí, la solución es instalar Cygwin y agregar su carpeta bin a la ruta del sistema. Luego, si ejecuta "chmod" en la línea de comando, funcionará. Aunque no he verificado su corrección.

WHOIF
fuente
1
Referencia: simple y detallada
Bob