Domanda Condivisioni di rete con montaggio automatico per utente


Ho un server con un numero di condivisioni CIFS a cui è necessario accedere per utente. Ad esempio, ho un Musica condividere a cui ho pieno accesso, ma mia moglie ha accesso di sola lettura.

Quando io o mia moglie ci colleghiamo al nostro portatile Ubuntu 11.04 vorrei che queste condivisioni venissero montate automaticamente per utente. Ora capisco che se monto come -t cifs senza specificare un utente, verrà utilizzato il USER variabile d'ambiente. Tuttavia, ho anche bisogno di specificare una password, quindi come posso farlo quando ogni utente ha una password diversa?

Penso che le mie domande siano:

  1. C'è un modo per me di avere un utente / Etc / fstab?
  2. In caso contrario, c'è un modo per specificare che una montatura è applicabile solo a un determinato utente?
  3. Inoltre, la password condivisa è sempre la stessa della password locale. C'è un modo per specificare che questa password deve passare solo dal client al server piuttosto che doverla specificare in un file di credenziali da qualche parte?

O forse mi manca qualcosa e c'è una soluzione completamente diversa. Qualcuno può aiutare?


3
2017-10-16 09:43


origine




risposte:


Ci sono probabilmente diverse soluzioni possibili; ecco come lo farei. (Disclaimer: non testato!)

Il mount.cifs comando può leggere il nome utente e la password dal USER e PASSWD variabili ambientali, ma può anche leggerle da a file "credenziali", che si specifica sulla riga di comando con -o cred=/path/to/credentials/file opzione.

L'approccio dei file di credenziali è IMHO più semplice da implementare.

  1. Crea un file di testo $HOME/.Music.cred per memorizzare le credenziali; il file dovrebbe avere questo formato:

    user=your-username-on-cifs-server
    password=the-password
    domain=leave-this-blank-unless-really-using-windows-domains
    
  2. Proteggi il $HOME/.Music.cred file; esegui questo comando in un terminale:

    chmod go-rw $HOME/.Music.cred
    
  3. Ora dovresti essere in grado di montare la condivisione CIFS //server/music sopra elenco MyMusicFolder usando questo comando:

    sudo mount -t cifs -o cred=$HOME/.Music.cred //server/music $HOME/MyMusicFolder
    

    Puoi abilitare ogni utente a farlo senza password sudo di aggiungendo una linea a /etc/sudoers: (una riga per utente)

    # replace every occurence of `user` with the actual account name
    user ALL= NOPASSWD: /bin/mount -t cifs -o cred=/home/user/.Music.cred //server/music /home/user/MyMusicFolder
    
  4. Se il comando del punto 3. ha funzionato correttamente, puoi farlo automatico in diversi modi:

    • salvalo in uno script di shell nella tua home directory e fallo quello script un'applicazione avviata automaticamente (devi farlo per ogni utente che ha bisogno di montare condivisioni CIFS);
    • salvalo in uno script di shell /etc/X11/Xsession.d/30mount-cifs-shares  in modo che funzioni per qualsiasi utente.

In alternativa, è possibile sostituire i passaggi 3. e 4. sopra con l'uso di pam-mount:

  1. Installa pacchetto libpam-mount

  2. configurare /etc/security/pam_mount.conf.xml con:

    <debug enable="1" />
    <volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />
    

Riferimenti:


3
2017-10-16 10:11



Grazie, ma il passaggio 3 funziona solo per sudo. Pertanto, se lo script allora sarà necessario eseguire come root, non sarà? - Kent Boogaart
Inoltre, per il punto 4 c'è qualche ragione per cui non posso semplicemente inserire questo / Etc / fstab? - Kent Boogaart
Ugh, penso che sia perché viene eseguito come root così $ HOME si riferirà alla casa di root. Mi sembra di essere in una legatura qui. Se il passaggio 3 ha funzionato come non-root, posso vedere come potrebbe funzionare, ma non è così. - Kent Boogaart
@KentBoogaart: hai ragione, ti serve sudo senza password. Ho modificato la risposta con altri suggerimenti. - Riccardo Murri
@KentBoogaart La ragione per cui non funziona /etc/fstab è che le variabili come $HOME non sono espansi lì; la sostituzione del contenuto variabile è una caratteristica della shell. - Riccardo Murri


Come nota a me stesso e agli altri, la ragione per cui libpam-mount non funzionava:

CIFS VFS: Error connecting to socket. Aborting operation
CIFS VFS: cifs_mount failed w/return code = -101

era dovuto al fatto che la mia rete wireless non era ancora iniziata quando libpam stava provando a montare. Per rettificare questo, ho dovuto impostare la connessione wireless come "Disponibile per tutti gli utenti" nelle impostazioni di connessione wireless. Ciò consente alla connessione di attivarsi prima che un utente effettui il login.

Una volta impostata questa proprietà, libpam-mount ha funzionato correttamente.


0
2017-10-18 22:02