change tape drive lock path
New kernel has stricter checks on tmpfs with stick-bit on directories, so some commands (i.e. proxmox-tape changer status) fails when executed as root, because permission checks fails when locking the drive. This patch move the drive locks to /run/proxmox-backup/drive-lock. Note: This is incompatible to old locking mechmanism, so users may not run tape backups during update (or running backup can fail).
This commit is contained in:
committed by
Thomas Lamprecht
parent
49e47c491b
commit
a0cd0f9cec
@ -48,6 +48,9 @@ pub use pool_writer::*;
|
||||
/// Directory path where we store all tape status information
|
||||
pub const TAPE_STATUS_DIR: &str = "/var/lib/proxmox-backup/tape";
|
||||
|
||||
/// Directory path where we store drive lock file
|
||||
pub const DRIVE_LOCK_DIR: &str = concat!(PROXMOX_BACKUP_RUN_DIR_M!(), "/drive-lock");
|
||||
|
||||
/// Directory path where we store temporary drive state
|
||||
pub const DRIVE_STATE_DIR: &str = concat!(PROXMOX_BACKUP_RUN_DIR_M!(), "/drive-state");
|
||||
|
||||
@ -78,6 +81,21 @@ pub fn create_tape_status_dir() -> Result<(), Error> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Create drive lock dir with correct permission
|
||||
pub fn create_drive_lock_dir() -> Result<(), Error> {
|
||||
let backup_user = crate::backup::backup_user()?;
|
||||
let mode = nix::sys::stat::Mode::from_bits_truncate(0o0750);
|
||||
let options = CreateOptions::new()
|
||||
.perm(mode)
|
||||
.owner(backup_user.uid)
|
||||
.group(backup_user.gid);
|
||||
|
||||
create_path(DRIVE_LOCK_DIR, None, Some(options))
|
||||
.map_err(|err: Error| format_err!("unable to create drive state dir - {}", err))?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Create drive state dir with correct permission
|
||||
pub fn create_drive_state_dir() -> Result<(), Error> {
|
||||
let backup_user = crate::backup::backup_user()?;
|
||||
|
Reference in New Issue
Block a user