¿Qué determina qué comandos de Linux requieren acceso de root? Entiendo las razones por las cuales es deseable que, digamos, apt-get
requiera root
privilegio; pero, ¿qué distingue estos comandos del resto? ¿Es simplemente una cuestión de propiedad y permisos de ejecución del ejecutable?
linux
root
privileges
Brian Dobby
fuente
fuente
open
y obtienen "permiso denegado". Algunas aplicaciones compruebangetuid
y dejan de funcionar si la raíz no las llama. Algunos son propiedad física de root y solo el propietario puede ejecutarlos (verchmod
). Si está preguntando si hay alguna marca de "necesidad de raíz" en el encabezado de la aplicación, la respuesta es no. No existe tal cosa afaikRespuestas:
En Linux, los privilegios de raíz eran en un momento dado dividida en "capacidades", para que pueda obtener una lista completa de los privilegios especiales de raíz mirando en esa documentación:
man 7 capabilities
.Para responder a su pregunta, un comando requerirá ejecutarse como root cuando necesite uno de estos privilegios, y su ejecutable sin script no tiene la capacidad relevante establecida en sus metadatos de archivo (por ejemplo, si un script python requiere la capacidad, entonces la capacidad necesitaría estar en el intérprete de python especificado en la línea shebang).
Tenga en cuenta que algunos comandos que necesitan acceso raíz no necesitan algo como
sudo
porque tienen el bit SUID establecido en su ejecutable. Este bit hace que el ejecutable se ejecute como el propietario (normalmente root) cuando lo ejecuta cualquier persona que tenga acceso de ejecución. Un ejemplo ensudo
sí mismo es que cambiar usuarios es una acción privilegiada que debe hacer.EDITAR: Observo en su pregunta que puede tener la idea de que puede determinar si un comando necesitará acceso root antes de ejecutarlo. Ese no es el caso. Un programa a veces puede requerir privilegios de root y otras veces no, y esto podría ser una decisión tomada por el programa debido a los datos que se proporcionan durante el tiempo de ejecución. Tomemos, por ejemplo, llamadas
vim
, así sin argumentos, y luego a través de una serie de pulsaciones de teclas y pegado, diciéndole que escriba algo en un archivo que no tiene permiso para escribir, o tal vez ejecutando otro comando que requerirá privilegios de root. Nada sobre el comando antes de ejecutarlo podría indicar que eventualmente requeriría acceso root. Eso es algo que solo se puede determinar en el momento en que intenta hacer algo que lo requiere.De todos modos, aquí hay muy pocos ejemplos de la página de manual de referencia de los privilegios de root:
fuente
Es principalmente una cuestión de lo que la herramienta o programa hace . Teniendo en cuenta que una persona que no es superusuario solo puede tocar archivos de los que es propietario o tiene acceso, cualquier herramienta que necesite poder meter sus dedos en todo requerirá acceso de superusuario para hacer lo que hace. Una muestra rápida de Cosas que pueden requerir acceso de superusuario incluye, pero no se limita a:
/etc
)/lib
y/usr/lib
) o binarios (/bin
,/usr/bin
)renice
. Ej. )fuente
Creo que está de acuerdo con la identidad del usuario verificar los permisos, no de acuerdo con el orden de dividir los permisos. Los archivos y los usuarios tienen privilegios y los comandos no deben dividirse.
fuente