14 lines
954 B
Python
14 lines
954 B
Python
import hashlib,json,os,re,stat
|
|
from pathlib import Path
|
|
p=Path('/etc/systemd/system/k3s.service')
|
|
expected='b5398c385430ce225faadc1f3724597fe4b05dd999a04b8abbca64d4b0d68c0e'
|
|
s=p.lstat();raw=p.read_bytes()
|
|
assert stat.S_ISREG(s.st_mode) and not p.is_symlink() and (s.st_uid,s.st_gid,s.st_dev,s.st_ino)==(0,0,2049,7875)
|
|
assert hashlib.sha256(raw).hexdigest()==expected
|
|
# Exact one-argument change, with all other unit bytes retained privately.
|
|
new,count=re.subn(rb'(--write-kubeconfig-mode(?:=|[ \t]+)[\x22\x27]?)644\b',rb'\g<1>600',raw)
|
|
assert count==1
|
|
print(json.dumps({'unit_preimage_sha256':expected,'unit_candidate_sha256':hashlib.sha256(new).hexdigest(),
|
|
'changed_argument_count':count,'same_length':len(new)==len(raw),'bytes_changed':sum(a!=b for a,b in zip(raw,new)),
|
|
'env_file_readable_without_sudo':os.access('/etc/systemd/system/k3s.service.env',os.R_OK),
|
|
'candidate_written':False,'raw_unit_emitted':False,'credential_content_read':False}))
|