Назад | Перейти на главную страницу

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

Название вопроса как бы подводит итог. Я развертываю сетевое устройство как виртуальную машину на основе Debian 9, но хочу предоставить пользователю возможность добавлять дополнительное дисковое пространство, если это необходимо, однако я не хочу, чтобы у них был полный доступ к системе из командной строки. Как я могу создать учетную запись, которая ограничена только выполнением действий типа fdisk? Также я хочу ограничить их доступ к файловой системе, чтобы они не могли просматривать диск.

Вместо этого вам следует просто автоматизировать задачу изменения размера виртуального жесткого диска и файловой системы.

Например, 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

Вы можете использовать файл sudoers (/etc/sudoers, но лучше всего редактировать с visudo tool), чтобы разрешить группе пользователей использовать sudo (8), ограниченную определенной командой. Вы даже можете добавить разрешенные аргументы, чтобы пользователи не могли вызывать fdisk на несвязанном диске.

Запись в файле может выглядеть примерно так:

%yourgroup ALL=(ALL) NOPASSWD: /sbin/fdisk /dev/sdb

man sudoers содержит дополнительную информацию о синтаксисе команд и возможных параметрах.