Come gestire le partizioni montate (fstab + mount points) dal pupazzo


14

Voglio gestire le partizioni montate dal pupazzo che include sia la modifica /etc/fstabche la creazione delle directory utilizzate come punti di montaggio. Il mounttipo di risorsa si aggiorna fstabbene, ma l'utilizzo fileper la creazione dei punti di montaggio è un po 'complicato.

Ad esempio, per impostazione predefinita il proprietario della directory è root e se la radice (/) della partizione montata ha un altro proprietario, il pupazzo proverà a cambiarlo e non lo voglio. So che posso impostare il proprietario di quella directory, ma perché dovrei preoccuparmi di cosa c'è nella partizione montata? Tutto quello che voglio fare è montarlo. C'è un modo per fare in modo che il pupazzo non si preoccupi delle autorizzazioni della directory usata come punto di montaggio?

Questo è quello che sto usando in questo momento:

define extra_mount_point(
    $device,
    $location = "/mnt",
    $fstype = "xfs",
    $owner = "root",
    $group = "root",
    $mode = 0755,
    $seltype = "public_content_t"
    $options = "ro,relatime,nosuid,nodev,noexec",
) {
    file { "${location}/${name}":
        ensure  => directory,
        owner   => "${owner}",
        group   => "${group}",
        mode    => $mode,
        seltype => "${seltype}",
    }

    mount { "${location}/${name}":
        atboot  => true,
        ensure  => mounted,
        device  => "${device}",
        fstype  => "${fstype}",
        options => "${options}",
        dump    => 0,
        pass    => 2,
        require => File["${location}/${name}"],
    }
}

extra_mount_point { "sda3": 
    device   => "/dev/sda3",
    fstype   => "xfs",
    owner    => "ciupicri",
    group    => "ciupicri",
    $options => "relatime,nosuid,nodev,noexec",
}

Nel caso sia importante, sto usando puppet-0.25.4-1.fc13.noarch.rpm e puppet-server-0.25.4-1.fc13.noarch.rpm.


PS undeffunziona bene per proprietario, gruppo e permessi, ma non per SELinux. Se le partizioni sono già montate, il burattino si lamenta:

puppetd[18052]: Failed to set SELinux context system_u:object_r:public_content_t:s0 on /mnt/sda3
puppetd[18052]: (/File[/mnt/sda3]/seluser) seluser changed 'unconfined_u' to 'system_u'
puppetd[18052]: Failed to set SELinux context unconfined_u:object_r:mnt_t:s0 on /mnt/sda3
puppetd[18052]: (/File[/mnt/sda3]/seltype) seltype changed 'public_content_t' to 'mnt_t'

Le autorizzazioni della partizione montata sono:

drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 /mnt/sda3/

mentre le autorizzazioni del mount point creato da puppet sono:

 drwxr-xr-x. root root system_u:object_r:mnt_t:s0       /mnt/sda3/

PPS Ho segnalato un bug per questo strano comportamento.

Risposte:


9

Puoi dire a Puppet di non gestire un determinato metaparametro impostandolo su undef.

file { "${location}/${name}":
    ensure                  => directory,
    owner                   => undef,
    group                   => undef,
    mode                    => undef,
    selinux_ignore_defaults => true,
}

In questo caso, se la directory non esiste prima del montaggio, verrà creata come utente e gruppo che è puppetdstato avviato come (presumibilmente root: wheel) e con un umask predefinito. Puppet non si preoccuperà di ciò che sono impostati al momento della creazione o in qualsiasi corsa successiva.


In alternativa, se si desidera scambiare un po 'di complessità per sicurezza, è possibile utilizzare un fatto personalizzato per determinare quali sono i montaggi attivi e un'istruzione switch per impostare le autorizzazioni della directory a seconda che sia pre o post-montato.


undefha fatto il trucco. Le directory sono create con la seguente autorizzazione rwxr-xr-x. root root system_u:object_r:mnt_t:s0che va bene per me.
Cristian Ciupitu,

1
Si prega di aggiungere selrange => undef, selrole => undef, seltype => undef, seluser => undef,alla risposta.
Cristian Ciupitu,

Non ci sarebbe il rischio che fantoccio tenti di gestire la radice del filesystem con "sure => montata"?


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.