come posso collegare simbolicamente la mia cartella principale da un'altra unità?


15

Più specificamente, voglio avere la cartella utente per il mio account di casa un altro disco che abbia più spazio, ma mantieni gli altri account più piccoli sul mio SSD. Sono stato in grado di copiare la mia cartella utente su un altro disco, ma ora ho bisogno di collegarla alla cartella principale sul mio SSD, la voglio accessibile da un avvio normale e per favore non dirmi che quello che ho fatto non era il cosa migliore, voglio solo una risposta. Come ottengo per creare un collegamento che va da / home / username a / extra-home / username e viene riconosciuto dal sistema quando si caricano le cartelle utente?

Risposte:


21

Ricorda che le tue autorizzazioni dovranno essere le stesse. Oltre al collegamento simbolico, su distro e filesystem più recenti, come root puoi anche usare bind-mount:

mkdir /home/username mount --bind --verbose /extra-home/username /home/username

Ciò è utile per consentire l'accesso "attraverso" la directory / home ai sottodiriali tramite demoni che sono altrimenti configurati in modo da evitare il percorso attraverso symlink (apache, ftpd, ecc.).

Devi ricordarti (o script di init) di legare al riavvio, ovviamente.


Non sapevo che i collegamenti simbolici potessero creare tali problemi. Come trattano questi demoni /var/run/?
Paolo,

1
I server sono progettati per limitare l'accesso al filesystem locale, per evitare di compromettere il sistema. Puoi pensarlo come "cose ​​consentite agli utenti remoti". Non devono limitarsi ad accedere a / var / run (in genere all'avvio / spegnimento) come "cose ​​consentite a questo processo". Vedi la direttiva FollowSymLinks di Apache per un esempio di come consentire al filesystem servito di attraversare i collegamenti simbolici, se lo si desidera.
Joe Atzberger,

possiamo anche espandere / bin e / lib allo stesso modo (può essere utile nel filesystem di piccole dimensioni)?
riscatto

Il tuo sistema ha bisogno /bine /liball'inizializzazione (cioè prima di poter eseguire il mountcomando)? In tal caso, non è possibile utilizzare questa strategia.
Joe Atzberger,

2
Aggiungere qui informazioni, come ho dovuto cercarle, una volta fatto per aggiungere init in / etc / fstab ecco il modulo. Quando si utilizza il metodo descritto da Joe mount --bind --verbose /extra-home/username /home/username, la linea in /etc/fstabsarebbe/extra-home/username /home/username none defaults,bind 0 0
Wilken

9

Secondo questa domanda su Super User questo è possibile.

Puoi creare un link simbolico usando:

ln -s /extra-home/username /home/username

Se per qualche motivo non funziona, puoi semplicemente eliminare il collegamento simbolico, spostare indietro la directory e riavviare il computer.


Se è una cartella semplice, devi iniziare con / media / {nome_hardrive} / {la tua cartella} Ho appena provato questo su un server debian e funziona.
risposta Cercatore

2

Vorrei provare questo:

Durante l'accesso come utente diverso, in una shell di root (ad es. sudo -i), Copia il contenuto di /home/usernamea /extra-home/usernamee assicurati che la nuova posizione sia di proprietà di username:

# cp -p /home/username /extra-home/
# chown username:username /extra-home/username

Spostare la /home/username/directory originale in un luogo sicuro:

# mv /home/username /root/

Crea il link simbolico:

# ln -s /extra-home/username /home/username

Verifica che funzioni come previsto aprendo un'altra finestra del terminale ed eseguendo su:

$ sudo su username

Se tutto sembra a posto, almeno dal terminale (i contenuti di /home/username/appaiono come previsto), quindi disconnettersi e riconnettersi (suppongo che tu sia sul desktop di Ubuntu) e dovrebbe funzionare normalmente. Tuttavia, in caso contrario, è sufficiente eliminare il collegamento simbolico e spostare la cartella principale archiviata nella posizione originale.

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.