Skip to content

Commit 6783f69

Browse files
authored
Merge pull request #1706 from gwenya/unprivileged-ping
Allow ICMP and low ports for unprivileged users in OCI containers
2 parents d7242ac + d0a5d5d commit 6783f69

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

internal/server/instance/drivers/driver_lxc.go

+28
Original file line numberDiff line numberDiff line change
@@ -2306,6 +2306,34 @@ func (d *lxc) startCommon() (string, []func() error, error) {
23062306
volatileSet["volatile.container.oci"] = "true"
23072307
}
23082308

2309+
// Allow unprivileged users to use ping.
2310+
maxGid := int64(4294967295)
2311+
2312+
if !d.IsPrivileged() {
2313+
maxGid = 0
2314+
idMap, err := d.CurrentIdmap()
2315+
if err != nil {
2316+
return "", nil, err
2317+
}
2318+
2319+
for _, entry := range idMap.Entries {
2320+
if entry.NSID+entry.MapRange-1 > maxGid {
2321+
maxGid = entry.NSID + entry.MapRange - 1
2322+
}
2323+
}
2324+
}
2325+
2326+
err = lxcSetConfigItem(cc, "lxc.sysctl.net.ipv4.ping_group_range", fmt.Sprintf("0 %d", maxGid))
2327+
if err != nil {
2328+
return "", nil, err
2329+
}
2330+
2331+
// Allow unprivileged users to use low ports.
2332+
err = lxcSetConfigItem(cc, "lxc.sysctl.net.ipv4.ip_unprivileged_port_start", "0")
2333+
if err != nil {
2334+
return "", nil, err
2335+
}
2336+
23092337
// Configure the entry point.
23102338
if len(config.Process.Args) > 0 && slices.Contains([]string{"/init", "/sbin/init", "/s6-init"}, config.Process.Args[0]) {
23112339
// For regular init systems, call them directly as PID1.

0 commit comments

Comments
 (0)