
El título de la pregunta lo resume. Estoy implementando un dispositivo de red como una máquina virtual basada en Debian 9, pero quiero darle al usuario la posibilidad de agregar espacio adicional en el disco si es necesario; sin embargo, no quiero que tenga acceso completo al sistema en la línea de comando. ¿Cómo puedo crear una cuenta que esté limitada a realizar únicamente actividades de tipo fdisk? También quiero limitar el acceso al sistema de archivos para que no puedan explorar el disco.
Respuesta1
En su lugar, debería automatizar la tarea de cambiar el tamaño del disco duro virtual y del sistema de archivos.
Por ejemplo, cloud-init se puede configurar para que automáticamentehacer crecer las particiones(y sistemas de archivos) de instancias de máquinas virtuales, y ya está configurado para hacerlo en instancias de VM de los principales proveedores de nube, como Amazon AWS y Google Cloud. Puede utilizar cloud-init usted mismo para automatizar esta tarea. En este caso, el usuario final cambiaría el tamaño del disco virtual en su hipervisor, luego reiniciaría la instancia y cloud-init realizaría automáticamente todos los pasos necesarios.
El ejemplo de la documentación:
#cloud-config
#
# growpart entry is a dict, if it is not present at all
# in config, then the default is used ({'mode': 'auto', 'devices': ['/']})
#
# mode:
# values:
# * auto: use any option possible (any available)
# if none are available, do not warn, but debug.
# * growpart: use growpart to grow partitions
# if growpart is not available, this is an error.
# * off, false
#
# devices:
# a list of things to resize.
# items can be filesystem paths or devices (in /dev)
# examples:
# devices: [/, /dev/vdb1]
#
# ignore_growroot_disabled:
# a boolean, default is false.
# if the file /etc/growroot-disabled exists, then cloud-init will not grow
# the root partition. This is to allow a single file to disable both
# cloud-initramfs-growroot and cloud-init's growroot support.
#
# true indicates that /etc/growroot-disabled should be ignored
#
growpart:
mode: auto
devices: ['/']
ignore_growroot_disabled: false
Respuesta2
Puede usar el archivo sudoers ( /etc/sudoers
, pero es mejor editarlo con la visudo
herramienta) para permitir a un grupo de usuarios el uso de sudo(8) limitado a un comando específico. Incluso puede agregar los argumentos permitidos para que los usuarios no puedan llamar a fdisk en un disco no relacionado.
La entrada en el archivo podría verse así:
%yourgroup ALL=(ALL) NOPASSWD: /sbin/fdisk /dev/sdb
man sudoers
tiene más información sobre la sintaxis del comando y las posibles opciones.