Když připojujete nové médium, počítač šoupne jeho souborový systém na nějakou konkrétní cestu, abyste se na vzdálené soubory dostali vy a vaše programy. Tomuhle procesu se říká mountování. Flashky a externí disky za vás řeší systém automaticky (objeví se ve složce /media), ale pracujete-li se síťovými disky, vyplatí se si mountování ohlídat.
Pořád se někam připojujete přes SSH a pak tokáte cd cd jako vrabci? Rádi byste na vzdálených počítačích kombinovali efektivitu příkazového řádku s pohodlím Krusaderu nebo jiného pokročilého souborového správce? A to u různých typů disků – firemní, gdrive, mega… Mountovat umíte, ale otravuje vás? Jak se neobtěžovat mountováním? Není lepší přimountovat všechno automaticky při startu počítače? (A pak bědovat při přepojení z ethernetu na wifi, že se všechno seklo a mrzlo až praštělo.) Mám návrh.
Kvarteto pro zdolání Mount Mountingu
Nesmírně spokojená léta používám čtvero prvků pro snadné zavádění disků: dva konfiguráky, jeden program (to jako Krusader) a jeden utilitku. Kdysi jsem jeden systém pytlíkoval tak a druhý onak, ale konzistence je teta moudrosti.
Konfiguráky navíc mám v sekci rozcestníku custom_menu.py, který jsem vám představoval v dílu Studené klávesy. Spolu s bashrc a dalšími hvězdami tam čekají, abych se o jejich editaci nemusel doprošovat ve složkách. Přidejte si je tam takto:
[config files] edit fstab=kate /etc/fstab edit ssh config=kate ~/.ssh/config
Přehledná pojmenování – .ssh/config
Jakmile dostanu přístup k novému disku, zanesu jej do konfiguračního souboru config skryté složky .ssh. Takové tři krásné řádky:
Host depo User pepazdepa HostName 192.0.2.1
pomohou tomu, abych v terminálu nemusel psát: “Pojmenovali mě hrozně vtipně na serveru s touhle IP, ssh pepazdepa@192.0.2.1,” ale stačilo mi pouhé ssh depo. Každopádně si vyzkoušejte, že se na stroj dostanete už teď.
Centrála konektivity – fstab
V adresáři, který použijete jako centrálu svých disků (třeba /mnt), založte nový adresář se jménem serveru, /mnt/depo, chownněte jej na svého uživatele sudo chown pepa:pepa /mnt/depo a zkuste se tam přimountovat ručně z příkazového řádku. To může být kámen úrazu; širé skály a úskalí mountování jako takového nejsou cílem tohoto článku, zde z něj vycházíme. Když budete mít štěstí, postačí vám nainstalovat balík sudo apt install sshfs pro SSH disky a cifs-utils pro windowsovská sdílení (kterým možná nesprávně všem říkám samba). Pak zavolejte mount.sshfs depo:/ /mnt/depo -v && ls /mnt/depo a pokud vidíte obsah vzdáleného hard-disku, máme vyhráno.
Přidejte zprávu o svém vítězství do fstabu, což je soubor, který se stará o blaho diskové konektivity. Díky souboru .ssh/config bude stačit poměrně stručný řádek:
depo:/ /mnt/depo fuse.sshfs noauto,users 0 0
Říká nám, že ssh připojení k serveru známém jako depo (první políčko) se přivěsí na adresář /mnt/depo přes protokol či pomocný program fuse.sshfs s nějakými základními parametry a právy.
Konečně v GUI – Krusader
V současné chvíli jsou vzdálené disky dostupné Krusaderu, ale my chceme jít dál a pomoci mu, aby je sám svižně připojoval a odpojoval. Využijeme k tomu utilitu mount_dir.py, již si račte (prohlédnout a) stáhnout na disk. Jako poslední zbývá přidat UserAction s následujícím příkazem: /path/to/mount_dir.py %aCurrent%. Jakmile použiju zkratku dané akce nad adresářem /mnt/depo, vyskočí okénko oznamující, zda se disk připojil či odpojil, případně terminál s žádostí o heslo.
To je právě výhoda mount_dir.py, nestaráme se o to, zda daný mount vyžaduje při každém přístupu heslo nebo stačí SSH klíč, zda je připojen či odpojen. Pronapříště se můžete soustředit na svůj úkol a ne na to, jak se na disk vůbec dostat.
Kdo nás to omezuje v právech – root
Disky jsou připojeny, signály po drátech běží jako po drátkách, rochníme se v hojnosti souborů – když tu, co se nestalo? You have no permission to! vstoupit do adresáře, prohlédnout soubor… Chybí nám práva superadministrátora. Jde přimountovat disk a být na vzdáleném počítači tamním rootem? Inu, lze, ale spíš se toho snažte vyvarovat. Lepší řešení je přidat svého vzdáleného uživatele do skupin, které mají dostatečná práva k tomu, co potřebují, například www-data pro míchání webových záležitostí. A když se práva popletou, vyrazit do příkazové řádky a tam je ručně opravit. Pokud však trváte na tom, mountovat jako root a dělat tvrdou paseku (protože každý soubor, který vytvoříte, bude rootův, takže si ho ostatní uživatelé neužijou), nažhavte program sftp-server.
Nejprve na vzdáleném počítači řádek do sudoers zajistí, abyste váš vzdálený uživatel mohl bez hesla sftp-server spouštět: pepa ALL=(ALL) NOPASSWD: /usr/lib/openssh/sftp-server. Díky tomu bude lokální sshfs, pro který příklad uvádíme a který zajišťuje spojení, schopen povýšit daný program poslepu.
Následně zkusíte namountovat z příkazové řádky, abyste odladili chyby, chcete jich vidět co nejvíc, proto zvedneme jejich výpis až po úroveň debug. Nějak takhle:
sshfs -o debug,sshfs_debug,loglevel=debug -o allow_root -o sftp_server="sudo /usr/lib/openssh/sftp-server" depo:/ /mnt/depo
Jestli všechno klaplo a adresář je plný vzdálených souborů, přichází řada na fstab. Vzdálený disk je teď váš, definitivně, cele a nebezpečně.
depo:/ /mnt/depo fuse.sshfs users,allow_root,sftp_server=sudo /usr/lib/openssh/sftp-server 0 0