CH-J Toolsġestjoni tas-server fuq SSH
Menu

Iffrankar mill-bogħod tal-edituri u monitoraġġ tad-dewmien

Fajl tat-tniżżil

Ir-reviżjoni lingwistika ta’ din it-traduzzjoni għadha għaddejja. Jekk xi silta mhijiex ċara, ara t-test oriġinali bl-Ingliż.

Il-kawżi tal-għeruq

L-editur ta' qabel tella' l-fajl ta' ħidma tiegħu fid-direttorju prinċipali tal-mira, li spiss ma jkunx jista' jinkiteb mill-kont SSH taħt /etc jew /var. L-isem tal-isem SFTP ma pprovda l-ebda passaġġ sudo awtorizzat, verifika tal-kunflitt fil-linja bażi, verifika tas-sigurtà tal-metadejta jew semantika ta' min joqgħod fuqha. Il-handler tal-iżbalji ħassar il-kopja temporanja, u neħħa l-materjal ta' rkupru anki meta t-tlestija ma kinitx ċerta.

L-istatus tas-sessjoni qabel kien espost biss l-istat ta' konnessjoni. Ma kien hemm l-ebda kejl tar-rispons SSH tal-ICMP jew awtentikat li jitma' l-indikatur terminali.

Ħlief il-protokoll

  1. A helper SSH fiss jiftaħ fajl regolari, uniku link bl-użu deskrizzjoni relattiva operazzjonijiet u O_NOFOLLOW għal kull komponent tal-passaġġ. Hija tkopri l-kontenut, SHA-256 hash, apparat/inode, UID, GID, bits permess komplut, nanotieni modifikazzjoni / tibdil ħinijiet u l-attributi estiżi li jinqraw kollha. Ewlieni jivverifika l-hash u jiddekowdja stretti UTF-8, preservazzjoni BOM. Kull dokument gets editId opak, ambitu għall-plugin tiegħu, sessjoni terminali u l-identità server.
  2. Operazzjoni ta' tħejjija mhux privileġġata ssolvi l-kont awtentikat dar permezz pwd.getpwuid(os.getuid()), toħloq $HOME/ch-j-sm/ bil-mod 0700 u joħloq privat, ġurnal esklussiv ta 'rkupru. Dar mhux sikura, spazju tax-xogħol ta' symlink, jew spazju tax- xogħol li jkun proprjetà ta' kont ieħor hija miċħuda.
  3. Ewlieni uploads a moħbija, 128-bit .tmp dossier ħidma permezz SFTP ma ' ħolqien esklużiv (wx), modalità 0600 u t-tieni u sittin kanal/upload timeout. Il-ġurnal fih il-mira, il-linja bażi oriġinali u l-hash ta' ħidma mistennija; ma fih l-ebda kredenzjali.
  4. Wieħed SSH exec twettaq il-finalizzazzjoni kollha, b'mod fakultattiv permezz ta' eżekutur sudo eżistenti. L-ajjutant jiftaħ b'mod sigur u jħaffef il-kopja taxxogħol privat u jifflaxxjah. Hija tillokkja l-inode oriġinali, kontrolli tal-linja bażi tagħha, toħloq fajl destinazzjoni esklussiva ħdejn il-mira, jikteb kontenut kollu, japplika u jivverifika metadata, jivverifika l-oriġinal mill-ġdid, u fwawar is-sostituzzjoni.
  5. L-istess Direttorju os.replace jissostitwixxi l-mira. Il-kumpanija prinċipali direttorju huwa mlaħalħa u l-passaġġ finali, hash, inode u metadata huma vverifikati. Il-passaġġ oriġinali jibqa' disponibbli sakemm jinbidel. Il-fajl ta' ħidma qatt ma jiċċaqlaq tul is-sistemi tal-fajls u qatt ma jitneħħa mill-finalizzazzjoni.
  6. Wara Core jirċievi suċċess verifikat, a tindif separati terġa 'tiċċekkja l-finali il-kontenut u l-metadejta tas-sigurtà qabel ma jitneħħa l-fajl ta' ħidma u l-ġurnal. Il-falliment tat-tindif għadu jirrapporta ffrankar ikkonfermat b'recoveryAvailable: true.

A upload fallew, sudo fallew, kunflitt, żball metadata jew is-sostituzzjoni naqset iżomm l-oriġinali u kwalunkwe materjal fi stadji. It-tlugħ mhux komplut huwa identifikat bħala tali u ma jistax jiġi rkuprat bħala dokument editjat komplet. Mitlufa SSH komunikazzjoni, status ta' ħruġ nieqes, timeouts u riżultati ta' finalizzazzjoni mhux mistennija huma rrapportati bħala mhux magħruf, qatt kif salvati. Il-qalba timblokka ieħor ħlief fuq dokument inċert; m'hemm l-ebda rery ta' sostituzzjoni awtomatika.

Metadejta, privileġġi u limiti tas-sikurezza

L-ajjutant jippreserva u jivverifika UID, GID u l-bits kollha ta 'permess POSIX, inklużi eżekutabbli, setuid, bits settid u li jwaħħal. Hija tirriproduċi l-attributi estiżi Linux byte għall-byte, inklużi l-PCLs POSIX, il-kapaċitajiet u t-tikketti SELinux. Sjieda u l-kontenut tal-fajl huma stabbiliti qabel attributi tas-sigurtà, għaliex kitbiet / chown jistgħu ċar kapaċitajiet jew bits permess speċjali. L-attributi tad-destinazzjoni li jintirtu li ma jinstabux fuq l-oriġinal jitneħħew. Ħin ta' modifika jirrifletti l-kitba l-ġdida u ma jkunx ikkopjat mill-oriġinal.

Attribut li ma jistax jinqara jew li ma jistax jiġi rrappreżentat jasortja l-operazzjoni; il-metadejta ma titwaqqax skiet. Il-firem tal-IMA/EVM huma espliċitament miċħuda għaliex il-kontenut tal-ikkupjar/firem ta' integrità marbutin mal-inode jinvalidawhom. Simlinks fil-mira jew mogħdija dar, fajls hard link u fajls mhux regolari huma miċħuda. Ma tintuża l-ebda fallback fil-post jew aktar dgħajfa ta' SFTP.

Jiffranka writable ordinarja run bħala l-kont SSH. L-iffrankar protett jeħtieġ { sudo: true } espliċitu; password sodo hija fakultattiva għal sudo passwordless. Passwords huma vvalidati u mgħoddija biss fuq stdin kanal, qatt ġewwa l-kmand, ġurnal, fajl ta 'ħidma, logger jew żball remot. Sessjonijiet SSH għeruq jużaw l-eżekutur għeruq diretti eżistenti. L-awtorizzazzjoni li ma tkunx ġiet awtorizzata tħalli l-kopja oriġinali u dik li taħdem intatta. Kollha ħlief esegwiti bħala għerq (għerq dirett SSH jew sudo) jirrifjuta wkoll direttorji fil-mira / benefiċjarji proprjetà jew writable minn kontijiet oħra, jew li jġorru aċċess ACL, minflok fiduċja a pathname privileġġat ikkontrollata minn kont ieħor.

Il-helper fiss runs ma python3 -I -B: jinjora l-utent Python mogħdijiet, il-direttorju tax-xogħol u pakketti sit utent, u jikteb ebda bytecode. L-argumenti dwar it-toroq u dwar JSON huma kkwotati fil-qoxra fil-qalba. Plugins qatt ma jirċievu exec arbitrarji SSH jew SFTP manki. Sandbox eżistenti, CSP, permessi manifest, verifika host-key u aġġornament verifika jibqgħu jintużaw.

Plugin API u l-integrazzjoni ta' Monaco li jifdal

L-IU distribwit separatament Monaco/Maniġer tal-Fili hija nieqsa minn dan checkout. Integrazzjoni UI tagħha, sudo fil-pront, mmaniġġar maħmuġ u traduzzjonijiet ma setgħux jiġu implimentati jew ittestjati hawn. Is-sors plugin poold huwa l-Hash & Checksum plugin. L-ebda sors sostitut Maniġer Fajl ma ġiet ivvintata.

Il-metodi eżistenti jibqgħu disponibbli. Il-metodi/għażliet ta' addittivi huma esposti mill-pretagħbija magħluqa u l-ħin tar-running ikkontrollat bil-permess:

const opened = await chjPlugin.files.readText(sessionId, path);
// For a protected read, explicitly pass { sudo: true, sudoPassword }.

const result = await chjPlugin.files.saveText(sessionId, path, editor.getValue(), {
  editId: opened.editId,
  sudo: true,           // Include only after the user authorizes elevation.
  sudoPassword         // Omit for passwordless sudo; never persist this value.
});

if (result.ok && result.value.status === "saved") {
  // Mark this exact submitted editor version as saved. Later edits stay dirty.
} else {
  // Keep the Monaco model dirty. Translate result.error.code/status.
  // result.error.recoveryId/recoveryPath identify retained working material.
}

await chjPlugin.files.closeText(opened.editId);
const recovery = await chjPlugin.files.listRecovery(sessionId);
const copy = await chjPlugin.files.readRecovery(sessionId, recoveryId);
// Review copy.status and copy.text; open a fresh document before another save.
await chjPlugin.files.cleanupRecovery(sessionId, recoveryId);
// Cleanup rejects anything whose target is not currently confirmed.

Il-metodi ta' rkupru jaċċettaw argument finali fakultattiv dwar { sudo: true, sudoPassword } meta wieħed jispezzjona mira jeħtieġ elevazzjoni. Huma jżommu l-ispazju tax-xogħol tal-utent awtentikat anke meta eżegwiti permezz ta 'Sodo. Il-Ġurnali jibqgħu ħajjin app jerġgħu jibdew u SSH jerġa' jaqbad; l-irkupru qatt ma jirrepeti awtomatikament il-finalizzazzjoni. Irrevedi bafer irkuprat meta mqabbel ma' mira miftuħa mill-ġdid qabel ma tiffrankah b'mod espliċitu.

Il-gwardji files.read jaqraw, jispezzjonaw u jimmaniġġjaw ir-rilaxx. Il-gwardji files.write jiffrankaw u jirkupraw it-tindif. writeText xorta tirrifjuta fuq il-falliment għall plugins eżistenti; saveText jirritorna pakkett { ok, value/error } strutturat minħabba Electron qtar proprjetajiet tad-dwana fuq oġġetti żball miċħuda. writeText legat jista' juża l-linja bażi ta' dokument wieħed miftuħ. Dokumenti multipli ħajjin għall-istess triq jeħtieġu editId; sejħiet storiċi ambigwa jonqsu b'mod sikur minflok jagħżlu linja bażi ta 'dokument ieħor. Plugins għandhom jerħu manki mhux użati.

L-IU esterna trid turi ffrankar immedjatament, iżżomm buffers maħmuġa mal-falliment, toffri sudo biss wara l-permessi/fallimenti ta 'awtentikazzjoni, juru kunflitti mingħajr kitba żejda, u joffru rkupru wara telf ta' konnessjoni jew riżultat mhux magħruf. Għandu jittraduċi dawn l-istati biċ-Ċek, bil-Ġermaniż u bl-Ingliż. Kopja tal-istat issuġġerit:

State Czech German English
Saving Ukládání… Wird gespeichert… Saving…
Confirmed Uloženo Gespeichert Saved
Failure Uložení selhalo Speichern fehlgeschlagen Save failed
Sudo required Vyžadováno oprávnění sudo sudo-Autorisierung erforderlich Sudo authorization required
Conflict Původní soubor byl změněn Originaldatei wurde geändert Original file changed
Disconnected Spojení bylo přerušeno Verbindung unterbrochen Connection lost
Unknown Výsledek uložení není znám Speicherergebnis unbekannt Save result unknown
Recovery Obnova je dostupná Wiederherstellung verfügbar Recovery available

Id-definizzjonijiet tal-latenza u ċ-ċiklu tal-ħajja

Ping hija l-mandat irrappurtat minn eku klijent-naħa reali eku tweġiba għall-PI solvuti użati minn SSH. Il-qalba tinvoka l-pjattaforma ping eżekutibbli b'mod sinkronizzat ma 'arranġament argument fiss, mingħajr qafas jew amministratur rekwiżit startup. L-argumenti Linux, macOS (inklużi ping6) u Windows jintgħażlu separatament. ICMP imblukkata, eżekutorabbli nieqsa, timeout, produzzjoni invalida jew risposta Windows biss li hija marbuta ma' fuq bħal <1ms tipproduċi valur mhux disponibbli, mhux numru inventat.

SSH RTT hija l-monotonika performance.now() tul ta' żmien fiss true Talba exec fuq l-awtentikazzjoni eżistenti SSH il-klijent. Dan jinkludi l-issettjar tal-kanali, l-ipproċessar tas-server u t-twassil tar-rispons; mhuwiex it-tul ta' żmien tal-login tan-netwerk pur RTT jew SSH. Il-ponta għodda indikatur tradotti jispjega din id-distinzjoni.

Il-monitoraġġ jibda hekk kif it-terminal jgħaqqad. Probes taħdem fl-istess ħin u b'mod sinkroniku, ma 'ħames-tieni talba / proċess timeout. Il-kampjun li jmiss huwa skedat tnax-il sekonda wara li l-kampjun ta' qabel jitlesta, u b'hekk ma jkunx hemm koinċidenza. Diskonnettja aborts ICMP, ċar tenders, tikkanċella pendenti SSH xogħol u jikklerja valuri. Il-kontrolli tal-identità tar-rekords jipprevjenu konnessjoni minn qabel milli tippubblika wara r-rikonnessjoni. Falliment tal-ICMP qatt ma jibdel l-istat ta' konnessjoni SSH.

Latenza jivvjaġġa ġewwa l-avveniment state eżistenti / ssh:state IPC payload:

latency: { pingMs: 24.1, sshRttMs: 31.25, measuredAt: "…" }

Numru mhux disponibbli huma null. L-indikatur tat-terminal kumpatt juża millisekondi, lokalizzat test mhux disponibbli u Ċek/German/English tikketti. Hija tinħeba fuq skonnettjar. Ma kienet meħtieġa l-ebda kapaċità addizzjonali ta' eżekuzzjoni ta' former jew talba IPC.

Validazzjoni u limiti operattivi

L-utent talab li jżomm il-bidliet fis-siġra tax-xogħol eżistenti, bħalissa feature/hash-checksum-plugin; ma sar l-ebda swiċċ tal-fergħa jew tindif mhux relatat.

Fajls mibdula għal dan il-kompitu