Vi un cambio de código en el trabajo, donde los valores de modo se cambiaron de 777 a 0777 para que nfs setattr funcione. ¿Cuál es la diferencia en los 2 valores?
mkdir()
. 0777 vs 777
Vi un cambio de código en el trabajo, donde los valores de modo se cambiaron de 777 a 0777 para que nfs setattr funcione. ¿Cuál es la diferencia en los 2 valores?
mkdir()
. 0777 vs 777
Respuestas:
Si los pasa a chmod
(el programa de línea de comandos), no hay diferencia. Pero en un programa en C o similar, 0777
es octal (tres conjuntos de tres bits de 1, que es lo que pretende), mientras que 777
es decimal, y es un patrón de bits bastante diferente. ( chmod
interpretará cualquier argumento numérico como octal, por lo tanto, no es necesario un cero inicial).
0777 (octal) == binario 0b 111 111 111
== permisos rwxrwxrwx
(== decimal 511
)
777 (decimal) == binario 0b 1 100 001 001
== permisos sr----x--x
(== octal 1411
)
chmod
comando siempre se interpreta como octal. El uso chmod 888
dará un error.
chmod
interpreta un argumento numérico como octal, independientemente del prefijo. (Pero realmente el número en sí no tiene función; solo los dígitos, o más bien los bits.)
1777
, ¿necesitas escribir 01777
?
1777
está escrito 01777
en C. (O podrías escribir 1023
, que es el mismo número en decimal. Pero no lo hagas :-)
El primer bit se usa para el bit adhesivo http://en.wikipedia.org/wiki/Sticky_bit
Si establece el permiso con 4 dígitos, el primero establecerá o eliminará este bit.
La respuesta interesante es:
0700
y 700
, como se explica en las otras respuestas00700
y 0700
(para los directorios)Al menos ese es el caso de la versión chmod de GNU coreutils, que es la predeterminada en Linux.
Ver este ejemplo:
$ ls -ld mydir
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 0710 mydir ; ls -ld mydir # surprise ahead -- s-bits remain:
drws--s--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
$ chmod 00710 mydir ; ls -ld mydir # _now_ they're gone:
drwx--x--- 4 myuser mygroup 4096 Jul 8 09:27 mydir
Esto es para evitar la eliminación accidental de bits setuid / setgid para directorios. Para más detalles, consulte la documentación de chmod .
En el sistema Linux hay dos tipos de permisos disponibles:
En Permiso de archivo, establecemos permiso en archivos y carpetas:
Los permisos son:
Si bien tiene un permiso especial, tres tipos de permisos son:
En su pregunta, pregunta cuál es la diferencia, por lo que no hay ninguna diferencia entre chmod 777 and 0777
porque hay no any octal value
cuál muestra el valor de (0) cero.