VM ディスク ドライブ拡張を提供するためだけの制限付き Linux 管理者アカウント

VM ディスク ドライブ拡張を提供するためだけの制限付き Linux 管理者アカウント

質問のタイトルが、ある意味すべてを要約しています。Debian 9 ベースの VM としてネットワーク アプライアンスを展開していますが、必要に応じてユーザーがディスク領域を追加できるようにしたいのですが、コマンド ラインで完全なシステム アクセスは許可したくありません。fdisk タイプのアクティビティのみを実行するように制限されたアカウントを作成するにはどうすればよいでしょうか。また、ファイル システム アクセスを制限して、ユーザーがディスクを参照できないようにしたいと考えています。

答え1

代わりに、仮想ハードドライブとファイルシステムのサイズ変更のタスクを自動化する必要があります。

例えば、cloud-initは自動的にパーティションを拡大する仮想マシン インスタンスの (およびファイルシステム) を暗号化する機能があり、Amazon AWS や Google Cloud などの主要なクラウド プロバイダーの VM インスタンスではすでにそのように設定されています。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コマンド構文と可能なオプションに関する詳細情報があります。

関連情報