Estaba escribiendo algunas instrucciones sobre cómo instalar algo (relacionado con TeX; si no pregunta, no arruinaré su día al proporcionar más detalles) y solía sudo
instalar todo el sistema. Alguien comentó que no creían que sudo
estuviera disponible en todas las distribuciones de Linux (o Unix).
¿Hay distribuciones de Unix que no tienen sudo
, y si es así, cuáles son? ¿Existe un comando universalmente reconocido "Obtener privilegios de superusuario" que se encuentra en todos los sistemas?
fuente
sudo
puede estar incluido en la mayoría de las distribuciones, pero no todas configuran a cada usuario como capaz de ejecutarlo.La distribución más utilizada, Ubuntu, se utiliza
sudo
como método recomendado para convertirse en root (cuando se usa la línea de comandos: los usuarios que se adhieren a la GUI recibirán una solicitud de contraseña sin comprender ni preocuparse por lo que sucede debajo del capó). Otras distribuciones pueden o no alentar la configuración de sudo y pueden o no enviarlo. Por otro lado,su
está disponible en todas partes y se puede usar en la mayoría de los sistemas, excepto en aquellos donde solosudo
está disponible porque el usuario no tendrá la contraseña de root.Entre
su
ysudo
, cubrirá a casi todos sus usuarios. La exótica pocos que necesitancalife
oop
opfexec
sabe qué hacer ya. Incluso si no lo hacen, un sistema que no utilizasu
nisudo
es probable que tenga archivos en lugares desconocidos y suficientes cosas en las que no haya pensado que sus instrucciones probablemente no funcionarán de todos modos.fuente
Para responder a su pregunta, más exactamente, no
sudo
no se considera universal. A decir verdad, todo el concepto de 'universal' es a menudo una pista falsa. Esto es especialmente cierto con respecto a la compatibilidad de distribución cruzada. Una vez que te lanzas a la multitud de diferentes versiones de software, la universalidad se vuelve poco realista. El guión por naturaleza es pragmático, si fuera pedante, escribir guiones portátiles sería prácticamente imposible.Normalmente calculo mi entorno de ejecución previsto, una distribución de Linux semi-moderna, espero un shell POSIX con las utilidades GNU comunes. Para los scripts que podrían ejecutarse fuera de Linux, solo espero el estándar POSIX completo. Obviamente, muchos scripts son específicos de Linux, o específicos de la distribución, por lo que a menudo se reduce el alcance de la portabilidad.
Para abordar su caso específico de secuencias de comandos,
ese script pegado es un complemento de shell POSIX, siempre escribo Dash compatible.
fuente
sudo
ser instalado. Requiere la ejecución del superusuario y puede usarsesudo
si está disponible. Sisudo
no está disponible, el script debe ejecutarse como usuario root, o lo harádie
.sudo -l
. Desafortunadamente, es inutilizable en esta situación, ya que puede requerir la entrada de contraseña. Pensando en esto más cuidadosamente, en realidad creo que todo el concepto podría lograrse mejor a través de una prueba por distribución. Usar asu -c
menos que se ejecute unasu
distribución deshabilitada predeterminada, en cuyo caso usarsudo su -c
. Como otros han mencionado, es mejor dejar la elevación del superusuario al usuario, consideraría que cualquier scrip-around es conveniente.sudo
. Esto debería ejecutar correctamente en la mayoría de distribuciones, en el supuesto defectosu
/sudo
configuraciones. Sé que un Ubuntu obsoleto, prelsb_release
, necesitaría ser abordado ... Pero esto realmente es solo un ejemplo, y obviamente podría extenderse.