Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🔓 Kuidas saada WinSCP-s juurõigusi: sudo seadistamine failiedastusteks

🔓 Kuidas saada WinSCP-s juurõigusi: sudo seadistamine failiedastusteks

Ühendute serveriga tavaõigustes kasutajana, navigeerite kausta /etc/nginx ja saate veateate „Permission denied". Konfiguratsioonifailid, süsteemikataloogid, logid: kõik see on root-õigusteta konto eest lukus. Ja otsene root-kasutajaga SSH kaudu sisselogimine on enamikul serveritel turvakaalutlustel keelatud.

WinSCP on mugav failihaldur Windowsile, kuid vaikimisi töötab selle SFTP-seanss selle kasutaja õigustega, kellena sisse logisite. SFTP-protokoll ei saa „lennult" õiguste tõstmist taotleda nagu terminal: see ei ole autentimise ajal interaktiivne ega saa kuvada akent sudo parooli sisestamiseks.

Allpool on neli töötavat meetodit, kuidas panna WinSCP tööle superkasutaja õigustes, alates lihtsaimast kuni „Jedi" lähenemiseni. Kõiki on testitud Ubuntu, Debiani ja CentOS peal. Valige see, mis teie infrastruktuuriga kõige paremini sobib.

💡 Kiirülevaade:

  • ➡️ Probleem: WinSCP ei anna vaikimisi root-õigusi, isegi kui kasutajal on sudo.
  • Peamine meetod: SFTP-serveri käivituskäsu asendamine WinSCP saidi seadetes. Kiire ja sihitud.
  • 🔄 Alternatiiv: SCP-protokollile üleminek, kasutades shellina sudo su -.
  • ⚙️ Edasijõudnutele: sshd_config redigeerimine serveris. Globaalne lahendus kõikidele ühendustele.

1. Samm: SFTP-serveri käivituskäsk (peamine meetod)

Kõige levinum ja elegantsem viis root-õiguste saamiseks WinSCP-s on panna see SFTP-serverit kohe algusest superkasutajana käivitama. Seda tehakse konkreetse ühenduse seadetes käivituskäsu asendamisega. Serverit ennast ei ole vaja ümber seadistada; lahendus töötab ühendusepõhiselt.

SFTP serveri seadete aken WinSCP-is

Samm-sammuline juhend:

  • Käivitage WinSCP ja avage Site Manager.
  • Valige soovitud ühendus ja klõpsake Edit.
  • Klõpsake akna allservas Advanced….
  • Vasakpoolses menüüs minge Environment → SFTP.
  • Väljal „SFTP Server" asendage „Default" järgmise käsuga:
1sudo /usr/lib/openssh/sftp-server

Vanemate distributsioonide puhul võib asukoht erineda. Tüüpilised sftp-server asukohad:

Distributsioon

Asukoht sftp-serverile

Ubuntu / Debian (praegune)

/usr/lib/openssh/sftp-server

Ubuntu / Debian (vanem)

/usr/lib/sftp-server

CentOS / RHEL / Fedora

/usr/libexec/openssh/sftp-server

Amazon Linux

/usr/libexec/openssh/sftp-server

Täpse asukoha saate oma serveris terminali kaudu kontrollida: cat /etc/ssh/sshd_config | grep Subsystem. See käsk näitab, millist binaarfaili SSH-server ise kasutab.

Süsteem käivitab failiedastuse alamsüsteemi kohe root-õigustega. Kuid selleks, et see töötaks veateateta, peab teie kasutaja saama käivitada sudo ilma parooli küsimata. Seda käsitletakse järgmises sammus.


2. Samm: sudoers seadistamine (sudo lubamine ilma paroolita)

Kuna SFTP autentimine ei ole interaktiivne, ei saa WinSCP kuvada akent sudo parooli sisestamiseks. Server lihtsalt lõpetab ühenduse veateatega, kui parooli küsitakse. Lahendus on anda kasutajale /etc/sudoers faili kaudu luba käivitada vajalik käsk ilma paroolita.

sudoers faili redigeerimine visudo abil

Mida teha:

  • Looge serveriga SSH-ühendus (kasutades PuTTY-d või WinSCP sisseehitatud terminali).
  • Avage sudoers redaktor käsuga sudo visudo. Ärge kunagi redigeerige /etc/sudoers otse: süntaksiviga lukustab sudo kogu süsteemi jaoks ja visudo kontrollib süntaksit enne salvestamist.
  • Lisage faili lõppu järgmine rida (asendage username oma kasutajanimega):
1username ALL=(ALL) NOPASSWD: ALL

See annab kasutajale täieliku juurdepääsu ilma paroolita. Turvalisem variant on piirata luba ainult SFTP-serveri käivituskäsule:

1username ALL=NOPASSWD: /usr/lib/openssh/sftp-server

Kui serveril on mitu erineva kasutajanimega administraatorit, vähendab kitsas konfiguratsioon riske: isegi kui konto satub ohtu, ei saa ründaja root-juurdepääsu kõigele, vaid ainult võimaluse SFTP-d käivitada.

Märkus: requiretty valik sudoers failis peab olema keelatud. Kaasaegsed sudo-rs teostused seda vaikimisi ei toeta, kuid vanematel serveritel kontrollige ja kommenteerige välja rida Defaults requiretty, kui see on olemas.


3. Samm: SCP-protokollile üleminek (kiire alternatiiv)

Kui te ei soovi tegeleda sftp-server asukohtadega, saate vahetada andmeedastusprotokolli ennast. WinSCP toetab SCP-d, vanemat, kuid usaldusväärset protokolli, mis võtab shelli seaded kergemini üle.

SCP protokolli ja shelli seadistamine WinSCP-is

Kuidas vahetada:

  • WinSCP seansi seadetes muutke File protocol SFTP asemel SCP peale.
  • Minge Advanced → SCP/Shell.
  • Väljale Shell sisestage: sudo su -

Ühenduse loomisel käivitab WinSCP selle käsu kohe pärast sisselogimist ja lülitab seansi root-režiimi.

SFTP

SCP

Root-õigused

Serveri binaarfaili asendamise kaudu

Shelli asendamise kaudu (sudo su -)

Kiirus

Suurem, eriti paljude väikeste failide puhul

Madalam

Jätkamine katkestuse korral

Jah

Ei

Usaldusväärsus vanematel süsteemidel

Nõuab binaarfaili täpset asukohta

Töötab „karbist välja"

Turvalisus

NOPASSWD saab piirata ühele käsule

Nõuab täielikku paroolita sudo ligipääsu

SCP meetod on kompromiss. Seda on lihtsam seadistada, kuid see kaotab SFTP-le kiiruses ja taastumisvõimes pärast ühenduse katkemist. Ühekordsete konfiguratsioonimuudatuste puhul on erinevus tühine. Sadade failide regulaarseks edastamiseks on parem seadistada SFTP meetod.


4. Samm: Globaalne sshd_config seadistus (edasijõudnutele)

See meetod on administraatoritele, kes soovivad SSH-serveri käitumist tsentraalselt seadistada. Idee: asendada rida Subsystem sftp failis /etc/ssh/sshd_config loogilise konstruktsiooniga, mis tuvastab automaatselt, kas kasutaja saab sudo ilma paroolita käivitada, ja käivitab SFTP vastavate õigustega.

Mida muuta:

Vana rida (tavaliselt):

1Subsystem sftp /usr/lib/openssh/sftp-server

Uus rida:

1Subsystem sftp sudo -n true && sudo -n /usr/lib/openssh/sftp-server || /usr/lib/openssh/sftp-server

Kuidas see töötab:

  • sudo -n true kontrollib, kas kasutaja saab sudo ilma paroolita käivitada (lipp -n tähendab mitteinteraktiivset).
  • Kui jah (&&), käivitub server root-õigustega.
  • Kui ei (||), käivitub server tavaliste kasutajaõigustega.

Pärast redigeerimist taaskäivitage SSH-teenus: sudo systemctl restart sshd.

Oluline: süntaksiviga selles failis lukustab teid täielikult serverist SSH kaudu välja. Enne redigeerimist veenduge, et teil on teine terminal aktiivse seansiga. Kui midagi läheb valesti, saate muudatused tagasi võtta. Samuti tehke varukoopia: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.


Pilveserverite eripärad (AWS EC2, DigitalOcean)

Pilve Linuxi tõmmistel on sageli eelseadistatud sudoers sätted, mis võivad ülesannet kas lihtsustada või keerulisemaks muuta.

cloud-init sudo seaded AWS EC2-s

AWS EC2 (Ubuntu):

ubuntu kasutajal Ubuntu 18.04 ja uuematel tõmmistel on sageli juba vajalikud õigused olemas. Kontrollige faili /etc/sudoers.d/90-cloud-init-users, mis võib juba sisaldada rida:

1ubuntu ALL=(ALL) NOPASSWD:ALL

Kui see on seal, võite 2. sammu vahele jätta. WinSCP seadetes kasutage käsku sudo /usr/lib/openssh/sftp-server.

AWS EC2 (Amazon Linux):

Amazon Linuxis on sftp-server asukoht erinev: /usr/libexec/openssh/sftp-server. Ühetäheline viga (lib asemel libexec) annab tulemuseks veakoodi 127 (Command not found) ja kohese ühenduse katkemise.

DigitalOcean (Ubuntu Dropletid):

Tavalistel DigitalOceani dropletitel on root kasutaja vaikimisi lubatud, kuid juurdepääs on ainult SSH võtme kaudu. Kui lõite eraldi kasutaja, on sudoers konfiguratsioon sama, mis tavalise Ubuntu puhul.

Üldine nõuanne pilve jaoks: enne asukoha sisestamist WinSCP-s kontrollige, kas fail on serveris olemas: ls -la /usr/lib/openssh/sftp-server (või teie distributsioonile vastav ekvivalent).


⁉️🤔 Korduma kippuvad küsimused

Kas ma pean lubama otsese root-kasutajaga sisselogimise, et WinSCP töötaks koos sudoga?

Ei. Kirjeldatud meetodite kogu mõte on kasutada tavalist kontot ja ajutiselt tõsta õigusi sudo abil. Otsest root-sisselogimist (PermitRootLogin yes) peetakse halvaks turvatavaks: logid ei näita, milline administraator tegelikult toimingu tegi.

Miks näitab WinSCP pärast seadistamist viga „Command not found"?

Tõenäoliselt on sftp-server asukoht vale. Erinevates distributsioonides asub see kaustas /usr/lib/, /usr/lib/openssh/ või /usr/libexec/openssh/. Täpset asukohta saab serveris kontrollida käsuga cat /etc/ssh/sshd_config | grep Subsystem.

Kui turvaline on NOPASSWD sudoers failis?

See on kompromiss. Täielik juurdepääs ALL=(ALL) NOPASSWD:ALL vähendab kaitset: kui ründaja saab juurdepääsu kasutajale, saab ta ka root-õigused. Konkreetse käsuga piiramine (/usr/lib/openssh/sftp-server) on oluliselt turvalisem: kõrvaline isik ei saa selle konto kaudu käivitada midagi muud peale SFTP-serveri.

Kas see töötab ka teiste klientidega nagu FileZilla või Cyberduck?

Põhimõte on sama, kuid konfiguratsioon erineb. FileZillal ei ole graafilises liideses mugavat välja SFTP-serveri käsu jaoks; vaja on konfiguratsioonifaili redigeerida. Cyberduck toetab ühenduse seadetes valikut „SFTP Server", sarnaselt WinSCP-le. WinSCP võidab mugavuses just selle stsenaariumi puhul.

Mida teha, kui failid on nähtavad, kuid mitte redigeeritavad?

Kontrollige omanikku ja õigusi serveris käsuga ls -la. Kui seadistasite SFTP-serveri sudo kaudu, kuid ühendus langes tagasi tavalistele õigustele, tähendab see, et sudo küsis parooli ja ei saanud vastust. Kontrollige uuesti NOPASSWD seadistust 2. sammust.

Kas ma võin lihtsalt muuta süsteemifailide omaniku oma kasutajaks?

See on „räpane" lahendus. Süsteemiteenused eeldavad, et nende konfiguratsioonid kuuluvad root-ile. Omaniku (chown) või õiguste (chmod) muutmine süsteemifailidel võib teenused katkestada. Parem on kulutada viis minutit sudo seadistamisele ja teha asju korralikult.

Mis vahe on SCP-l ja SFTP-l sudo kontekstis?

SCP on lihtsalt kopeerimine üle SSH: see võtab shelli kergemini üle, seega piisab selle jaoks käsust sudo su - Shelli väljal. SFTP on täisväärtuslik alamsüsteem, mis töötab eraldi protsessina: see nõuab binaarfaili asendamise nippi. SFTP on kiirem ja funktsioonirikkam; SCP-d on lihtsam seadistada.

Kas toimingud on logides nähtavad, kui kasutate sudot WinSCP kaudu?

Jah. Failis /var/log/auth.log on kirje, mis näitab, et kasutaja username tõstis õigusi sudo abil. See on pluss: kui administraatoreid on mitu, näitavad logid täpselt, kes toimingu tegi. Otsese root-sisselogimise puhul selline läbipaistvus puudub.

Mida teha, kui sudo nõuab TTY-d, kuid WinSCP seda ei paku?

Kontrollige /etc/sudoers failis valikut Defaults requiretty. Kui see on olemas, kommenteerige see välja (lisage rea algusesse #) või keelake see konkreetse kasutaja jaoks: Defaults:username !requiretty. Kaasaegsed sudo-rs teostused seda valikut ei toeta; probleem on asjakohane ainult vanemate serverite puhul.

Kas ma saan SFTP-d käivitada root asemel mõne teise kasutajana?

Jah. Käsk sudo -u www-data /usr/lib/openssh/sftp-server käivitab seansi kasutajana www-data. See on mugav, kui peate redigeerima veebisaidi faile ilma süsteemikatalooge puudutamata. Sudoers õigused peavad selleks sisaldama -u valikut: username ALL=(www-data) NOPASSWD: /usr/lib/openssh/sftp-server.


Lõplik otsus: milline meetod valida

Igapäevaseks serveritööks on optimaalne esimene meetod: SFTP-serveri käsu asendamine kombineerituna kitsa NOPASSWD seadistusega ainult sftp-server jaoks. See on turvaline, ei mõjuta globaalseid seadeid ja töötab kõigil kaasaegsetel distributsioonidel.

  • Kui teil on Ubuntu / Debian ja olete nõus kulutama 5 minutit seadistamisele, kasutage 1. sammu + 2. sammu ja ärge pöörduge selle probleemi juurde enam kunagi tagasi.
  • Kui server on vana ja sftp-server asukohta ei leita, minge üle SCP-le (3. samm): see talub ebatäpsusi ja töötab praktiliselt kõikjal.
  • Kui haldate kümneid servereid ja soovite ühtset standardit, seadistage sshd_config (4. samm) üks kord Ansible'i või käsitsi, kuid kindlasti varukoopiaga.

Alustage kontrollist: logige serverisse SSH kaudu sisse ja käivitage cat /etc/ssh/sshd_config | grep Subsystem. Minuti pärast teate täpset asukohta ja esimene meetod töötab esimesel katsel. Millist failiedastusmeetodit teie kasutate? Jagage kommentaarides.