Configuración de permisos apropiados en SU ​​binario

Recientemente encontré una manera de mantener el acceso a la raíz en mi dispositivo Android usando un servidor SSH dropbear que modifiqué para que se ejecutara en el arranque como raíz usando init.d, una pequeña magia de secuencias de comandos y algunas secuencias de comandos de configuración que hice. Si quieres puedes consultarlo aquí . De todos modos, para un experimento, eliminé el binario su y el Superuser.apk del sistema. Me las arreglé para volver a copiarlas en el sistema, pero no conozco los permisos apropiados para el binario su. Si miro en la aplicación Super User en otro teléfono rooteado y voy a actualizar, se muestra -rwsr -sr-xcomo los permisos en el binario. ¿Cómo puedo configurar estos mismos permisos manualmente y qué significan?

Respuestas (1)

Para configurar los permisos de archivo, puede usar el chmodcomando. Los permisos que se muestran se dividen básicamente en 3 partes, cada una de las cuales consta de 3 caracteres: un triple para el propietario, el grupo y para "otros". Por lo general, cada triple contiene definiciones para leer, escribir y ejecutar un archivo; entonces rwxsignifica "puede leer, escribir y ejecutar", mientras que r--diría "solo puede leer".

Los 9 caracteres resultantes suelen estar precedidos por otro, dando información del tipo de "archivo": (d)irectory y (l)ink son los ejemplos más comunes. Nuevamente, si ninguna "condición especial" coincide, un encabezado -indica un "archivo normal".

Basándonos en eso, tomemos su entrada: -rwsr-sr-xobviamente describe un "archivo normal" (que comienza con -), legible ( r) por el propietario, el grupo y otros, en el que solo el propietario puede escribir y en el que "otros" pueden ejecutar, mientras que el propietario y el grupo tienen un sen su lugar, xpara ejecutar. Esto significa "suid", eleva a la persona que llama al nivel del propietario/grupo del archivo.

Aprovechando el hecho de que los permisos se pueden configurar "bit-wise" ( x= 1, w= 2, r= 4, suid user = 4, group = 2), después de mi larga "despotricar", finalmente el comando que debería hacer el truco:

chmod 6774 su

Debería establecer los permisos que muestra su pregunta. Si "calculé mal", ahora tienes toda la información para volver a calcular por ti mismo :)


Consejos adicionales de los comentarios:

En lugar de calcular la "máscara de bits", también se pueden usar nombres simbólicos, como señaló Dan Hulme , y como se explica, por ejemplo, en la página de manual de chmod :

  • definiendo a quién otorgar a: (u)ser / (g)roup / (o)thers / (a)ll
  • definiendo qué conceder: (r)ead / (w)rite / e(x)ecute / (s)uid
  • definir si (+) otorgar o (-) revocar

Entonces, los siguientes dos comandos deberían ser similares, siempre que no se hayan otorgado otras cosas antes:

chmod 6774 su
chmod u+rws g+rs o+rx su

La diferencia se vuelve clara en el caso, por ejemplo, antes de que "otros" también tuvieran permiso de escritura: mientras que el primer comando (usando una máscara de bits) establece el permiso explícitamente para que coincida con las "concesiones" definidas (y por lo tanto eliminaría ese permiso de escritura), el simbólico " hace una diferencia" (en el ejemplo, solo agrega los permisos especificados a lo que estaba allí antes, por lo que no se eliminaría el permiso de escritura).

No necesita calcular los números chmodusted mismo: chmod u+rws g+rs a+rx suhará exactamente lo correcto y no requiere que cuente con los dedos.
¿Seguro que no lo es chmod u+rws g+rs o+rx su(no "todos", sino "otros", consulte la página de manual de chmod )? Siempre lo arruino pensando si era "propietario" u "otros", por lo que prefiero usar las cosas bit a bit, excepto cuando solo cambio cosas para el grupo;)
@DanHulme revisando con la página de manual nuevamente, a+rxestablecería "rx" para "ugo" (usuario, grupo y otros). No estoy seguro de qué me confunde más: calcular el conjunto de bits o interpretar símbolos recurrentes: P
Sí, usar aacortaría el comando, pero como habrás notado, hace que sea un poco más difícil ver lo que está pasando, así que casi nunca uso a.
@DanHulme Ni siquiera sabía sobre el asímbolo. Pero gracias por animarme a revisar la página de manual nuevamente :D El ainterruptor puede ser muy útil a veces, para cosas como chmod a+r public_info.txt.
Lo siento, entendí mal lo que estabas diciendo. Sí, cuando escribí aen mi primer comentario me refería oa los demás. ¡Me preguntaba por qué lo mencionaste!
¡Gracias por la aclaración, @DanHulme! Con su permiso (y crédito otorgado), lo incluiré con mi respuesta, para que nadie tenga que seguir todos los comentarios para comprender.