linux/Documentation
Ming Lei 4093cb5a06 ublk_drv: add mechanism for supporting unprivileged ublk device
unprivileged ublk device is helpful for container use case, such
as: ublk device created in one unprivileged container can be controlled
and accessed by this container only.

Implement this feature by adding flag of UBLK_F_UNPRIVILEGED_DEV, and if
this flag isn't set, any control command has been run from privileged
user. Otherwise, any control command can be sent from any unprivileged
user, but the user has to be permitted to access the ublk char device
to be controlled.

In case of UBLK_F_UNPRIVILEGED_DEV:

1) for command UBLK_CMD_ADD_DEV, it is always allowed, and user needs
to provide owner's uid/gid in this command, so that udev can set correct
ownership for the created ublk device, since the device owner uid/gid
can be queried via command of UBLK_CMD_GET_DEV_INFO.

2) for other control commands, they can only be run successfully if the
current user is allowed to access the specified ublk char device, for
running the permission check, path of the ublk char device has to be
provided by these commands.

Also add one control of command UBLK_CMD_GET_DEV_INFO2 which always
include the char dev path in payload since userspace may not have
knowledge if this device is created in unprivileged mode.

For applying this mechanism, system administrator needs to take
the following policies:

1) chmod 0666 /dev/ublk-control

2) change ownership of ublkcN & ublkbN
- chown owner_uid:owner_gid /dev/ublkcN
- chown owner_uid:owner_gid /dev/ublkbN

Both can be done via one simple udev rule.

Userspace:

	https://github.com/ming1/ubdsrv/tree/unprivileged-ublk

'ublk add -t $TYPE --un_privileged=1' is for creating one un-privileged
ublk device if the user is un-privileged.

Link: https://lore.kernel.org/linux-block/YoOr6jBfgVm8GvWg@stefanha-x1.localdomain/
Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20230106041711.914434-7-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2023-01-29 15:18:34 -07:00
..
ABI block: save user max_sectors limit 2023-01-29 15:18:33 -07:00
PCI cxl for 6.2 2022-12-12 13:55:31 -08:00
RCU Updates for timers, timekeeping and drivers: 2022-12-12 12:52:02 -08:00
accel doc: add documentation for accel subsystem 2022-11-22 13:14:52 +02:00
accounting
admin-guide Docs/admin-guide/mm/zswap: remove zsmalloc's lack of writeback warning 2023-01-11 16:14:21 -08:00
arc
arm Documentation: arm: marvell: Add Orion codenames and archive homepage 2022-11-01 17:13:03 -06:00
arm64 arm64: errata: Workaround possible Cortex-A715 [ESR|FAR]_ELx corruption 2023-01-06 17:14:55 +00:00
block ublk_drv: add mechanism for supporting unprivileged ublk device 2023-01-29 15:18:34 -07:00
bpf docs/bpf: Reword docs for BPF_MAP_TYPE_SK_STORAGE 2022-12-14 18:35:41 +01:00
cdrom
core-api hardening updates for v6.2-rc1 2022-12-14 12:20:00 -08:00
cpu-freq cpufreq: Remove CVS version control contents from documentation 2022-12-06 12:24:51 +01:00
crypto crypto: doc - use correct function name 2022-11-04 17:35:44 +08:00
dev-tools linux-kselftest-kunit-next-6.2-rc1 2022-12-12 16:42:57 -08:00
devicetree Fix up more non-executable files marked executable 2023-01-28 11:17:57 -08:00
doc-guide Merge branch 'alabaster-rb' into docs-mw 2022-10-18 16:29:50 -06:00
driver-api dmaengine updates for v6.2 2022-12-19 08:54:17 -06:00
fault-injection debugfs: fix error when writing negative value to atomic_t debugfs file 2022-11-30 16:13:16 -08:00
fb docs/fb: Document current named modes 2022-11-15 10:07:40 +01:00
features RISC-V Patches for the 6.2 Merge Window, Part 1 2022-12-14 15:23:49 -08:00
filesystems erofs: add documentation for 'domain_id' mount option 2023-01-16 22:39:29 +08:00
firmware-guide
firmware_class
fpga
gpu drm/amdgpu: add GART, GPUVM, and GTT to glossary 2022-12-02 10:05:33 -05:00
hid
hwmon hwmon: (aquacomputer_d5next) Add support for Quadro flow sensor pulses 2022-12-04 16:45:03 -08:00
i2c
ia64 docs: ia64: Fix a typo ("identify mappings") 2022-11-09 14:03:51 -07:00
iio
images
infiniband
input
isdn
kbuild docs: kbuild: remove mention to dropped $(objtree) feature 2023-01-09 07:34:37 +09:00
kernel-hacking Updates for timers, timekeeping and drivers: 2022-12-12 12:52:02 -08:00
leds
litmus-tests
livepatch
locking
loongarch This was a not-too-busy cycle for documentation; highlights include: 2022-12-12 17:18:50 -08:00
m68k
maintainer docs, nvme: add a feature and quirk policy document 2022-12-28 05:37:12 -10:00
mhi
mips
misc-devices
mm MM patches for 6.2-rc1. 2022-12-13 19:29:45 -08:00
netlabel
networking docs: networking: Fix bridge documentation URL 2023-01-25 22:44:27 -08:00
nios2
nvdimm
nvme docs, nvme: add a feature and quirk policy document 2022-12-28 05:37:12 -10:00
openrisc
parisc
pcmcia
peci
power
powerpc docs: powerpc: add POWER9 and POWER10 to CPU families 2022-11-24 23:31:47 +11:00
process docs: netdev: convert to a non-FAQ document 2022-12-28 10:06:06 +00:00
riscv RISC-V Patches for the 6.2 Merge Window, Part 1 2022-12-14 15:23:49 -08:00
rust
s390
scheduler
scsi scsi: core: Change the return type of .eh_timed_out() 2022-10-22 03:25:59 +00:00
security KEYS: encrypted: fix key instantiation with user-provided data 2022-10-19 13:01:23 -04:00
sh
sound
sparc
sphinx docs: Fix the docs build with Sphinx 6.0 2023-01-06 13:04:00 -07:00
sphinx-static docs: Don't wire font sizes for HTML output 2022-11-01 15:59:40 -06:00
spi
staging
target
timers Documentation: Replace del_timer/del_timer_sync() 2022-11-24 15:09:11 +01:00
tools Documentation/rv: Add verification/rv man pages 2022-12-09 18:06:24 -05:00
trace Trace probes updates for 6.2: 2022-12-21 18:57:24 -08:00
translations This was a not-too-busy cycle for documentation; highlights include: 2022-12-12 17:18:50 -08:00
usb Documentation: USB: correct possessive "its" usage 2022-11-21 14:33:23 -07:00
userspace-api iommufd for 6.2 2022-12-14 09:15:43 -08:00
virt KVM: x86/xen: Avoid deadlock by adding kvm->arch.xen.xen_lock leaf node lock 2023-01-11 17:45:58 -05:00
w1
watchdog
x86 x86/sev: Add SEV-SNP guest feature negotiation support 2023-01-19 17:29:58 +01:00
xtensa
.gitignore
Changes
CodingStyle
Kconfig
Makefile doc: add texinfodocs and infodocs targets 2022-11-21 14:13:57 -07:00
SubmittingPatches
arch.rst
atomic_bitops.txt
atomic_t.txt
conf.py docs/conf.py: Use about.html only in sidebar of alabaster theme 2023-01-11 15:06:50 -07:00
docutils.conf
dontdiff
index.rst
memory-barriers.txt docs/memory-barriers.txt: Add a missed closing parenthesis 2022-10-18 15:14:52 -07:00
subsystem-apis.rst doc: add documentation for accel subsystem 2022-11-22 13:14:52 +02:00