
Название вопроса как бы резюмирует его. Я развертываю сетевое устройство как виртуальную машину на основе Debian 9, но хочу дать пользователю возможность добавлять дополнительное дисковое пространство при необходимости, однако я не хочу, чтобы у него был полный доступ к системе в командной строке. Как создать учетную запись, которая ограничена только выполнением действий типа fdisk? Также я хочу ограничить их доступ к файловой системе, чтобы они не могли просматривать диск.
решение1
Вместо этого вам следует просто автоматизировать задачу изменения размера виртуального жесткого диска и файловой системы.
Например, cloud-init можно настроить на автоматическоеувеличить разделы(и файловые системы) экземпляров виртуальных машин, и уже настроен на выполнение этого на экземплярах виртуальных машин от основных поставщиков облачных услуг, таких как Amazon AWS и Google Cloud. Вы можете использовать cloud-init самостоятельно для автоматизации этой задачи. В этом случае конечный пользователь изменит размер виртуального диска в своем гипервизоре, затем перезагрузит экземпляр, а cloud-init автоматически выполнит все необходимые шаги.
Пример из документации:
#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
решение2
Вы можете использовать файл sudoers ( /etc/sudoers
, но лучше всего редактировать с помощью visudo
инструмента), чтобы разрешить группе пользователей использовать sudo(8), ограниченное определенной командой. Вы даже можете добавить аргументы, которые разрешены, чтобы пользователи не могли вызывать fdisk на несвязанном диске.
Запись в файле может выглядеть примерно так:
%yourgroup ALL=(ALL) NOPASSWD: /sbin/fdisk /dev/sdb
man sudoers
содержит более подробную информацию о синтаксисе команды и возможных параметрах.