From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=DKIM_ADSP_ALL,DKIM_SIGNED, DKIM_VALID,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 11458 invoked from network); 26 Feb 2021 07:56:37 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 26 Feb 2021 07:56:37 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20200801; t=1614326197; b=Me26eKDvjFWVSsE3HNAcTp+5+CecbTiqgigkVZqSBkrfCwO3ooJvO3NLiA8UZsOrTaJxl4/BHZ LBTQ7prha4xtDcrRQ28XbYj9RQDyiBygMXk6gbdOeTxUNL4gB9BZyz2UXlgHI6yUMQ+oc1ntyB jqPd6PKZabih1lRB++6/Fqu6lu3Solj4mNzqC9nIGLGO3U9DWRTtxM4dfw6tOZxjzMEsmOyg6u PCkPiwpZjWMb2h14k0RZDlcpsv2TUZ3v8DeY9sPf4sNqbUop0155TnyISKn6Nl1JnlHIK58N3F HCbusAwTv42/+RhLXzLM3RGU2vvMXg6qaGynQvp0jxAnRg==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail.cs.msu.ru) smtp.remote-ip=188.44.42.39; dkim=pass header.d=cs.msu.ru header.s=dkim header.a=rsa-sha256; dmarc=pass header.from=cs.msu.ru; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20200801; t=1614326197; bh=kRLip7B4ZNAR1GVw4AR0A/XOYPqkxlMXYXQ/CEuwuYs=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Subject:Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Cc:To:From:DKIM-Signature:DKIM-Signature; b=Zjjaon0XlyG4vwvvMpdsLPnoBjCg5qO2+MAX5Uxf2TH1zepRPGu6J+pXLLFOBPWnyF28cWLie/ ridPdWXg/70XXYKhE3lpQSVjvKZqxMN1+yGooAuYkHCzp9tCTP5yQStrMamc9SAPTds9PVrA3t PENIaPd7nMk8VS4KH9p3qb3Mm4Rp7uWgfI0jvuy/lJOLl4xvXYw93H/p7iysX1d+5bOWOvBNph Yz1JnvzDD67g1+xVh8p0N5csw4H3v+ho5p7N259IvONzNXXPvRNxtKYbb/mRQECIzAi9qG9zzl xDXfhUvXbLzGWZfNNbTyjmperA/U6ludUBNHjOSBgwNbuA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20200801; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Subject:Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Cc:To:From:Reply-To: Content-Type:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=sjzGiU65mxPh6cuZbEJzqZVw7cI/tF3jvMyt3r0vgWk=; b=kV+fpmiacfdY4Bjc6co7xGk7WI cjR7FqDMn629mGAoTvy0orF/7/DSHDgjArr2MHIUcbM1vNVFNF9grJDS2wqLTa9Qq37BjknmBMsVj XWQjlMwtRuIllvwrIAZNchBFyhRpsSQnwjcI0Gl6YvFnAbstxfJDd+5y/2Ly9O9kBUIv2Oa120Q+8 T7qXkVeKvcj8Xt3hWvpT/8zYEvoxIJEobAfCb7khAs7Vr47LYwYcxe1xNUxtW3XixX3bXiJ/9HZzs MuzLZzqOUQGnJIzvMuNmkU8bazAzAEiNQ3z2rIUBdlRX6cLeI1t40r8vVWxyaBBPfxVlDaOMiyKCV oNBdq2nA==; Received: from authenticated user by zero.zsh.org with local id 1lFXzG-0009H1-Is; Fri, 26 Feb 2021 07:56:34 +0000 Authentication-Results: zsh.org; iprev=pass (mail.cs.msu.ru) smtp.remote-ip=188.44.42.39; dkim=pass header.d=cs.msu.ru header.s=dkim header.a=rsa-sha256; dmarc=pass header.from=cs.msu.ru; arc=none Received: from mail.cs.msu.ru ([188.44.42.39]:23611) by zero.zsh.org with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) id 1lFXyu-0008Ac-P3; Fri, 26 Feb 2021 07:56:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=cs.msu.ru; s=dkim; h=Subject:Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-Id:Date:Cc:To:From:Sender:Reply-To:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=sjzGiU65mxPh6cuZbEJzqZVw7cI/tF3jvMyt3r0vgWk=; b=Z/5DoXWU7CF3Z+4Qoa5OQImtEt Qwt54srNk1hJNouDkjcqCaRX/9+ztjLVXCnpkBVh16bfBerIFgytwl2G692BHkzj51znZJfaWh4AW NRbMdQWqVUxdMQHLAGC/AIQumbfoSZQ7ff5QcODus8SPsuZAlmkhkYkDJmdKNzNtjmK7FbD3kyEJE 2YqokDmbfHidY0hxMQVMCo67qf2KDyjqswW9ziTCjuqcT7ZDGsMTb3XriosyFx6zUd5+ezyJIcDGP 9uKyHI0MGgklv3zFJlAGGZZSIHufQqvA97HwxSAg36PKWncn9ETWnqsa7vYjBkraO8YcM2tJ7fLTu tp1FRJsQ==; Received: from [37.204.119.143] (port=60916 helo=localhost.localdomain) by mail.cs.msu.ru with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94 (FreeBSD)) (envelope-from ) id 1lFXys-000Grp-UM; Fri, 26 Feb 2021 10:56:11 +0300 From: Arseny Maslennikov To: zsh-workers@zsh.org Cc: Arseny Maslennikov Date: Fri, 26 Feb 2021 10:55:58 +0300 Message-Id: <20210226075558.883716-2-ar@cs.msu.ru> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210226075558.883716-1-ar@cs.msu.ru> References: <20210226075558.883716-1-ar@cs.msu.ru> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 37.204.119.143 X-SA-Exim-Mail-From: ar@cs.msu.ru Subject: [PATCH 2/2] Introduce new completion for setpriv(1) on Linux X-SA-Exim-Version: 4.2.1 X-SA-Exim-Scanned: Yes (on mail.cs.msu.ru) X-Seq: 48117 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: Archived-At: This is a utility from util-linux which sets or queries various Linux process privilege settings that are inherited across execve(2). More info is available in the corresponding manual page[1]. [1] https://man7.org/linux/man-pages/man1/setpriv.1.html --- Completion/Linux/Command/_setpriv | 88 +++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Completion/Linux/Command/_setpriv diff --git a/Completion/Linux/Command/_setpriv b/Completion/Linux/Command/_setpriv new file mode 100644 index 000000000..8fdd2ed10 --- /dev/null +++ b/Completion/Linux/Command/_setpriv @@ -0,0 +1,88 @@ +#compdef setpriv + +__setpriv_prctl_securebits_set_element() { + local -a expl matches + local -a bits + + bits=(noroot noroot_locked + no_setuid_fixup no_setuid_fixup_locked + keep_caps_locked + ) + matches=( {-,+}"${(@)^bits}" ) + _wanted minus-plus-securebits expl 'prctl securebits' \ + compadd "$@" -a - matches +} + +__setpriv_prctl_securebits_set() { + _sequence __setpriv_prctl_securebits_set_element +} + +__setpriv_capability_expressions() { + # Nonlocal expl; _description call expected. + local -a caps matches + + _capability_names caps + # Strip the prefix "cap_" from every array element. + # For every element, prepend "-" and "+" to the element. + matches=( {-,+}"${(@)^caps#cap_}" ) + compadd "$@" "${(@)expl}" -a - matches +} + +__setpriv_caps_all() { + # Nonlocal expl; _description call expected. + local -a names matches + + names=(all) + matches=( {-,+}"${(@)^names}" ) + compadd "$@" "${(@)expl}" -a - matches +} + +__setpriv_cap_set_element() { + # We pass through arguments from _sequence. + local -a Oargv=( "$@" ) + _alternative -O Oargv \ + 'special-actions:drop/obtain all caps:__setpriv_caps_all' \ + 'minus-plus-caps:capabilities:__setpriv_capability_expressions' \ + # +} + +__setpriv_cap_set() { + _sequence __setpriv_cap_set_element +} + +__setpriv_death_signals() { + _alternative \ + 'special-actions:keep or clear:(keep clear)' \ + 'signals:UNIX signals:_signals' \ + # +} + +local context state state_descr line +typeset -A opt_args + +_arguments -S \ + '(- : *)--help[print help and exit]' \ + '(- : *)'{-V,--version}'[print version information and exit]' \ + '(- : *)*'{-d,--dump}'[display the current privilege state]' \ + '--clear-groups[clear supplementary groups]' \ + '--groups[set supplementary groups]:groups:_groups' \ + '--inh-caps[set inheritable caps]:capability set: __setpriv_cap_set' \ + '--ambient-caps[set ambient caps]:capability set: __setpriv_cap_set' \ + '--bounding-set[set the cap bounding set]:capability set: __setpriv_cap_set' \ + '(- : *)--list-caps[list all known capabilities]' \ + '--keep-groups[preserve supplementary groups]' \ + '--init-groups[initialize supplementary groups]' \ + '--no-new-privs[set NO_NEW_PRIVS]' \ + '--rgid[set real UNIX group id]:UNIX group:_groups' \ + '--egid[set effective UNIX group id]:UNIX group:_groups' \ + '--regid[set real and effective UNIX group id]:UNIX group:_groups' \ + '--ruid[set real UNIX user id]:UNIX user:_users' \ + '--euid[set effective UNIX user id]:UNIX user:_users' \ + '--reuid[set real and effective UNIX user id]:UNIX user:_users' \ + '--securebits[set "process securebits"]:prctl securebits:__setpriv_prctl_securebits_set' \ + '--pdeathsig[keep, clear, or set parent death signal]:signals: __setpriv_death_signals' \ + '--selinux-label[request a selinux label]:SELinux labels: ' \ + '--apparmor-profile[request an apparmor profile]:AppArmor profiles: ' \ + '--reset-env[set environment as for a classic login shell]' \ + '*:::command:_normal' \ + # -- 2.30.1