
O título da pergunta resume tudo. Estou implantando um dispositivo de rede como uma VM baseada no Debian 9, mas quero dar ao usuário a capacidade de adicionar espaço em disco adicional, se necessário, mas não quero que eles tenham acesso total ao sistema na linha de comando. Como posso criar uma conta limitada a realizar apenas atividades do tipo fdisk? Também quero limitar o acesso ao sistema de arquivos para que eles não possam navegar no disco.
Responder1
Você deve apenas automatizar a tarefa de redimensionar o disco rígido virtual e o sistema de arquivos.
Por exemplo, o cloud-init pode ser configurado para automaticamenteaumentar as partições(e sistemas de arquivos) de instâncias de máquinas virtuais e já está configurado para fazer isso em instâncias de VM dos principais provedores de nuvem, como Amazon AWS e Google Cloud. Você mesmo pode usar o cloud-init para automatizar essa tarefa. Nesse caso, o usuário final redimensionaria o disco virtual em seu hipervisor, reinicializaria a instância e o cloud-init executaria automaticamente todas as etapas necessárias.
O exemplo da documentação:
#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
Responder2
Você poderia usar o arquivo sudoers ( /etc/sudoers
, mas é melhor editar com a visudo
ferramenta) para permitir que um grupo de usuários use o sudo(8) limitado a um comando específico. Você pode até adicionar os argumentos permitidos para que os usuários não possam chamar o fdisk em um disco não relacionado.
A entrada no arquivo pode ser semelhante a esta:
%yourgroup ALL=(ALL) NOPASSWD: /sbin/fdisk /dev/sdb
man sudoers
tem mais informações sobre a sintaxe do comando e opções possíveis.