¿Por qué getfacl elimina los nombres de ruta principales / absolutos?

10

Estoy en medio de aprender sobre ACL para CentOS / Red Hat 6; cuando ejecuto getfaclusando una ruta absoluta, obtengo entre los resultados:

getfacl: eliminando los principales '/' de los nombres de ruta absolutos

¿Por qué necesita hacer esto? ¿En qué situaciones necesitaría usar el interruptor -po --absolute-names?

Mis libros de Wale Soyinka y Michael Jang ni siquiera hacen una mención pasajera de esto, no veo ninguna pista en la página de manual, y parece que no puedo encontrar ningún sitio que aborde directamente esta advertencia.

Seananigans
fuente
1
Ha sido así desde los albores de ACL en Linux . No se porque.
Gilles 'SO- deja de ser malvado'
Gracias por ayudarme a investigarlo y por el enlace. Mis habilidades de programación son un poco rudimentarias en este momento, pero he guardado el archivo para cuando empiezo a abordar C / C ++ con mi libro Gaddis.
Seananigans

Respuestas:

6

De la página del manual de getfacl:

-p, --absolute-names
       Do not strip leading slash characters (`/'). The  default  behavior
       is to strip leading slash characters.

Se emite un mensaje de advertencia cuando proporciona una ruta absoluta sin usar el -pinterruptor.

Las salidas son diferentes cuando se da una ruta absoluta al getfaclcomando.

Sin -pinterruptor:

$ getfacl /path/foo/bar
getfacl: Removing leading '/' from absolute path names
# file: path/foo/bar
[Output truncated...]

Tenga en cuenta que la barra diagonal principal en la ruta del archivo se muestra solo cuando -pse usa el interruptor.

$ getfacl -p /path/foo/bar
# file: /path/foo/bar
[Output truncated...]

-p es útil para mantener la barra diagonal inicial cuando canaliza la salida para su posterior procesamiento.

Las salidas son las mismas cuando se da una ruta relativa al getfaclcomando.

$ getfacl bar
# file: bar
[Output truncated...]

Sin cambios:

$ getfacl -p bar
# file: bar
[Output truncated...]
Ivan Chau
fuente
Perdóname, ya que soy relativamente nuevo en Linux, pero esto parece un cambio bastante superfluo, ya que si estuvieras canalizando la salida a otro programa, tendrías que editar la transmisión de todos modos para tomar esa sección de la salida en el primer lugar, estoy en lo correcto? ¿Cuál sería un caso de ejemplo donde sería útil quitar la barra diagonal? Dado que es un camino absoluto, parece un poco tonto despojarlo en primer lugar.
Seananigans
2
En otras distribuciones (por ejemplo, FreeBSD), este interruptor no existe. Al ver la fuente del paquete acl de RHEL, parece que --absolute-namessolo se trata con la cadena de salida - "# file:", pero no con la lógica detrás. Al principio supongo que puede ser una característica de seguridad. Sin embargo, el cambio no existe en setfacl. Mi última suposición es que el autor quisiera simular el tarcomportamiento, aunque el -puso del interruptor getfaclpuede ser inútil.
Ivan Chau
99
Sin embargo, esto no responde al por qué. ¿Por qué se eliminan las barras inclinadas de forma predeterminada? ¿Cómo ayuda eso?
Segfault