Man page - capabilities(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr pt_BR pl ja ru ro deManual
CAPABILITIES
名 前説 明
ケ ー パ ビ リ テ ィ の リ ス ト
過 去 と 現 在 の 実 装
ス レ ッ ド ケ ー パ ビ リ テ ィ セ ッ ト
フ ァ イ ル ケ ー パ ビ リ テ ィ
execve() 中 の ケ ー パ ビ リ テ ィ の 変 換
ケ ー パ ビ リ テ ィ と 、 ル ー ト に よ る プ ロ グ ラ ム の 実 行
ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト
ユ ー ザ ー ID 変 更 の ケ ー パ ビ リ テ ィ へ の 影 響
プ ロ グ ラ ム で ケ ー パ ビ リ テ ィ セ ッ ト を 調 整 す る
securebits フ ラ グ : ケ ー パ ビ リ テ ィ だ け の 環 境 を 構 築 す る
ユ ー ザ ー 名 前 空 間 と の 相 互 作 用
準 拠
注 意
関 連 項 目
こ の 文 書 に つ い て
名 前
capabilities - Linux の ケ ー パ ビ リ テ ィ (capability) の 概 要
説 明
権 限 の チ ェ ッ ク を 行 う 観 点 か ら 見 る と 、 伝 統 的 な UNIX の 実 装 で は プ ロ セ ス は 二 つ の カ テ ゴ リ ー に 分 類 で き る : 特 権 プ ロ セ ス (実 効 ユ ー ザ ー ID が 0 の プ ロ セ ス 。 ユ ー ザ ー ID 0 は ス ー パ ー ユ ー ザ ー や root と 呼 ば れ る ) と 非 特 権 プ ロ セ ス (実 効 ユ ー ザ ー ID が 0 以 外 の プ ロ セ ス ) で あ る 。 非 特 権 プ ロ セ ス で は 、 プ ロ セ ス の 資 格 情 報 (通 常 は 、 実 効 UID 、 実 効 GID と 追 加 の グ ル ー プ リ ス ト ) に 基 づ く 権 限 チ ェ ッ ク が 行 わ れ る の に 対 し 、 特 権 プ ロ セ ス で は 全 て の カ ー ネ ル の 権 限 チ ェ ッ ク が バ イ パ ス さ れ る 。
バ ー ジ ョ ン 2.2 以 降 の Linux で は 、 こ れ ま で ス ー パ ー ユ ー ザ ー に 結 び 付 け ら れ て き た 権 限 を 、 い く つ か の グ ル ー プ に 分 割 し て い る 。 こ れ ら の グ ル ー プ は ケ ー パ ビ リ テ ィ (capability) と 呼 ば れ 、 グ ル ー プ 毎 に 独 立 に 有 効 、 無 効 を 設 定 で き る 。 ケ ー パ ビ リ テ ィ は ス レ ッ ド 単 位 の 属 性 で あ る 。
ケ ー パ ビ リ テ ィ の リ ス ト
以
下 の リ ス ト は
、 Linux で 実 装 さ れ
て い る ケ ー パ
ビ リ テ ィ と 各
ケ ー パ ビ リ テ
ィ が 許 可 す る
操 作 と 動 作 を
ま と め た も の
で あ る 。
CAP_AUDIT_CONTROL
(Linux 2.6.11 以 降 )
カ ー ネ ル 監 査 (audit) の 有 効 無 効 の 切 り 替 え 、 監 査 の フ ィ ル タ ル ー ル の 変 更 、 監 査 の 状 況 や フ ィ ル タ ル ー ル の 取 得 が で き る 。
CAP_AUDIT_READ (Linux 3.16 以 降 )
マ ル チ キ ャ ス ト netlink ソ ケ ッ ト 経 由 で 監 査 ロ グ の 読 み 出 し が で き る 。
CAP_AUDIT_WRITE (Linux 2.6.11 以 降 )
カ ー ネ ル 監 査 の ロ グ に レ コ ー ド を 書 き 込 む 。
CAP_BLOCK_SUSPEND (Linux 3.5 以 降 )
シ ス テ ム の サ ス ペ ン ド を ブ ロ ッ ク で き る 機 能 を 使 用 す る ( epoll (7) EPOLLWAKEUP , /proc/sys/wake_lock )。
CAP_CHOWN
フ ァ イ ル の UID と GID を 任 意 に 変 更 す る ( chown (2) 参 照 )。
CAP_DAC_OVERRIDE
フ ァ イ ル の 読 み 出 し 、 書 き 込 み 、 実 行 の 権 限 チ ェ ッ ク を バ イ パ ス す る (DAC は "discretionary access control (任 意 の ア ク セ ス 制 御 )" の 略 で あ る )。
CAP_DAC_READ_SEARCH
|
* |
フ ァ イ ル の 読 み 出 し 権 限 の チ ェ ッ ク と デ ィ レ ク ト リ の 読 み 出 し と 実 行 の 権 限 チ ェ ッ ク を バ イ パ ス す る 。 |
|||
|
* |
open_by_handle_at (2) を 起 動 す る 。 |
CAP_FOWNER
|
* |
通 常 、 プ ロ セ ス の フ ァ イ ル シ ス テ ム UID が フ ァ イ ル の UID に 一 致 す る こ と が 要 求 さ れ る 操 作 (例 え ば chmod (2), utime (2)) に お け る 権 限 チ ェ ッ ク を バ イ パ ス す る 。 但 し 、 CAP_DAC_OVERRIDE か CAP_DAC_READ_SEARCH に よ り チ ェ ッ ク が 行 わ れ る 操 作 は 除 く 。 |
||
|
* |
任 意 の フ ァ イ ル に 対 し て 拡 張 フ ァ イ ル 属 性 を 設 定 す る ( chattr (1) 参 照 )。 |
||
|
* |
任 意 の フ ァ イ ル に 対 し て ア ク セ ス 制 御 リ ス ト (ACL) を 設 定 す る 。 |
||
|
* |
フ ァ イ ル の 削 除 の 際 に デ ィ レ ク ト リ の ス テ ィ ッ キ ー ビ ッ ト を 無 視 す る 。 |
||
|
* |
open (2) や fcntl (2) で 任 意 の フ ァ イ ル に 対 し て O_NOATIME を 指 定 す る 。 |
CAP_FSETID
フ ァ イ ル が 変 更 さ れ た と き に set-user-ID と set-group-ID の 許 可 ビ ッ ト を ク リ ア し な い 。 呼 び 出 し 元 プ ロ セ ス の フ ァ イ ル シ ス テ ム GID と 追 加 の GID の い ず れ と も GID が 一 致 し な い フ ァ イ ル に 対 し て set-group-ID ビ ッ ト を 設 定 す る 。
CAP_IPC_LOCK
メ モ リ ー の ロ ッ ク ( mlock (2), mlockall (2), mmap (2), shmctl (2)) を 行 う 。
CAP_IPC_OWNER
System V IPC オ ブ ジ ェ ク ト に 対 す る 操 作 に 関 し て 権 限 チ ェ ッ ク を バ イ パ ス す る 。
CAP_KILL
シ グ ナ ル を 送 信 す る 際 に 権 限 チ ェ ッ ク を バ イ パ ス す る ( kill (2) 参 照 )。 こ れ に は ioctl (2) の KDSIGACCEPT 操 作 の 使 用 も 含 ま れ る 。
CAP_LEASE (Linux 2.4 以 降 )
任 意 の フ ァ イ ル に 対 し て フ ァ イ ル リ ー ス を 設 定 す る ( fcntl (2) 参 照 )。
CAP_LINUX_IMMUTABLE
inode フ ラ グ FS_APPEND_FL と FS_IMMUTABLE_FL を 設 定 す る ( chattr (1) 参 照 )。
CAP_MAC_ADMIN (Linux 2.6.25 以 降 )
強 制 ア ク セ ス 制 御 (MAC) を 上 書 き す る 。 Smack Linux Security Module (LSM) 用 に 実 装 さ れ て い る 。
CAP_MAC_OVERRIDE (Linux 2.6.25 以 降 )
MAC の 設 定 や 状 態 を 変 更 す る 。 Smack LSM 用 に 実 装 さ れ て い る 。
CAP_MKNOD (Linux 2.4 以 降 )
(Linux 2.4 以 降 ) mknod (2) を 使 用 し て ス ペ シ ャ ル フ ァ イ ル を 作 成 す る 。
CAP_NET_ADMIN
各 種 の ネ ッ ト ワ ー ク 関 係 の 操 作 を 実 行 す る :
|
* |
イ ン タ ー フ ェ ー ス の 設 定 |
||
|
* |
IP の フ ァ イ ア ウ ォ ー ル 、 マ ス カ レ ー ド 、 ア カ ウ ン テ ィ ン グ |
||
|
* |
ル ー テ ィ ン グ テ ー ブ ル の 変 更 |
||
|
* |
透 過 的 プ ロ キ シ で の 任 意 の ア ド レ ス の 割 り 当 て (bind) |
||
|
* |
サ ー ビ ス 種 別 (type-of-service; TOS) の セ ッ ト |
||
|
* |
ド ラ イ バ の 統 計 情 報 の ク リ ア |
||
|
* |
promiscuous モ ー ド を セ ッ ト す る |
||
|
* |
マ ル チ キ ャ ス ト を 有 効 に す る |
||
|
* |
setsockopt (2) を 使 っ て 以 下 の ソ ケ ッ ト オ プ シ ョ ン を 設 定 す る : SO_DEBUG , SO_MARK , SO_PRIORITY (優 先 度 を 0 か ら 6 以 外 に 設 定 す る 場 合 ), SO_RCVBUFFORCE , and SO_SNDBUFFORCE |
CAP_NET_BIND_SERVICE
イ ン タ ー ネ ッ ト ド メ イ ン の 特 権 ポ ー ト (ポ ー ト 番 号 が 1024 番 未 満 ) を バ イ ン ド で き る 。
CAP_NET_BROADCAST
(未 使 用 ) ソ ケ ッ ト の ブ ロ ー ド キ ャ ス ト と 、 マ ル チ キ ャ ス ト の 待 ち 受 け を 行 う 。
CAP_NET_RAW
|
* |
RAW ソ ケ ッ ト と PACKET ソ ケ ッ ト を 使 用 す る 。 |
|||
|
* |
透 過 的 プ ロ キ シ で の 任 意 の ア ド レ ス の 割 り 当 て (bind) |
CAP_SETGID
プ ロ セ ス の GID と 追 加 の GID リ ス ト に 対 す る 任 意 の 操 作 を 行 う 。 UNIX ド メ イ ン ソ ケ ッ ト 経 由 で ソ ケ ッ ト の 資 格 情 報 (credential) を 渡 す 際 に 偽 の GID を 渡 す こ と が で き る 。 ユ ー ザ ー 名 前 空 間 に グ ル ー プ ID マ ッ ピ ン グ を 書 き 込 む こ と が で き る ( user_namespaces (7) 参 照 )。
CAP_SETFCAP (Linux 2.6.24 以 降 )
フ ァ イ ル ケ ー パ ビ リ テ ィ を 設 定 す る 。
CAP_SETPCAP
フ ァ イ ル ケ ー パ ビ リ テ ィ が サ ポ ー ト さ れ て い な い 場 合 : 呼 び 出 し 元 が 許 可 さ れ て い る ケ ー パ ビ リ テ ィ セ ッ ト に 含 ま れ る 任 意 の ケ ー パ ビ リ テ ィ を 、 他 の プ ロ セ ス に 付 与 し た り 、 削 除 し た り で き る 。 (カ ー ネ ル が フ ァ イ ル ケ ー パ ビ リ テ ィ を サ ポ ー ト し て い る 場 合 、 CAP_SETPCAP は こ の 役 割 を 持 た な い 。 な ぜ な ら 、 フ ァ イ ル ケ ー パ ビ リ テ ィ を サ ポ ー ト し て い る カ ー ネ ル で は CAP_SETPCAP は 全 く 別 の 意 味 を 持 つ か ら で あ る 。 )
フ ァ イ ル ケ ー パ ビ リ テ ィ が サ ポ ー ト さ れ て い る 場 合 : 呼 び 出 し 元 ス レ ッ ド の バ ウ ン デ ィ ン グ セ ッ ト の 任 意 の ケ ー パ ビ リ テ ィ を 自 身 の 継 承 可 能 ケ ー パ ビ リ テ ィ セ ッ ト に 追 加 で き る 。 ( prctl (2) PR_CAPBSET_DROP を 使 っ て ) バ ウ ン デ ィ ン グ セ ッ ト か ら ケ ー パ ビ リ テ ィ を 削 除 で き る 。 securebits フ ラ グ を 変 更 で き る 。
CAP_SETUID
プ ロ セ ス の UID に 対 す る 任 意 の 操 作 ( setuid (2), setreuid (2), setresuid (2), setfsuid (2)) を 行 う 。 UNIX ド メ イ ン ソ ケ ッ ト 経 由 で ソ ケ ッ ト の 資 格 情 報 (credential) を 渡 す 際 に 偽 の UID を 渡 す こ と が で き る 。 ユ ー ザ ー 名 前 空 間 に ユ ー ザ ー ID マ ッ ピ ン グ を 書 き 込 む こ と が で き る ( user_namespaces (7) 参 照 )。
CAP_SYS_ADMIN
|
* |
以 下 の シ ス テ ム 管 理 用 の 操 作 を 実 行 す る : quotactl (2), mount (2), umount (2), swapon (2), swapoff (2), sethostname (2), setdomainname (2). |
||
|
* |
特 権 が 必 要 な syslog (2) の 操 作 を 実 行 す る (Linux 2.6.37 以 降 で は 、 こ の よ う な 操 作 を 許 可 す る に は CAP_SYSLOG を 使 う べ き で あ る ) |
||
|
* |
VM86_REQUEST_IRQ vm86 (2) コ マ ン ド を 実 行 す る 。 |
||
|
* |
任 意 の System V IPC オ ブ ジ ェ ク ト に 対 す る IPC_SET と IPC_RMID 操 作 を 実 行 す る 。 |
||
|
* |
RLIMIT_NPROC リ ソ ー ス 制 限 を 上 書 き す る 。 |
||
|
* |
拡 張 属 性 trusted と security に 対 す る 操 作 を 実 行 す る ( attr (5) 参 照 )。 |
||
|
* |
lookup_dcookie (2) を 呼 び 出 す 。 |
||
|
* |
ioprio_set (2) を 使 っ て I/O ス ケ ジ ュ ー リ ン グ ク ラ ス IOPRIO_CLASS_RT , IOPRIO_CLASS_IDLE を 割 り 当 て る ( IOPRIO_CLASS_IDLE は Linux 2.6.25 よ り 前 の バ ー ジ ョ ン の み )。 |
||
|
* |
UNIX ド メ イ ン ソ ケ ッ ト で ソ ケ ッ ト の 資 格 情 報 (credential) を 渡 す 際 に 偽 の UID を 渡 す 。 |
||
|
* |
フ ァ イ ル を オ ー プ ン す る シ ス テ ム コ ー ル (例 え ば accept (2), execve (2), open (2), pipe (2)) で シ ス テ ム 全 体 で オ ー プ ン で き る フ ァ イ ル 数 の 上 限 /proc/sys/fs/file-max を 超 過 す る 。 |
||
|
* |
clone (2) と unshare (2) で 新 し い 名 前 空 間 を 作 成 す る CLONE_* フ ラ グ を 利 用 す る (た だ し 、 Linux 3.8 以 降 で は 、 ユ ー ザ ー 名 前 空 間 の 作 成 に ど の ケ ー パ ビ リ テ ィ も 必 要 と し な い )。 |
||
|
* |
perf_event_open (2) を 呼 び 出 す 。 |
||
|
* |
特 権 が 必 要 な perf イ ベ ン ト の 情 報 に ア ク セ ス す る 。 |
||
|
* |
setns (2) を 呼 び 出 す ( target 名 前 空 間 で の CAP_SYS_ADMIN が 必 要 )。 |
||
|
* |
fanotify_init (2) を 呼 び 出 す 。 |
||
|
* |
keyctl (2) の KEYCTL_CHOWN と KEYCTL_SETPERM 操 作 を 実 行 す る 。 |
||
|
* |
madvise (2) の MADV_HWPOISON 操 作 を 実 行 す る 。 |
||
|
* |
TIOCSTI ioctl (2) を 使 っ て 、 呼 び 出 し 元 の 制 御 端 末 以 外 の 端 末 の 入 力 キ ュ ー に 文 字 を 挿 入 す る 。 |
||
|
* |
廃 止 予 定 の nfsservctl (2) シ ス テ ム コ ー ル を 使 用 す る 。 |
||
|
* |
廃 止 予 定 の bdflush (2) シ ス テ ム コ ー ル を 使 用 す る 。 |
||
|
* |
特 権 が 必 要 な ブ ロ ッ ク デ バ イ ス に 対 す る 各 種 の ioctl (2) 操 作 を 実 行 す る 。 |
||
|
* |
特 権 が 必 要 な フ ァ イ ル シ ス テ ム に 対 す る 各 種 の ioctl (2) 操 作 を 実 行 す る 。 |
||
|
* |
多 く の デ バ イ ス ド ラ イ バ に 対 す る 管 理 命 令 を 実 行 す る 。 |
CAP_SYS_BOOT
reboot (2) と kexec_load (2) を 呼 び 出 す 。
CAP_SYS_CHROOT
chroot (2). を 呼 び 出 す 。
CAP_SYS_MODULE
カ ー ネ ル モ ジ ュ ー ル の ロ ー ド 、 ア ン ロ ー ド を 行 う ( init_module (2) と delete_module (2) を 参 照 の こ と )。 バ ー ジ ョ ン 2.6.25 よ り 前 の カ ー ネ ル で 、 シ ス テ ム 全 体 の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト (capability bounding set) か ら ケ ー パ ビ リ テ ィ を 外 す 。
CAP_SYS_NICE
|
* |
プ ロ セ ス の nice 値 の 引 き 上 げ ( nice (2), setpriority (2)) や 、 任 意 の プ ロ セ ス の nice 値 の 変 更 を 行 う 。 |
||
|
* |
呼 び 出 し 元 プ ロ セ ス に 対 す る リ ア ル タ イ ム ス ケ ジ ュ ー リ ン グ ポ リ シ ー と 、 任 意 の プ ロ セ ス に 対 す る ス ケ ジ ュ ー リ ン グ ポ リ シ ー と 優 先 度 を 設 定 す る ( sched_setscheduler (2), sched_setparam (2), shed_setattr (2))。 |
||
|
* |
任 意 の プ ロ セ ス に 対 す る CPU affinity を 設 定 で き る ( sched_setaffinity (2))。 |
||
|
* |
任 意 の プ ロ セ ス に 対 し て I/O ス ケ ジ ュ ー リ ン グ ク ラ ス と 優 先 度 を 設 定 で き る ( ioprio_set (2))。 |
||
|
* |
migrate_pages (2) を 任 意 の プ ロ セ ス に 適 用 し 、 プ ロ セ ス を 任 意 の ノ ー ド に 移 動 す る 。 |
||
|
* |
move_pages (2) を 任 意 の プ ロ セ ス に 対 し て 行 う 。 |
||
|
* |
mbind (2) と move_pages (2) で MPOL_MF_MOVE_ALL フ ラ グ を 使 用 す る 。 |
CAP_SYS_PACCT
acct (2) を 呼 び 出 す 。
CAP_SYS_PTRACE
|
* |
ptrace (2) を 使 っ て 任 意 の プ ロ セ ス を ト レ ー ス す る 。 |
||
|
* |
get_robust_list (2) を 任 意 の プ ロ セ ス に 対 し て 行 う 。 |
||
|
* |
process_vm_readv (2) と process_vm_writev (2) を 使 っ て 任 意 の プ ロ セ ス の メ モ リ ー と の 間 で デ ー タ の 送 受 信 を 行 う 。 |
||
|
* |
kcmp (2) を 使 っ て プ ロ セ ス 内 部 を 調 査 す る 。 |
CAP_SYS_RAWIO
|
* |
I/O ポ ー ト 操 作 を 実 行 す る ( iopl (2)、 ioperm (2))。 |
||
|
* |
/proc/kcore に ア ク セ ス す る 。 |
||
|
* |
FIBMAP ioctl (2) 操 作 を 使 用 す る 。 |
||
|
* |
x86 モ デ ル に 固 有 の レ ジ ス タ ー (MSR レ ジ ス タ ー 群 、 msr (4) 参 照 ) に ア ク セ ス す る た め の デ バ イ ス を オ ー プ ン す る 。 |
||
|
* |
/proc/sys/vm/mmap_min_addr を 更 新 す る 。 |
||
|
* |
/proc/sys/vm/mmap_min_addr で 指 定 さ れ た 値 よ り も 小 さ な ア ド レ ス に メ モ リ ー マ ッ ピ ン グ を 作 成 す る 。 |
||
|
* |
/proc/bus/pci に あ る フ ァ イ ル を マ ッ プ す る 。 |
||
|
* |
/dev/mem や /dev/kmem を オ ー プ ン す る 。 |
||
|
* |
各 種 の SCSI デ バ イ ス コ マ ン ド を 実 行 す る 。 |
||
|
* |
hpsa (4) デ バ イ ス や cciss (4) デ バ イ ス の 特 定 の 操 作 を 実 行 す る 。 |
||
|
* |
他 の デ バ イ ス に 対 し て 各 種 の デ バ イ ス 固 有 命 令 を 実 行 す る 。 |
CAP_SYS_RESOURCE
|
* |
ext2 フ ァ イ ル シ ス テ ム 上 の 予 約 さ れ て い る 領 域 を 使 用 す る 。 |
||
|
* |
ext3 の ジ ャ ー ナ ル 機 能 を 制 御 す る ioctl (2) を 使 用 す る 。 |
||
|
* |
デ ィ ス ク quota の 上 限 を 上 書 き す る 。 |
||
|
* |
リ ソ ー ス 上 限 を 増 や す ( setrlimit (2))。 |
||
|
* |
RLIMIT_NPROC リ ソ ー ス 制 限 を 上 書 き す る 。 |
||
|
* |
コ ン ソ ー ル 割 り 当 て に お い て コ ン ソ ー ル の 最 大 数 を 上 書 き す る 。 |
||
|
* |
キ ー マ ッ プ の 最 大 数 を 上 書 き す る 。 |
||
|
* |
リ ア ル タ イ ム ク ロ ッ ク か ら 秒 間 64 回 を 越 え る 回 数 の 割 り 当 て が 許 可 す る 。 |
||
|
* |
メ ッ セ ー ジ キ ュ ー に 関 す る 上 限 msg_qbytes を /proc/sys/kernel/msgmnb に 指 定 さ れ て い る 上 限 よ り も 大 き く 設 定 す る ( msgop (2) と msgctl (2) 参 照 )。 |
||
|
* |
F_SETPIPE_SZ fcntl (2) を 使 っ て パ イ プ の 容 量 を 設 定 す る 際 に 上 限 /proc/sys/fs/pipe-size-max を 上 書 き す る 。 |
||
|
* |
/proc/sys/fs/pipe-max-size に 指 定 さ れ て い る 上 限 を 超 え て パ イ プ の 容 量 を 増 や す の に F_SETPIPE_SZ を 使 用 す る 。 |
||
|
* |
POSIX メ ッ セ ー ジ キ ュ ー を 作 成 す る 際 に 、 上 限 /proc/sys/fs/mqueue/queues_max を 上 書 き す る ( mq_overview (7) 参 照 )。 |
||
|
* |
prctl (2) PR_SET_MM 操 作 を 使 用 す る 。 |
||
|
* |
CAP_SYS_RESOURCE を 持 っ た プ ロ セ ス に よ っ て 最 後 に 設 定 さ れ た 値 よ り も 小 さ な 値 を /proc/PID/oom_score_adj に 設 定 す る 。 |
CAP_SYS_TIME
シ ス テ ム ク ロ ッ ク を 変 更 す る ( settimeofday (2), stime (2), adjtimex (2))。 リ ア ル タ イ ム (ハ ー ド ウ ェ ア ) ク ロ ッ ク を 変 更 す る 。
CAP_SYS_TTY_CONFIG
vhangup (2) を 使 用 す る 。 特 権 が 必 要 な 仮 想 端 末 に 関 す る 各 種 の ioctl (2) 操 作 を 利 用 で き る 。
CAP_SYSLOG (Linux 2.6.37 以 降 )
|
* |
特 権 が 必 要 な syslog (2) 操 作 を 実 行 で き る 。 ど の 操 作 が 特 権 が 必 要 か に つ い て の 情 報 は syslog (2) を 参 照 。 |
||
|
* |
/proc/sys/kernel/kptr_restrict の 値 が 1 の 場 合 、 /proc や 他 の イ ン タ ー フ ェ ー ス 経 由 で 公 開 さ れ て い る カ ー ネ ル ア ド レ ス を 参 照 す る ( proc (5) の kptr_restrict の 議 論 を 参 照 )。 |
CAP_WAKE_ALARM (Linux 3.0 以 降 )
シ ス テ ム を 起 こ す ト リ ガ ー を 有 効 に す る (タ イ マ ー CLOCK_REALTIME_ALARM や CLOCK_BOOTTIME_ALARM を 設 定 す る )。
過 去 と 現 在 の 実 装
完 全 な 形 の ケ ー パ ビ リ テ ィ を 実 装 す る に は 、 以 下 の 要 件 を 満 た す 必 要 が あ る :
|
1. |
全 て の 特 権 操 作 に つ い て 、 カ ー ネ ル は そ の ス レ ッ ド の 実 効 ケ ー パ ビ リ テ ィ セ ッ ト に 必 要 な ケ ー パ ビ リ テ ィ が あ る か を 確 認 す る 。 |
||
|
2. |
カ ー ネ ル で 、 あ る ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト を 変 更 し た り 、 取 得 し た り で き る シ ス テ ム コ ー ル が 提 供 さ れ る 。 |
||
|
3. |
フ ァ イ ル シ ス テ ム が 、 実 行 可 能 フ ァ イ ル に ケ ー パ ビ リ テ ィ を 付 与 で き 、 フ ァ イ ル 実 行 時 に そ の ケ ー パ ビ リ テ ィ を プ ロ セ ス が 取 得 で き る よ う な 機 能 を サ ポ ー ト す る 。 |
カ ー ネ ル 2.6.24 よ り 前 で は 、 最 初 の 2つ の 要 件 の み が 満 た さ れ て い る 。 カ ー ネ ル 2.6.24 以 降 で は 、 3つ の 要 件 す べ て が 満 た さ れ て い る 。
ス レ ッ ド ケ ー パ ビ リ テ ィ セ ッ ト
各
ス レ ッ ド は 以
下 の 3種 類 の ケ
ー パ ビ リ テ ィ
セ ッ ト を 持 つ
。 各 々 の ケ ー
パ ビ リ テ ィ セ
ッ ト は 上 記 の
ケ ー パ ビ リ テ
ィ の 組 み 合 わ
せ で あ る (全 て
の ケ ー パ ビ リ
テ ィ が 無 効 で
も よ い )。
許 可 (permitted)
:
そ の ス レ ッ ド が 持 つ こ と に な っ て い る 実 効 ケ ー パ ビ リ テ ィ の 限 定 的 な ス ー パ ー セ ッ ト で あ る 。 こ れ は 、 実 効 ケ ー パ ビ リ テ ィ セ ッ ト に CAP_SETPCAP ケ ー パ ビ リ テ ィ を 持 っ て い な い ス レ ッ ド が 継 承 可 能 ケ ー パ ビ リ テ ィ セ ッ ト に 追 加 可 能 な ケ ー パ ビ リ テ ィ の 限 定 的 な ス ー パ ー セ ッ ト で も あ る 。
許 可 ケ ー パ ビ リ テ ィ セ ッ ト か ら 削 除 し て し ま っ た ケ ー パ ビ リ テ ィ は 、 (set-user-ID-root プ ロ グ ラ ム か 、 そ の ケ ー パ ビ リ テ ィ を フ ァ イ ル ケ ー パ ビ リ テ ィ で 許 可 し て い る プ ロ グ ラ ム を execve (2) し な い 限 り は ) も う 一 度 獲 得 す る こ と は で き な い 。
継 承 可 能 (inheritable) :
execve (2) を 前 後 で 保 持 さ れ る ケ ー パ ビ リ テ ィ セ ッ ト で あ る 。 こ の 仕 組 み を 使 う こ と で 、 あ る プ ロ セ ス が execve (2) を 行 う 際 に 新 し い プ ロ グ ラ ム の 許 可 ケ ー パ ビ リ テ ィ セ ッ ト と し て 割 り 当 て る ケ ー パ ビ リ テ ィ を 指 定 す る こ と が で き る 。
実 効 (effective) :
カ ー ネ ル が ス レ ッ ド の 権 限 (permission) を チ ェ ッ ク す る と き に 使 用 す る ケ ー パ ビ リ テ ィ セ ッ ト で あ る 。
fork (2) で 作 成 さ れ る 子 プ ロ セ ス は 、 親 の ケ ー パ ビ リ テ ィ セ ッ ト の コ ピ ー を 継 承 す る 。 execve (2) 中 の ケ ー パ ビ リ テ ィ の 扱 い に つ い て は 下 記 を 参 照 の こ と 。
capset (2) を 使 う と 、 プ ロ セ ス は 自 分 自 身 の ケ ー パ ビ リ テ ィ セ ッ ト を 操 作 す る こ と が で き る (下 記 参 照 )。
Linux 3.2 以 降 で は 、 フ ァ イ ル /proc/sys/kernel/cap_last_cap で 、 実 行 中 の カ ー ネ ル で サ ポ ー ト さ れ て い る ケ ー パ ビ リ テ ィ の 最 大 値 を 参 照 で き る 。 こ の 情 報 を 使 っ て 、 ケ ー パ ビ リ テ ィ セ ッ ト に 設 定 さ れ る 可 能 性 が あ る 最 上 位 ビ ッ ト を 判 定 す る こ と が で き る 。
フ ァ イ ル ケ ー パ ビ リ テ ィ
カ ー ネ ル 2.6.24 以 降 で は 、 setcap (8) を 使 っ て 実 行 フ ァ イ ル に ケ ー パ ビ リ テ ィ セ ッ ト を 対 応 付 け る こ と が で き る 。 フ ァ イ ル ケ ー パ ビ リ テ ィ セ ッ ト は security.capability と い う 名 前 の 拡 張 属 性 に 保 存 さ れ る ( setxattr (2) 参 照 )。 こ の 拡 張 属 性 へ の 書 き 込 み に は CAP_SETFCAP ケ ー パ ビ リ テ ィ が 必 要 で あ る 。 フ ァ イ ル ケ ー パ ビ リ テ ィ セ ッ ト と ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト の 両 方 が 考 慮 さ れ 、 execve (2) 後 の ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト が 決 定 さ れ る 。
3 つ
の フ ァ イ ル ケ
ー パ ビ リ テ ィ
セ ッ ト が 定 義
さ れ て い る 。
許 可 (Permitted)
(以 前
の
強 制 (Forced)
):
ス レ ッ ド の 継 承 可 能 ケ ー パ ビ リ テ ィ に 関 わ ら ず 、 そ の ス レ ッ ド に 自 動 的 に 認 め ら れ る ケ ー パ ビ リ テ ィ 。
継 承 可 能 (Inheritable) (以 前 の 許 容 (Allowed) ):
こ の セ ッ ト と 、 ス レ ッ ド の 継 承 可 能 ケ ー パ ビ リ テ ィ セ ッ ト と の 論 理 積 (AND) が と ら れ 、 execve (2) の 後 に そ の ス レ ッ ド の 許 可 ケ ー パ ビ リ テ ィ セ ッ ト で 有 効 と な る 継 承 可 能 ケ ー パ ビ リ テ ィ が 決 定 さ れ る 。
実 効 (effective) :
こ れ は 集 合 で は な く 、 1 ビ ッ ト の 情 報 で あ る 。 こ の ビ ッ ト が セ ッ ト さ れ て い る と 、 execve (2) 実 行 中 に 、 そ の ス レ ッ ド の 新 し い 許 可 ケ ー パ ビ リ テ ィ が 全 て 実 効 ケ ー パ ビ リ テ ィ 集 合 に お い て も セ ッ ト さ れ る 。 こ の ビ ッ ト が セ ッ ト さ れ て い な い 場 合 、 execve (2) 後 に は 新 し い 許 可 ケ ー パ ビ リ テ ィ の ど れ も 新 し い 実 効 ケ ー パ ビ リ テ ィ 集 合 に セ ッ ト さ れ な い 。
フ ァ イ ル の 実 効 ケ ー パ ビ リ テ ィ ビ ッ ト を 有 効 に す る と い う の は 、 execve (2) 実 行 時 に 、 フ ァ イ ル の 許 可 ケ ー パ ビ リ テ ィ と 継 承 ケ ー パ ビ リ テ ィ に 対 応 す る も の が ス レ ッ ド の 許 可 ケ ー パ ビ リ テ ィ セ ッ ト と し て セ ッ ト さ れ る が 、 こ れ が 実 効 ケ ー パ ビ リ テ ィ セ ッ ト に も セ ッ ト さ れ る と い う こ と で あ る (ケ ー パ ビ リ テ ィ の 変 換 ル ー ル は 下 記 参 照 )。 し た が っ て 、 フ ァ イ ル に ケ ー パ ビ リ テ ィ を 割 り 当 て る 際 ( setcap (8), cap_set_file (3), cap_set_fd (3))、 い ず れ か の ケ ー パ ビ リ テ ィ に 対 し て 実 効 フ ラ グ を 有 効 と 指 定 す る 場 合 、 許 可 フ ラ グ や 継 承 可 能 フ ラ グ を 有 効 に し た 他 の 全 て の ケ ー パ ビ リ テ ィ に つ い て も 実 効 フ ラ グ を 有 効 と 指 定 し な け れ ば な ら な い 。
execve() 中 の ケ ー パ ビ リ テ ィ の 変 換
execve (2) 実 行 時 に 、 カ ー ネ ル は プ ロ セ ス の 新 し い ケ ー パ ビ リ テ ィ を 次 の ア ル ゴ リ ズ ム を 用 い て 計 算 す る :
P’(permitted)
= (P(inheritable) & F(inheritable)) |
(F(permitted) & cap_bset)
P’(effective) = F(effective) ? P’(permitted) : 0
P’(inheritable) = P(inheritable) [つ ま り 、 変 更 さ れ な い ]
各 変 数 の 意 味 は 以 下 の 通 り :
|
P |
execve (2) 前 の ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト の 値 |
|||
|
P’ |
execve (2) 後 の ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト の 値 |
|||
|
F |
フ ァ イ ル ケ ー パ ビ リ テ ィ セ ッ ト の 値 |
|||
|
cap_bset |
ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト の 値 (下 記 参 照 ) |
ケ ー パ ビ リ テ ィ と 、 ル ー ト に よ る プ ロ グ ラ ム の 実 行
execve (2) 時 に 、 ケ ー パ ビ リ テ ィ セ ッ ト を 使 っ て 、 全 て の 権 限 を 持 っ た root を 実 現 す る に は 、 以 下 の よ う に す る 。
|
1. |
set-user-ID-root プ ロ グ ラ ム が 実 行 さ れ る 場 合 、 ま た は プ ロ セ ス の 実 ユ ー ザ ー ID が 0 (root) の 場 合 、 フ ァ イ ル の 継 承 可 能 セ ッ ト と 許 可 セ ッ ト を 全 て 1 (全 て の ケ ー パ ビ リ テ ィ が 有 効 ) に 定 義 す る 。 |
||
|
2. |
set-user-ID-root プ ロ グ ラ ム が 実 行 さ れ る 場 合 、 フ ァ イ ル の 実 効 ケ ー パ ビ リ テ ィ ビ ッ ト を 1 (enabled) に 定 義 す る 。 |
上 記 の ル ー ル に ケ ー パ ビ リ テ ィ 変 換 を 適 用 し た 結 果 を ま と め る と 、 プ ロ セ ス が set-user-ID-root プ ロ グ ラ ム を execve (2) す る 場 合 、 ま た は 実 効 UID が 0 の プ ロ セ ス が プ ロ グ ラ ム を execve (2) す る 場 合 、 許 可 と 実 効 の ケ ー パ ビ リ テ ィ セ ッ ト の 全 ケ ー パ ビ リ テ ィ (正 確 に は 、 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト に よ る マ ス ク で 除 外 さ れ る も の 以 外 の 全 て の ケ ー パ ビ リ テ ィ ) を 取 得 す る と い う こ と で あ る 。 こ れ に よ り 、 伝 統 的 な UNIX シ ス テ ム と 同 じ 振 る 舞 い が で き る よ う に な っ て い る 。
ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト
ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト (capability bounding set) は 、 execve (2) 時 に 獲 得 で き る ケ ー パ ビ リ テ ィ を 制 限 す る た め に 使 わ れ る セ キ ュ リ テ ィ 機 構 で あ る 。 バ ウ ン デ ィ ン グ セ ッ ト は 以 下 の よ う に 使 用 さ れ る 。
|
* |
execve (2) 実 行 時 に 、 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト と フ ァ イ ル の 許 可 ケ ー パ ビ リ テ ィ セ ッ ト の 論 理 積 (AND) を 取 っ た も の が 、 そ の ス レ ッ ド の 許 可 ケ ー パ ビ リ テ ィ セ ッ ト に 割 り 当 て ら れ る 。 つ ま り 、 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト は 、 実 行 フ ァ イ ル が 認 め て い る 許 可 ケ ー パ ビ リ テ ィ に 対 し て 制 限 を 課 す 働 き を す る 。 |
||
|
* |
(Linux 2.6.25 以 降 ) ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト は 、 ス レ ッ ド が capset (2) に よ り 自 身 の 継 承 可 能 セ ッ ト に 追 加 可 能 な ケ ー パ ビ リ テ ィ の 母 集 団 を 制 限 す る 役 割 を 持 つ 。 ス レ ッ ド に 許 可 さ れ た ケ ー パ ビ リ テ ィ で あ っ て も 、 バ ウ ン デ ィ ン グ セ ッ ト に 含 ま れ て い な け れ ば 、 ス レ ッ ド は そ の ケ ー パ ビ リ テ ィ は 自 身 の 継 承 可 能 セ ッ ト に 追 加 で き ず 、 そ の 結 果 、 継 承 可 能 セ ッ ト に そ の ケ ー パ ビ リ テ ィ を 含 む フ ァ イ ル を execve (2) す る 場 合 、 そ の ケ ー パ ビ リ テ ィ を 許 可 セ ッ ト に 持 ち 続 け る こ と が で き な い 、 と い う こ と で あ る 。 |
バ ウ ン デ ィ ン グ セ ッ ト が マ ス ク を 行 う の は 、 継 承 可 能 ケ ー パ ビ リ テ ィ で は な く 、 フ ァ イ ル の 許 可 ケ ー パ ビ リ テ ィ の マ ス ク を 行 う 点 に 注 意 す る こ と 。 あ る ス レ ッ ド の 継 承 可 能 セ ッ ト に そ の ス レ ッ ド の バ ウ ン デ ィ ン グ セ ッ ト に 存 在 し な い ケ ー パ ビ リ テ ィ が 含 ま れ て い る 場 合 、 そ の ス レ ッ ド は 、 継 承 可 能 セ ッ ト に 含 ま れ る ケ ー パ ビ リ テ ィ を 持 つ フ ァ イ ル を 実 行 す る こ と に よ り 、 許 可 セ ッ ト に 含 ま れ る ケ ー パ ビ リ テ ィ も 獲 得 で き る と い う こ と で あ る 。
カ ー ネ ル の バ ー ジ ョ ン に よ り 、 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト は シ ス テ ム 共 通 の 属 性 の 場 合 と 、 プ ロ セ ス 単 位 の 属 性 の 場 合 が あ る 。
Linux 2.6.25 よ り 前 の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト
2.6.25 よ り 前 の カ ー ネ ル で は 、 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト は シ ス テ ム 共 通 の 属 性 で 、 シ ス テ ム 上 の 全 て の ス レ ッ ド に 適 用 さ れ る 。 バ ウ ン デ ィ ン グ セ ッ ト は /proc/sys/kernel/cap-bound フ ァ イ ル 経 由 で 参 照 で き る 。 (間 違 え や す い が 、 こ の ビ ッ ト マ ス ク 形 式 の パ ラ メ ー タ ー は 、 /proc/sys/kernel/cap-bound で は 符 号 付 き の 十 進 数 で 表 現 さ れ る 。 )
init プ ロ セ ス だ け が ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト で ケ ー パ ビ リ テ ィ を セ ッ ト す る こ と が で き る 。 そ れ 以 外 で は 、 ス ー パ ー ユ ー ザ ー (よ り 正 確 に は 、 CAP_SYS_MODULE ケ ー パ ビ リ テ ィ を 持 っ た プ ロ グ ラ ム ) が 、 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト の ケ ー パ ビ リ テ ィ の ク リ ア が で き る だ け で あ る 。
通 常 の シ ス テ ム で は 、 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト は 、 CAP_SETPCAP が 無 効 に な っ て い る 。 こ の 制 限 を 取 り 去 る に は (取 り 去 る の は 危 険 !)、 include/linux/capability.h 内 の CAP_INIT_EFF_SET の 定 義 を 修 正 し 、 カ ー ネ ル を 再 構 築 す る 必 要 が あ る 。
シ ス テ ム 共 通 の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト 機 能 は 、 カ ー ネ ル 2.2.11 以 降 で Linux に 追 加 さ れ た 。
Linux 2.6.25 以 降 の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト
Linux 2.6.25 以 降 で は 、 「 ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト 」 は ス レ ッ ド 単 位 の 属 性 で あ る (シ ス テ ム 共 通 の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト は も は や 存 在 し な い )。
バ ウ ン デ ィ ン グ セ ッ ト は fork (2) 時 に は ス レ ッ ド の 親 プ ロ セ ス か ら 継 承 さ れ 、 execve (2) の 前 後 で は 保 持 さ れ る 。
ス レ ッ ド が CAP_SETPCAP ケ ー パ ビ リ テ ィ を 持 っ て い る 場 合 、 そ の ス レ ッ ド は prctl (2) の PR_CAPBSET_DROP 操 作 を 使 っ て 自 身 の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト か ら ケ ー パ ビ リ テ ィ を 削 除 す る こ と が で き る 。 い っ た ん ケ ー パ ビ リ テ ィ を バ ウ ン デ ィ ン グ セ ッ ト か ら 削 除 し て し ま う と 、 ス レ ッ ド は そ の ケ ー パ ビ リ テ ィ を 再 度 セ ッ ト す る こ と は で き な い 。 prctl (2) の PR_CAPBSET_READ 操 作 を 使 う こ と で 、 ス レ ッ ド が あ る ケ ー パ ビ リ テ ィ が 自 身 の バ ウ ン デ ィ ン グ セ ッ ト に 含 ま れ て い る か を 知 る こ と が で き る 。
バ ウ ン デ ィ ン グ セ ッ ト か ら の ケ ー パ ビ リ テ ィ の 削 除 が サ ポ ー ト さ れ る の は 、 カ ー ネ ル の コ ン パ イ ル 時 に フ ァ イ ル ケ ー パ ビ リ テ ィ が 有 効 に な っ て い る 場 合 だ け で あ る 。 Linux 2.6.33 よ り 前 の カ ー ネ ル で は 、 フ ァ イ ル ケ ー パ ビ リ テ ィ は 設 定 オ プ シ ョ ン CONFIG_SECURITY_FILE_CAPABILITIES で 切 り 替 え ら れ る 追 加 の 機 能 で あ っ た 。 Linux 2.6.33 以 降 で は 、 こ の 設 定 オ プ シ ョ ン は 削 除 さ れ 、 フ ァ イ ル ケ ー パ ビ リ テ ィ は 常 に カ ー ネ ル に 組 込 ま れ る よ う に な っ た 。 フ ァ イ ル ケ ー パ ビ リ テ ィ が カ ー ネ ル に コ ン パ イ ル 時 に 組 み 込 ま れ て い る 場 合 、 (全 て の プ ロ セ ス の 先 祖 で あ る ) init プ ロ セ ス は バ ウ ン デ ィ ン グ セ ッ ト で 全 て の ケ ー パ ビ リ テ ィ が セ ッ ト さ れ た 状 態 で 開 始 す る 。 フ ァ イ ル ケ ー パ ビ リ テ ィ が 有 効 に な っ て い な い 場 合 に は 、 init は バ ウ ン デ ィ ン グ セ ッ ト で CAP_SETPCAP 以 外 の 全 て の ケ ー パ ビ リ テ ィ が セ ッ ト さ れ た 状 態 で 開 始 す る 。 こ の よ う に な っ て い る の は 、 CAP_SETPCAP ケ ー パ ビ リ テ ィ が フ ァ イ ル ケ ー パ ビ リ テ ィ が サ ポ ー ト さ れ て い な い 場 合 に は 違 っ た 意 味 を 持 つ か ら で あ る 。
バ ウ ン デ ィ ン グ セ ッ ト か ら ケ ー パ ビ リ テ ィ を 削 除 し て も 、 ス レ ッ ド の 継 承 可 能 セ ッ ト か ら は そ の ケ ー パ ビ リ テ ィ は 削 除 さ れ な い 。 し か し な が ら 、 バ ウ ン デ ィ ン グ セ ッ ト か ら の 削 除 に よ り 、 こ の 先 そ の ケ ー パ ビ リ テ ィ を ス レ ッ ド の 継 承 可 能 セ ッ ト に 追 加 す る こ と は で き な く な る 。
ユ ー ザ ー ID 変 更 の ケ ー パ ビ リ テ ィ へ の 影 響
ユ ー ザ ー ID が 0 と 0 以 外 の 間 で 変 化 す る 際 の 振 る 舞 い を 従 来 と 同 じ に す る た め 、 ス レ ッ ド の 実 UID、 実 効 UID、 保 存 set-user-ID、 フ ァ イ ル シ ス テ ム UID が ( setuid (2), setresuid (2) な ど を 使 っ て ) 変 更 さ れ た 際 に 、 カ ー ネ ル は そ の ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト に 以 下 の 変 更 を 行 う :
|
1. |
UID の 変 更 前 に は 実 UID、 実 効 UID、 保 存 set-user-ID の う ち 少 な く と も 一 つ が 0 で 、 変 更 後 に 実 UID、 実 効 UID、 保 存 set-user-ID が す べ て 0 以 外 の 値 に な っ た 場 合 、 許 可 と 実 効 の ケ ー パ ビ リ テ ィ セ ッ ト の 全 ケ ー パ ビ リ テ ィ を ク リ ア す る 。 |
||
|
2. |
実 効 UID が 0 か ら 0 以 外 に 変 更 さ れ た 場 合 、 実 効 ケ ー パ ビ リ テ ィ セ ッ ト の 全 ケ ー パ ビ リ テ ィ を ク リ ア す る 。 |
||
|
3. |
実 効 UID が 0 以 外 か ら 0 に 変 更 さ れ た 場 合 、 許 可 ケ ー パ ビ リ テ ィ セ ッ ト の 内 容 を 実 効 ケ ー パ ビ リ テ ィ セ ッ ト に コ ピ ー す る 。 |
||
|
4. |
フ ァ イ ル シ ス テ ム UID が 0 か ら 0 以 外 に 変 更 さ れ た 場 合 ( setfsuid (2) 参 照 )、 実 効 ケ ー パ ビ リ テ ィ セ ッ ト の 以 下 の ケ ー パ ビ リ テ ィ が ク リ ア さ れ る : CAP_CHOWN , CAP_DAC_OVERRIDE , CAP_DAC_READ_SEARCH , CAP_FOWNER , CAP_FSETID , CAP_LINUX_IMMUTABLE (Linux 2.6.30 以 降 ), CAP_MAC_OVERRIDE , CAP_MKNOD (Linux 2.6.30 以 降 )。 フ ァ イ ル シ ス テ ム UID が 0 以 外 か ら 0 に 変 更 さ れ た 場 合 、 上 記 の ケ ー パ ビ リ テ ィ の う ち 許 可 ケ ー パ ビ リ テ ィ セ ッ ト で 有 効 に な っ て い る も の が 実 効 ケ ー パ ビ リ テ ィ セ ッ ト で 有 効 に さ れ る 。 |
各 種 UID の う ち 少 な く と も 一 つ が 0 で あ る ス レ ッ ド が 、 そ の UID の 全 て が 0 以 外 に な っ た と き に 許 可 ケ ー パ ビ リ テ ィ セ ッ ト が ク リ ア さ れ な い よ う に し た い 場 合 に は 、 prctl (2) の PR_SET_KEEPCAPS 操 作 を 使 え ば よ い 。
プ ロ グ ラ ム で ケ ー パ ビ リ テ ィ セ ッ ト を 調 整 す る
各 ス レ ッ ド は 、 capget (2) や capset (2) を 使 っ て 、 自 身 の ケ ー パ ビ リ テ ィ セ ッ ト を 取 得 し た り 変 更 し た り で き る 。 た だ し 、 こ れ を 行 う に は 、 libcap パ ッ ケ ー ジ で 提 供 さ れ て い る cap_get_proc (3) や cap_set_proc (3) を 使 う の が 望 ま し い 。 ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト の 変 更 に は 以 下 の ル ー ル が 適 用 さ れ る 。
|
1. |
呼 び 出 し 側 が CAP_SETPCAP ケ ー パ ビ リ テ ィ を 持 っ て い な い 場 合 、 新 し い 継 承 可 能 セ ッ ト は 、 既 存 の 継 承 可 能 セ ッ ト と 許 可 セ ッ ト の 積 集 合 (AND) の 部 分 集 合 で な け れ ば な ら な い 。 |
||
|
2. |
(Linux 2.6.25 以 降 ) 新 し い 継 承 可 能 セ ッ ト は 、 既 存 の 継 承 可 能 セ ッ ト と ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト の 積 集 合 (AND) の 部 分 集 合 で な け れ ば な ら な い 。 |
||
|
3. |
新 し い 許 可 セ ッ ト は 、 既 存 の 許 可 セ ッ ト の 部 分 集 合 で な け れ ば な ら な い (つ ま り 、 そ の ス レ ッ ド が 現 在 持 っ て い な い 許 可 ケ ー パ ビ リ テ ィ を 獲 得 す る こ と は で き な い )。 |
||
|
4. |
新 し い 実 効 ケ ー パ ビ リ テ ィ セ ッ ト は 新 し い 許 可 ケ ー パ ビ リ テ ィ セ ッ ト の 部 分 集 合 に な っ て い な け れ ば な ら な い 。 |
securebits フ ラ グ : ケ ー パ ビ リ テ ィ だ け の 環 境 を 構 築 す る
カ
ー ネ ル 2.6.26 以 降 で
、 フ ァ イ ル ケ
ー パ ビ リ テ ィ
が 有 効 に な っ
た カ ー ネ ル で
は 、 ス レ ッ ド
単 位 の
securebits
フ
ラ グ が 実 装 さ
れ て お り 、 こ
の フ ラ グ を 使
う と UID 0 (
root
) に 対
す る ケ ー パ ビ
リ テ ィ の 特 別
扱 い を 無 効 す
る こ と が で き
る 。 以 下 の よ
う な フ ラ グ が
あ る 。
SECBIT_KEEP_CAPS
こ の フ ラ グ を セ ッ ト さ れ て い る 場 合 、 UID が 0 の ス レ ッ ド の UID が 0 以 外 の 値 に 切 り 替 わ る 際 に 、 そ の ス レ ッ ド は ケ ー パ ビ リ テ ィ を 維 持 す る こ と が で き る 。 こ の フ ラ グ が セ ッ ト さ れ て い な い 場 合 に は 、 UID が 0 か ら 0 以 外 の 値 に 切 り 替 わ る と 、 そ の ス レ ッ ド は 全 て の ケ ー パ ビ リ テ ィ を 失 う 。 こ の フ ラ グ は execve (2) 時 に は 全 て ク リ ア さ れ る (こ の フ ラ グ は 、 以 前 の prctl (2) の PR_SET_KEEPCAPS 操 作 と 同 じ 機 能 を 提 供 す る も の で あ る )。
SECBIT_NO_SETUID_FIXUP
こ の フ ラ グ を セ ッ ト す る と 、 ス レ ッ ド の 実 効 UID と フ ァ イ ル シ ス テ ム UID が 0 と 0 以 外 の 間 で 切 り 替 わ っ た 場 合 に 、 カ ー ネ ル は ケ ー パ ビ リ テ ィ セ ッ ト の 調 整 を 行 わ な く な る (「 ユ ー ザ ー ID 変 更 の ケ ー パ ビ リ テ ィ へ の 影 響 」 の 節 を 参 照 )。
SECBIT_NOROOT
こ の ビ ッ ト が セ ッ ト さ れ て い る 場 合 、 set-user-ID-root プ ロ グ ラ ム の 実 行 時 や 、 実 効 UID か 実 UID が 0 の プ ロ セ ス が execve (2) を 呼 び 出 し た 時 に 、 カ ー ネ ル は ケ ー パ ビ リ テ ィ を 許 可 し な い (「 ケ ー パ ビ リ テ ィ と 、 ル ー ト に よ る プ ロ グ ラ ム の 実 行 」 の 節 を 参 照 )。
上 記 の "base" フ ラ グ の 各 々 に は 対 応 す る "locked" フ ラ グ が 存 在 す る 。 い ず れ の "locked" フ ラ グ も 一 度 セ ッ ト さ れ る と 戻 す こ と は で き ず 、 そ れ 以 降 は 対 応 す る "base" フ ラ グ を 変 更 す る こ と が で き な く な る 。 "locked" フ ラ グ は SECBIT_KEEP_CAPS_LOCKED , SECBIT_NO_SETUID_FIXUP_LOCKED , SECBIT_NOROOT_LOCKED と い う 名 前 で あ る 。
securebits フ ラ グ は 、 prctl (2) の 操 作 PR_SET_SECUREBITS や PR_GET_SECUREBITS を 使 う こ と で 変 更 し た り 取 得 し た り で き る 。 フ ラ グ を 変 更 す る に は CAP_SETPCAP ケ ー パ ビ リ テ ィ が 必 要 で あ る 。
securebits フ ラ グ は 子 プ ロ セ ス に 継 承 さ れ る 。 execve (2) に お い て は 、 SECBIT_KEEP_CAPS が 常 に ク リ ア さ れ る 以 外 は 、 全 て の フ ラ グ が 保 持 さ れ る 。
ア プ リ ケ ー シ ョ ン は 、 以 下 の 呼 び 出 し を 行 う こ と に よ り 、 自 分 自 身 お よ び 子 孫 と な る プ ロ セ ス 全 て に 対 し て 、 必 要 な フ ァ イ ル ケ ー パ ビ リ テ ィ を 持 っ た プ ロ グ ラ ム を 実 行 し な い 限 り 、 対 応 す る ケ ー パ ビ リ テ ィ を 獲 得 で き な い よ う な 状 況 に 閉 じ こ め る こ と が で き る 。
prctl(PR_SET_SECUREBITS,
SECBIT_KEEP_CAPS_LOCKED |
SECBIT_NO_SETUID_FIXUP |
SECBIT_NO_SETUID_FIXUP_LOCKED |
SECBIT_NOROOT |
SECBIT_NOROOT_LOCKED);
ユ ー ザ ー 名 前 空 間 と の 相 互 作 用
ケ ー パ リ ビ テ ィ と ユ ー ザ ー 名 前 空 間 の 相 互 の 影 響 に 関 す る 議 論 は user_namespaces (7) を 参 照 。
準 拠
ケ ー パ ビ リ テ ィ に 関 す る 標 準 は な い が 、 Linux の ケ ー パ ビ リ テ ィ は 廃 案 に な っ た POSIX.1e 草 案 に 基 づ い て 実 装 さ れ て い る 。 http://wt.xpilot.org/publications/posix.1e/ を 参 照 。
注 意
カ ー ネ ル 2.5.27 以 降 、 ケ ー パ ビ リ テ ィ は 選 択 式 の カ ー ネ ル コ ン ポ ー ネ ン ト と な っ て お り 、 カ ー ネ ル 設 定 オ プ シ ョ ン CONFIG_SECURITY_CAPABILITIES に よ り 有 効 /無 効 を 切 り 替 え る こ と が で き る 。
/proc/PID/task/TID/status フ ァ イ ル を 使 う と 、 ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト を 見 る こ と が で き る 。 /proc/PID/status フ ァ イ ル に は 、 プ ロ セ ス の メ イ ン ス レ ッ ド の ケ ー パ ビ リ テ ィ セ ッ ト が 表 示 さ れ る 。 Linux 3.8 よ り 前 で は 、 こ れ ら の ケ ー パ ビ リ テ ィ セ ッ ト の 表 示 で 、 存 在 し な い ケ ー パ ビ リ テ ィ は す べ て 有 効 (1) と し て 表 示 さ れ る 。 Linux 3.8 以 降 で は 、 存 在 し な い ケ ー パ ビ リ テ ィ は す べ て 無 効 (0) と し て 表 示 さ れ る 。 ( CAP_LAST_CAP よ り 大 き い 値 を 持 つ ケ ー パ ビ リ テ ィ が 存 在 し な い ケ ー パ ビ リ テ ィ で あ る )。
libcap
パ ッ ケ ー ジ は
、 ケ ー パ ビ リ
テ ィ を 設 定 ・
取 得 す る た め
の ル ー チ ン 群
を 提 供 し て い
る 。 こ れ ら の
イ ン タ ー フ ェ
ー ス は 、
capset
(2)
と
capget
(2) が 提 供
す る イ ン タ ー
フ ェ ー ス と 比
べ て 、 よ り 使
い や す く 、 変
更 さ れ る 可 能
性 が 少 な い 。
こ の パ ッ ケ ー
ジ で は 、
setcap
(8),
getcap
(8) と い う プ
ロ グ ラ ム も 提
供 さ れ て い る
。 パ ッ ケ ー ジ
は 以 下 で 入 手
で き る 。
http://www.kernel.org/pub/linux/libs/security/linux-privs
.
バ ー ジ ョ ン 2.6.24 よ り 前 、 お よ び フ ァ イ ル ケ ー パ ビ リ テ ィ が 有 効 に な っ て い な い 2.6.24 以 降 の カ ー ネ ル で は 、 CAP_SETPCAP ケ ー パ ビ リ テ ィ を 持 っ た ス レ ッ ド は 自 分 以 外 の ス レ ッ ド の ケ ー パ ビ リ テ ィ を 操 作 で き る 。 し か し な が ら 、 こ れ は 理 論 的 に 可 能 と い う だ け で あ る 。 以 下 の い ず れ か の 場 合 に お い て も 、 ど の ス レ ッ ド も CAP_SETPCAP ケ ー パ ビ リ テ ィ を 持 つ こ と は な い か ら で あ る 。
|
* |
2.6.25 よ り 前 の 実 装 で は 、 シ ス テ ム 共 通 の ケ ー パ ビ リ テ ィ バ ウ ン デ ィ ン グ セ ッ ト /proc/sys/kernel/cap-bound で は こ の ケ ー パ ビ リ テ ィ は 常 に 無 効 に な っ て お り 、 ソ ー ス を 変 更 し て カ ー ネ ル を 再 コ ン パ イ ル し な い 限 り 、 こ れ を 変 更 す る こ と は で き な い 。 |
||
|
* |
現 在 の 実 装 で は フ ァ イ ル ケ ー パ ビ リ テ ィ が 無 効 に な っ て い る 場 合 、 プ ロ セ ス 毎 の バ ウ ン デ ィ ン グ セ ッ ト か ら こ の ケ ー パ ビ リ テ ィ を 抜 い て init は 開 始 さ れ 、 シ ス テ ム 上 で 生 成 さ れ る 他 の 全 て の プ ロ セ ス で こ の バ ウ ン デ ィ ン グ セ ッ ト が 継 承 さ れ る 。 |
関 連 項 目
capsh (1), setpriv (2), prctl (2), setfsuid (2), cap_clear (3), cap_copy_ext (3), cap_from_text (3), cap_get_file (3), cap_get_proc (3), cap_init (3), capgetp (3), capsetp (3), libcap (3), credentials (7), user_namespaces (7), pthreads (7), getcap (8), setcap (8)
Linux カ ー ネ ル ソ ー ス 内 の include/linux/capability.h
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man-pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man-pages/ に 書 か れ て い る 。