web-dev-qa-db-ja.com

権限が拒否されたコンテナのバックアップで「mkdir / mnt / vzsnap0」に失敗する

これはすべてrootユーザーとして行われます。

/usr/share/Perl5/PVE/VZDump/LXC.pmでのバックアップ用のスクリプトは、デフォルトのマウントポイントを設定します

my $default_mount_point = "/mnt/vzsnap0";

しかし、GUIを使用するかコマンドラインを使用するかに関係なく、次のエラーが発生します。

ERROR: Backup of VM 103 failed - mkdir /mnt/vzsnap0: 
Permission denied at /usr/share/Perl5/PVE/VZDump/LXC.pm line 161.

そして、そのスクリプトの160〜161行目は次のとおりです。

my $rootdir = $default_mount_point;
mkpath $rootdir;

インストール後、イメージを作成する前、またはバックアップを作成する前に、2つのことをセットアップしました。

  • (1)/mnt/backupsのSSHFSマウント
  • (2)他のすべてのドライブをLinux LVMとして追加しました

ドライブを追加するために私がしたことは、次のように簡単です。

pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvcreate /dev/sdd1
pvcreate /dev/sde1
vgextend pve /dev/sdb1
vgextend pve /dev/sdc1
vgextend pve /dev/sdd1
vgextend pve /dev/sde1
lvextend pve/data /dev/sdb1
lvextend pve/data /dev/sdc1
lvextend pve/data /dev/sdd1
lvextend pve/data /dev/sde1

SSHFSの手順については、私のブログ投稿を参照してください。 https://6ftdan.com/allyourdev/2018/02/04/proxmox-a-vm-server-for-your-home/


ファイルシステムディレクトリの権限に関連するファイルと詳細を以下に示します。

cat /etc/fstab

# <file system> <mount point> <type> <options> <dump> <pass>
/dev/pve/root / ext4 errors=remount-ro 0 1
/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0

df -h

Filesystem                                Size  Used Avail Use% Mounted on
udev                                      7.8G     0  7.8G   0% /dev
tmpfs                                     1.6G  9.0M  1.6G   1% /run
/dev/mapper/pve-root                       37G  8.0G   27G  24% /
tmpfs                                     7.9G   43M  7.8G   1% /dev/shm
tmpfs                                     5.0M     0  5.0M   0% /run/lock
tmpfs                                     7.9G     0  7.9G   0% /sys/fs/cgroup
/dev/Fuse                                  30M   20K   30M   1% /etc/pve
[email protected]:/mnt/raid/proxmox_backup  1.4T  725G  672G  52% /mnt/backups
tmpfs                                     1.6G     0  1.6G   0% /run/user/0

ls -dla /mnt

drwxr-xr-x 3 root root 0 Aug 12 20:10 /mnt

ls /mnt

backups

ls -dla /mnt/backups

drwxr-xr-x 1 1001 1002 80 Aug 12 20:40 /mnt/backups

私が成功したいコマンドは次のとおりです。

vzdump 103 --compress lzo --node ProxMox --storage backup --remove 0 --mode snapshot

記録では、コンテナイメージのサイズはわずか8GBです。

コンテナのクローンは機能し、スナップショットは機能します。


質疑応答


Q)Perlスクリプトをどのように実行していますか?

A)GUIで今すぐバックアップをクリックしてください、次にストレージ(backupslocalがあり、どちらもこのエラーを生成します)、次にコンテナーの状態を選択します(SnapshotSuspendStopはそれぞれ同じエラーを生成し、)圧縮タイプ(noneLZO、およびgzipはそれぞれ同じエラーを生成します)。すべての設定が完了したら、Backupをクリックして次の出力を取得します。

INFO: starting new backup job: vzdump 103 --node ProxMox --mode snapshot --compress lzo --storage backups --remove 0
INFO: Starting Backup of VM 103 (lxc)
INFO: Backup started at 2019-08-18 16:21:11
INFO: status = stopped
INFO: backup mode: stop
INFO: ionice priority: 7
INFO: CT Name: Passport
ERROR: Backup of VM 103 failed - mkdir /mnt/vzsnap0: Permission denied at /usr/share/Perl5/PVE/VZDump/LXC.pm line 161.
INFO: Failed at 2019-08-18 16:21:11
INFO: Backup job finished with errors
TASK ERROR: job errors

これから、コマンドがvzdump 103 --node ProxMox --mode snapshot --compress lzo --storage backups --remove 0であることがわかります。 SSHシェルでログインしてこのコマンドを実行しようとしたところ、同じエラーが発生しました。


Q)ディレクトリの「不変」属性が設定されている可能性があります。 lsattr /を試して、/mntに小文字の "i"属性が設定されているかどうかを確認してください。

A)root@ProxMox:~# lsattr /

--------------e---- /tmp
--------------e---- /opt
--------------e---- /boot
lsattr: Inappropriate ioctl for device While reading flags on /sys
--------------e---- /lost+found
lsattr: Operation not supported While reading flags on /sbin
--------------e---- /media
--------------e---- /etc
--------------e---- /srv
--------------e---- /usr
lsattr: Operation not supported While reading flags on /libx32
lsattr: Operation not supported While reading flags on /bin
lsattr: Operation not supported While reading flags on /lib
lsattr: Inappropriate ioctl for device While reading flags on /proc
--------------e---- /root
--------------e---- /var
--------------e---- /home
lsattr: Inappropriate ioctl for device While reading flags on /dev
lsattr: Inappropriate ioctl for device While reading flags on /mnt
lsattr: Operation not supported While reading flags on /lib32
lsattr: Operation not supported While reading flags on /lib64
lsattr: Inappropriate ioctl for device While reading flags on /run

Q)問題なく/mnt/vzsnap0を手動で作成できますか?

A)root@ProxMox:~# mkdir /mnt/vzsnap0

mkdir: cannot create directory ‘/mnt/vzsnap0’: Permission denied

Q)クリーンに複製できますかVM?

A)わかりません。私はそれを試すための追加のシステムを持っていません、そして私はそれを持っているコンテナが必要です。 VM=内で試してみる...わからない。たぶん試してみたほうがいいと思うが、実際に試してみる必要はないだろう。他のすべてが失敗した場合はそうだろう。


Q)drwxr-xr-x 1 1001 1002 80 Aug 12 20:40 /mnt/backupsを見ると、ID 1001にアクセスできるユーザーがいるようですバックアップであるため、rootも書き込みできません。それが1001である理由と、どのグループが1002で表されているかを確認する必要があります。次に、rootおよびGUIを実行するユーザーを、ID 1002のグループに追加できます。

A)/mnt/backupsディレクトリへの書き込みに問題はありません。たった今cd /mnt/backups; mkdir testを行い、成功しました。

8
6ft Dan

メッセージから

mkdir/mnt/vzsnap0:権限が拒否されました

/ mntディレクトリの権限が問題であることは明らかです。

ディレクトリの「immutable」属性が設定されている可能性があります。

lsattr /を試して、/mntに小文字の「i」属性が設定されているかどうかを確認してください。

reference

Lsattr出力の小文字のiは、ファイルまたはディレクトリが不変として設定されていることを示します。rootでさえも、変更を行う前にこの属性をクリアする必要があります。 rootアクセスを使用すると、これをchattr -i /mntで削除できるはずですが、これが最初に実行された理由はおそらくあります。削除する前に、その理由と、それがまだ当てはまるかどうかを確認する必要があります。セキュリティへの影響があるかもしれません。

したがって、これが当てはまる場合は、以下を試してください。

chattr -i /mnt

それを削除します。

参考文献

lsattr出力

inodeフラグによる—属性のマニュアルページ

FS_IMMUTABLE_FL 'i':ファイルは不変:ファイルの内容またはメタデータへの変更は許可されません(権限、タイムスタンプ、所有権、リンク数など)。 (この制限は、スーパーユーザーにも適用されます。)この属性を設定またはクリアできるのは、特権プロセス(CAP_LINUX_IMMUTABLE)だけです。

2
Jannes Botis

バウンティがまだ有効である限り、ここで説明されている問題を修正する正当な答えを提供します。

私が皆さんのためにここに書いているのは回避策うまくいくと思いました。 非常に遅いであることに注意してください。

ネットワーク上の別のシステムに存在する/mnt/backupsディレクトリに書き込むことができるため、Perlスクリプトを変更しました/mnt/backups/vzsnap0ではなく/mnt/vzsnap0を指すようにします。

バウンティは、/mntディレクトリを取得して、バックアップスクリプトのvzsnap0を正常にマウントするためのマウントパスで機能するすべての人に残されています。

1
6ft Dan

これはかなり長年のことです issue 多くの人が直面しているUbuntu Makeです。

上記のリンクでUbuntu開発者が言及した回避策を見ました。

以下の手順に従ってください:

Sudo -s
unset Sudo_UID
unset Sudo_GID

次に、umakeを実行して、通常どおりアプリケーションをインストールします。

これで、任意のディレクトリにインストールできるはずです。私にとって完璧に動作します。

0
Sreeram Nair

ls laZ /mnt SE Linuxが有効になっている場合に、セキュリティコンテキストを確認します。その場合、ラベルの付け替えが必要になる場合があります。 errors=remount-roも調査する必要があります(ただし、lsattrが失敗しない限り、/mnt inode自体が壊れています)。これらのマウントポイント用に新しいディレクトリiノードを作成することは、試してみる価値があります。それが機能する場合、それらを交換できます。

0
Martin Zeitler

1)おそらく、「/ mnt/vzsnap0」は読み取り専用としてマウントされていますか?

それはあなたから言うかもしれません:

/dev/pve/root / ext4 errors=remount-ro 0 1 'errors = remount-ro'は、読み取り専用のようにパーティションを誤って再マウントした場合を意味します。おそらく、この設定はマウントされたファイルシステムにも適用されます。

次のリンクのようにドライブを再マウントしてみてください。 https://askubuntu.com/questions/175739/how-do-i-remount-a-filesystem-as-read-write

それが成功した場合は、後で手動でディレクトリを作成しますか?

2)それでも解決しない場合: https://www.linuxquestions.org/questions/linux-security-4/mkdir -throws-permission-denied-error-in-a-directoy-even-with-root-ownership-and-777-permission-4175424944 / そこで、誰かがコメントしました:

ディレクトリを含むパーティションのファイルシステムは何ですか。[?]ディレクトリのアクセス権を確認するか、それが別のディレクトリへのシンボリックリンクかどうかを確認してください。ディレクトリがNFSマウントの場合、rootsquashはrootによる書き込みを防止できます。

属性を確認します(lsattr)。 ACLを確認します(getfacl)。 selinuxの制限を確認します。 (ls -Z)

ファイルシステムが破損している場合、最初はRWでマウントされている可能性がありますが、不良領域に書き込もうとした場合は、ROに変更してください。

0
Guus Baggen