Skip to content

Commit 8f118bb

Browse files
committed
improve gh permissions
1 parent 4f4878c commit 8f118bb

4 files changed

Lines changed: 13 additions & 1 deletion

File tree

install.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ ensure_bootstrap_deps() {
5959
apt-get -o DPkg::Lock::Timeout=900 install -y ca-certificates curl
6060
install -d -m 0755 /etc/apt/keyrings
6161
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg -o /etc/apt/keyrings/githubcli-archive-keyring.gpg
62-
chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg
62+
chown root:root /etc/apt/keyrings/githubcli-archive-keyring.gpg
63+
chmod 0644 /etc/apt/keyrings/githubcli-archive-keyring.gpg
64+
install -o root -g root -m 0644 /dev/null /etc/apt/sources.list.d/github-cli.list
6365
printf 'deb [arch=%s signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\n' "$(dpkg --print-architecture)" > /etc/apt/sources.list.d/github-cli.list
6466
apt-get -o DPkg::Lock::Timeout=900 update -y
6567
apt-get -o DPkg::Lock::Timeout=900 install -y gh unzip python3

scripts/ctl/update.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,9 +218,12 @@ async function ensureUpdateDependencies(): Promise<void> {
218218
await runText(["apt-get", "-o", "DPkg::Lock::Timeout=900", "install", "-y", "ca-certificates", "curl"], PREFIX);
219219
await runText(["install", "-d", "-m", "0755", "/etc/apt/keyrings"], PREFIX);
220220
await runText(["curl", "-fsSL", `${GITHUB_CLI_APT_REPO}/githubcli-archive-keyring.gpg`, "-o", GITHUB_CLI_APT_KEYRING], PREFIX);
221+
await runText(["chown", "root:root", GITHUB_CLI_APT_KEYRING], PREFIX);
221222
chmodSync(GITHUB_CLI_APT_KEYRING, 0o644);
222223
const arch = (await runText(["dpkg", "--print-architecture"], PREFIX)).trim();
223224
writeFileSync(GITHUB_CLI_APT_SOURCE, `deb [arch=${arch} signed-by=${GITHUB_CLI_APT_KEYRING}] ${GITHUB_CLI_APT_REPO} stable main\n`);
225+
await runText(["chown", "root:root", GITHUB_CLI_APT_SOURCE], PREFIX);
226+
chmodSync(GITHUB_CLI_APT_SOURCE, 0o644);
224227
await runText(["apt-get", "-o", "DPkg::Lock::Timeout=900", "update", "-y"], PREFIX);
225228
await runText(["apt-get", "-o", "DPkg::Lock::Timeout=900", "install", "-y", "git", "gh", "ansible", "python3", "jq", "unzip"], PREFIX);
226229
await runText(["gh", "attestation", "verify", "--help"], PREFIX);

tests/install-bootstrap.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ describe("install.sh bootstrap", () => {
4848
expect(source).toContain("DPkg::Lock::Timeout=900");
4949
expect(source).toContain("apt-get -o DPkg::Lock::Timeout=900 install -y ca-certificates curl");
5050
expect(source).toContain("https://cli.github.com/packages/githubcli-archive-keyring.gpg");
51+
expect(source).toContain("chown root:root /etc/apt/keyrings/githubcli-archive-keyring.gpg");
52+
expect(source).toContain("chmod 0644 /etc/apt/keyrings/githubcli-archive-keyring.gpg");
53+
expect(source).toContain("install -o root -g root -m 0644 /dev/null /etc/apt/sources.list.d/github-cli.list");
5154
expect(source).toContain("/etc/apt/sources.list.d/github-cli.list");
5255
expect(source).toContain("https://cli.github.com/packages stable main");
5356
expect(source).toContain("apt-get -o DPkg::Lock::Timeout=900 install -y gh unzip python3");

tests/terrarium-update.test.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ describe("terrarium update command", () => {
2020
expect(update).toContain("https://cli.github.com/packages");
2121
expect(update).toContain("githubcli-archive-keyring.gpg");
2222
expect(update).toContain('"dpkg", "--print-architecture"');
23+
expect(update).toContain('"chown", "root:root", GITHUB_CLI_APT_KEYRING');
24+
expect(update).toContain("chmodSync(GITHUB_CLI_APT_KEYRING, 0o644)");
25+
expect(update).toContain('"chown", "root:root", GITHUB_CLI_APT_SOURCE');
26+
expect(update).toContain("chmodSync(GITHUB_CLI_APT_SOURCE, 0o644)");
2327
expect(update).toContain('"git", "gh", "ansible", "python3", "jq", "unzip"');
2428
expect(update).toContain('"gh", "attestation", "verify", "--help"');
2529
expect(update).toContain("SHA256SUMS");

0 commit comments

Comments
 (0)