Ограниченная учетная запись администратора Linux только для предоставления расширения диска виртуальной машины

Ограниченная учетная запись администратора Linux только для предоставления расширения диска виртуальной машины

Название вопроса как бы резюмирует его. Я развертываю сетевое устройство как виртуальную машину на основе 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содержит более подробную информацию о синтаксисе команды и возможных параметрах.

Связанный контент