go

go - os.MkDir y os.MkDir ¿Valor de permiso?



python import os linux (2)

Intento crear un archivo de registro al inicio de mi programa.

Necesito comprobar si existe un directorio "/ log", si no crea el directorio y luego seguir con la creación del archivo de registro.

Bueno, traté de usar os.Mkdir (así como os.MkDirAll), pero no importa qué valor ponga en el segundo parámetro, obtengo una carpeta bloqueada sin permisos. ¿Qué valor debe tener esto para obtener una carpeta de lectura / escritura para el usuario? Pensé que sería 0x700 pero parece que no funciona.

¡Gracias!


La declaración de @ Daniel en su respuesta no es realmente correcta, y también habla de un número decimal y luego usa uno octal, como @SashaCrofter señaló correctamente en su comentario.

En realidad, no importa en qué forma esté el valor de su permiso siempre que represente permisos de Unix razonables.

Como los bits de permiso en los sistemas de archivos POSIX vienen en triples de bits, tres bits para el acceso de propietario, grupo y otros, más tres bits de modificadores (como bits adhesivos), es costumbre usar números octales para representar permisos como cada dígito en un el número octal representa un valor de tres bits.

Por lo tanto, cuando usa 0700 en código Go, el 0 inicial se elimina y solo está ahí para decirle al analizador que ve un número octal literal, y las siguientes tres letras representan el propietario, grupo y otros permisos, en este orden. Si desea, por ejemplo, establecer también el grupo de bits adhesivos y hacer que el objeto del sistema de archivos sea legible y ejecutable por grupos, debe especificar 02750, etc.

Tenga en cuenta que los permisos reales que adquiere el objeto del sistema de archivos se modulan aún más por la umask activa del proceso que crea el objeto.

Para obtener más información sobre estos temas, es mejor leer las páginas del manual de chmod y la literatura general sobre sistemas operativos de tipo Unix.


Puede usar la notación octal directamente:

os.Mkdir("dirname", 0700)


Bits de permiso

+-----+---+--------------------------+ | rwx | 7 | Read, write and execute | | rw- | 6 | Read, write | | r-x | 5 | Read, and execute | | r-- | 4 | Read, | | -wx | 3 | Write and execute | | -w- | 2 | Write | | --x | 1 | Execute | | --- | 0 | no permissions | +------------------------------------+ +------------+------+-------+ | Permission | Octal| Field | +------------+------+-------+ | rwx------ | 0700 | User | | ---rwx--- | 0070 | Group | | ------rwx | 0007 | Other | +------------+------+-------+

Una cartilla de permiso de Unix


Permisos comunes de uso

0755 Comúnmente utilizado en servidores web. El propietario puede leer, escribir, ejecutar. Todos los demás pueden leer y ejecutar, pero no modificar el archivo.

0777 Todos pueden leer escribir y ejecutar. En un servidor web, no es aconsejable utilizar el permiso ''777'' para sus archivos y carpetas, ya que permite a cualquier persona agregar código malicioso a su servidor.

0644 Solo el propietario puede leer y escribir. Todos los demás solo pueden leer. Nadie puede ejecutar el archivo.

0655 Solo el propietario puede leer y escribir, pero no ejecutar el archivo. Todos los demás pueden leer y ejecutar, pero no pueden modificar el archivo.

www.maketecheasier.com/file-permissions-what-does-chmod-777-means/


Permisos de directorio en Linux

Al aplicar permisos a directorios en Linux, los bits de permisos tienen significados diferentes a los de los archivos normales. ( source )

Bit de lectura El usuario puede leer los nombres de archivo contenidos en el directorio.
Bit de escritura El usuario puede {agregar, renombrar, borrar} nombres de archivos SI el bit de ejecución también está configurado.
Bit de ejecución El usuario puede ingresar al directorio y acceder a los archivos dentro.

source

Calculadora de permisos

Una práctica .