File: setpriv

package info (click to toggle)
util-linux 2.42~rc1-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 101,864 kB
  • sloc: ansic: 185,733; sh: 24,450; yacc: 1,288; makefile: 534; xml: 422; python: 316; lex: 89; ruby: 75; csh: 37; exp: 19; sed: 16; perl: 15; sql: 9
file content (145 lines) | stat: -rw-r--r-- 3,326 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
_setpriv_module()
{
	local cur prev OPTS
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'--ambient-caps'|'--inh-caps'|'--bounding-set')
			local prefix realcur INHERIT_ALL INHERIT
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			INHERIT_ALL=$($1 --list-caps| command awk '{print $1, "-" $1}')
			for WORD in $INHERIT_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					INHERIT="$WORD ${INHERIT:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$INHERIT" -S ',' -- $realcur) )
			return 0
			;;
		'--ruid'|'--euid'|'--reuid')
			local UIDS
			UIDS=$(command getent passwd | command awk -F: '{print $1}')
			COMPREPLY=( $(compgen -W "$UIDS" -- $cur) )
			return 0
			;;
		'--rgid'|'--egid'|'--regid')
			local GIDS
			GIDS=$(command getent group | command awk -F: '{print $1}')
			COMPREPLY=( $(compgen -W "$GIDS" -- $cur) )
			return 0
			;;
		'--groups')
			local prefix realcur GIDS_ALL GIDS
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			GIDS_ALL=$(command getent group | command awk -F: '{print $3}')
			for WORD in $GIDS_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					GIDS="$WORD ${GIDS:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$GIDS" -S ',' -- $realcur) )
			return 0
			;;
		'--securebits')
			local prefix realcur SBITS_ALL SBITS WORD
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			SBITS_ALL="
				{+,-}keep_caps_locked
				{+,-}noroot
				{+,-}noroot_locked
				{+,-}no_setuid_fixup
				{+,-}no_setuid_fixup_locked
			"
			for WORD in $SBITS_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					SBITS="$WORD ${SBITS:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$SBITS" -S ',' -- $realcur) )
			return 0
			;;
		'--pdeathsig')
			local i signals
			for i in $(kill -l); do
				case $i in
					SIG*)
						signals+="$i "
					;;
				esac
			done
			COMPREPLY=( $(compgen -W "keep clear $signals" -- $cur) )
			return 0
			;;
		'--selinux-label')
			# FIXME: how to list selinux labels?
			COMPREPLY=( $(compgen -W "label" -- $cur) )
			return 0
			;;
		'--apparmor-profile')
			# FIXME: how to list apparmor profiles?
			COMPREPLY=( $(compgen -W "profile" -- $cur) )
			return 0
			;;
		'--landlock-access')
			# FIXME: how to list landlock accesses?
			COMPREPLY=( $(compgen -W "access" -- $cur) )
			return 0
			;;
		'--landlock-rule')
			# FIXME: how to list landlock rules?
			COMPREPLY=( $(compgen -W "rule" -- $cur) )
			return 0
			;;
		'--seccomp-filter')
			COMPREPLY=( $(compgen -f -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	case $cur in
		-*)
			OPTS="--dump
				--no-new-privs
				--ambient-caps
				--inh-caps
				--bounding-set
				--ruid
				--euid
				--rgid
				--egid
				--reuid
				--regid
				--clear-groups
				--keep-groups
				--groups
				--securebits
				--pdeathsig
				--reset-env
				--init-groups
				--nnp
				--ptracer
				--selinux-label
				--apparmor-profile
				--landlock-access
				--landlock-rule
				--seccomp-filter
				--help
				--version"
			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
			return 0
			;;
	esac
	compopt -o bashdefault
	COMPREPLY=( $(compgen -c -- $cur) )
	return 0
}
complete -F _setpriv_module setpriv