mas (spravcem) nastavene (v sudoers) aby jsi pri "sudo -i" nemusel zadavat heslo? protoze pokud ho kdyz jdes pres SSH k mcedit musis zadavat mozna WinSCP ma proto problem, resp. WinSCP nepouzivam, tak nevim zda se pri prihlasovani dokaze zobrazit terminal pro interakci...
O žádný terminál vůbec nejde.
Dovolte, abych připomenul, jak funguje přenos souborů „přes ssh“. Dnešní protokol ssh (verze 2; to, co používáme na portu 22), je šifrovaný kanál, uvnitř kterého se může nezávisle na sobě přenášet několik spojení, přičemž ta spojení mohou přenášet různé protokoly. Některé protokoly umožní forwardovast spojení, ta nás teď nezajímají, a jeden z protokolů je tzv. shell, který umožňuje provádět různé příkazy a mimo jiné spustit aplikaci a přesměrovat její vstup a výstup.
To, čemu se běžně říká „ssh“ a je to vzdálený terminál, znamená, že s na serveru spustí tím protokolem shell spustí shell (třeba Bash) a jeho vstup a výstup se přesměruje tím spojením ssh. Něco napíšete u sebe na klávesnici, přenese se to tím ssh spojením a ten Bash to dostane na svém standardním vstupu. Když Bash něco vypíše na výstup, přenese se to zase k vám. Podstatné ale je, že na tom serveru běží normální proces Bashe, který má prakticky jen přesměrovaný vstup a výstup. No a v tomhle shellu samozřejmě můžete spouštět
su,
sudo nebo cokoli, co vás napadne, a bude to tam normálně fungovat. Třeba když spustíte
sudo, spustí se normálně suid root binárka, Bash na ní přesměruje vstup a výstup a sudo změní efektivního uživatele a nahradí se jiným procesem. Že ten původní Bash byl spuštěn z ssh serveru a že celý ten vstup a výstup je přesměrován do ssh spojení v tom nehraje vůbec žádnou roli.
Naproti tomu
sftp (což je ten protokol pro přenos souborů, který se běžně používá uvnitř ssh 2) jsou další příkazy,které jsou formou rozšíření implementovány nad tím shell spojením. Jsou to ale příkazy implementované přímo sftp serverem (který je součástí ssh serveru nebo jeho rozšířením), není to univerzální shell nebo spouštění procesů. Jsou tam příkazy jako „vypiš adresář“, „přenes soubor“ atd. Ale není tam žádný příkaz
su nebo
sudo. I kdybyste si v tom ssh spojení otevřel to shell spojení s terminálem (WinSCP něco takového umí), a tam byste udělal su, nijak to neovlivní to sftp spojení. Prostě byste v tu chvíli měl tím ssh TCP/IP spojením vedená dvě „shell“ spojení, jedno s přesměrovaným vstupem a výstupem, kde by vám běžel shell a v něm třeba su nahrazené jiným shellem, a druhé „shell“ spojení, ve kterém by se přenášely
sftp příkazy – a které by běželo pořád pod tím uživatelem, který navázal to ssh spojení.
Stručně řečeno, příkazy prováděné v shellu neovlivní (z hlediska oprávnění apod.) to, co se děje v sftp spojení. Takže tazatel má následující možnosti, všechny už tu byly zmíněné:
- Připojit se na vzdálený server do shellu a editovat soubory přímo na serveru místním editorem.
- Editovaným souborům nastavit jako vlastníka svého uživatele, ideálně je mít ve svém domovském adresáři a editovat je tam. Pro otestování je může spouštět pod rootem rovnou a na závěr, až vše bude mít hotové, pod rootem ty soubory přesunout do finálního umístění a nastavit jim jako vlastníka roota. Existují na to různé variace, jako ponechat soubory v původním umístění a jenom jim změnit vlastníka a měnit je rovnou tam. Nebo nějak zautomatizovat zkopírování souborů z domovského adresáře, kde je bude editovat, do cílového umístění.
- Když má na serveru roota, přidat rootovi svůj klíč a povolit přihlášení pod rootem přes ssh. Pokud admin dá roota někomu, kdo se ptá na takovéhle věci, je kaskadér, a snaha možná to zachránit nějakou ústní dohodou, že se nebude přihlašovat přímo na roota ale bude se používat sudo, možná aby byla alespoň nějaká evidence, kdo co udělal, je dost marná. Ale klidně je také možné, že ta nemožnost přihlášení na roota je jenom nezamýšlený vedlejší efekt, a když adminovi řeknete, že je pro vás kvůli editaci pohodlnější přihlašovat se tam přímo pod rootem, bez problémů vám to nakonfiguruje – protože si bude dobře vědom, že byst si to tak klidně mohl nakonfigurovat sám.
Já osobně bych volil prostřední variantu, je to nejbezpečnější – ty soubory budete editovat pod běžným uživatelem a jenom je spouštět pod rootem, což je předpokládám potřeba. Navíc ty soubory budete editovat někde jinde, než je jejich finální umístění, tj. budete mít jejich zálohu, kterou oceníte, až tam něco pokazíte. Pokud ty soubory budete do finálního umístění kopírovat častěji, napište si na to jednoduchý skriptík, který je zkopíruje, nastaví jim správné vlastníky a práva, a máte to vyřešené. Stejně se tam pak přihlašujete, abyste ten skript otestoval, tak jenom spustíte navíc tenhle kopírovací skriptík. I to by se dalo zautomatizovat, kopírovat to třeba při změně souboru, ale to už by byl trochu kanón na vrabce.