ssh_util: AuthorizedKeysFile '%%' escape expanded in wrong order
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
L’issue indica cloudinit/ssh_util.py, in particolare render_authorizedkeysfile_paths() intorno alle righe 239–256. Leggi questa funzione e i relativi test unitari, quindi riproduci il caso /etc/%%h/keys descritto nel report. Il lavoro è concluso quando i token percentuali con escape restano letterali e i valori di sostituzione non vengono espansi di nuovo; aggiungi test per questi casi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Bug report
ssh_util.render_authorizedkeysfile_paths() expands AuthorizedKeysFile tokens in the wrong order, so the literal-percent escape %% is not honoured.
https://github.com/canonical/cloud-init/blob/b452c2097/cloudinit/ssh_util.py#L239-L256
macros = (("%h", homedir), ("%u", username), ("%%", "%"))
for macro, field in macros:
path = path.replace(macro, field)
Because %h / %u are replaced before %%, %%h (which sshd treats as a literal %h) becomes % + home directory.
| AuthorizedKeysFile | sshd uses | cloud-init computes |
|---|---|---|
/etc/%%h/keys |
/etc/%h/keys |
/etc/%/home/bob/keys |
Sequential str.replace also means a home directory or username that contains %u/%% would be re-expanded.
Steps to reproduce the problem
from cloudinit import ssh_util
print(ssh_util.render_authorizedkeysfile_paths("/etc/%%h/keys", "/home/bob", "bob"))
# ['/etc/%/home/bob/keys'] expected ['/etc/%h/keys']
Environment details
- Cloud-init version: main @ b452c2097 (26.2)
- Operating System Distribution: any
- Cloud provider, platform or installer type: any
cloud-init logs
N/A – reproduced at unit level (above).
Possible fix
Expand tokens in a single pass, e.g. re.sub(r"%([%hu])", lambda m: {"%": "%", "h": homedir, "u": username}[m.group(1)], path). Low severity / edge case.
Contributor note: I'm happy to raise a PR with the fix and unit tests once a maintainer confirms this is a bug.
- Lingua principale
- Python
- Stelle
- 3.9k
- Fork
- 1.2k
- Merge medio
- 2g 26m
- PR unite (30g)
- 16
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di canonical/cloud-init
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
canonical/cloud-init#7231 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
canonical/cloud-init#7230 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
canonical/cloud-init#7229 ·
I maintainer di solito rispondono entro 1 giorno
-
DataSourceCloudStack: get_vr_address() does not catch NoDHCPLeaseError, so the default-gateway fallback is never reachedForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertabug new
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
canonical/cloud-init#7124 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Should be wrapped in try...except in case of JSONDecodeErrorForse già presa @p-ramcharan-dev l’ha presa 1 giorno fa. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
canonical/cloud-init#7069 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di canonical/cloud-init
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
I maintainer di solito rispondono entro 1 giorno
-
comp/desktop P3 type/feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
NousResearch/hermes-agent#154285 ·
I maintainer di solito rispondono entro 1 giorno
-
docs: qualify copied and custom kubectl debug policy notesForse già presa @nym01 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
kubescape/cel-admission-library#166 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
SACGF/variantgrid#2804 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] HTTP lifecycle dispatch treats a NO_PROXY-only environment as corporate egress and skips the resolve-and-pinned sessionForse già presa @bodapatisaikrishna l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno