Skip to content

Commit 6e96ebd

Browse files
committed
support USB in jails
1 parent 335ad32 commit 6e96ebd

File tree

3 files changed

+22
-1
lines changed

3 files changed

+22
-1
lines changed

libioc/Config/Jail/BaseConfig.py

+13
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,19 @@ def _get_host_domainname(self) -> str:
535535
except KeyError:
536536
return "local"
537537

538+
def _get_usb_device(self) -> typing.List[str]:
539+
devices = self.data["usb_device"].split() # type: typing.List[str]
540+
return devices
541+
542+
def _set_usb_device(
543+
self,
544+
value: typing.Union[typing.List[str], str]
545+
) -> None:
546+
if isinstance(value, list):
547+
self.data["usb_device"] = " ".join(value)
548+
else:
549+
self.data["usb_device"] = value
550+
538551
def get_string(self, key: str) -> str:
539552
"""Get the stringified value of a configuration property."""
540553
return self.stringify(self.__getitem__(key))

libioc/Config/Jail/Defaults.py

+2
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@
7070
"allow_mount_fdescfs": 0,
7171
"allow_mount_zfs": 0,
7272
"allow_mount_tmpfs": 0,
73+
"allow_usb": 0,
74+
"usb_device": ["ugen*"],
7375
"allow_quotas": 0,
7476
"allow_socket_af": 0,
7577
"rlimits": None,

libioc/Jail.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -1600,9 +1600,15 @@ def devfs_ruleset(self) -> libioc.DevfsRules.DevfsRuleset:
16001600
if self._dhcp_enabled is True:
16011601
devfs_ruleset.append("add path 'bpf*' unhide")
16021602

1603-
if self._allow_mount_zfs == "1":
1603+
if self._allow_mount_zfs is True:
16041604
devfs_ruleset.append("add path zfs unhide")
16051605

1606+
if self.config["allow_usb"] is True:
1607+
devfs_ruleset.append("add path 'usb/*' unhide")
1608+
devfs_ruleset.append("add path 'usbctl' unhide")
1609+
for usb_device in self.config["usb_device"]:
1610+
devfs_ruleset.append(f"add path '{usb_device}' unhide")
1611+
16061612
# create if the final rule combination does not exist as ruleset
16071613
if devfs_ruleset not in self.host.devfs:
16081614
self.logger.verbose("New devfs ruleset combination")

0 commit comments

Comments
 (0)