/usr/bin/pfexec command
/usr/bin/pfexec -P privspec command [ arg ]...
/usr/bin/pfsh [ options ] [ argument ]...
/usr/bin/pfcsh [ options ] [ argument ]...
/usr/bin/pfksh [ options ] [ argument ]...
pfexec 程序可设置 PRIV_PFEXEC 进程标志,并将当前进程标记为配置文件 shell。然后,它执行指定的命令。内核将查询 exec_attr(4) 数据库,并通过相应的属性执行。
搜索配置文件时会按照 user_attr(4) 数据库和 policy.conf(4) 中用户条目指定的顺序。对于每个用户,共有两组配置文件,即已验证集和未验证集。如果命令与已验证配置文件集对应的 exec_attr(4) 数据库中的条目匹配,用户在执行这些命令之前需要重新进行验证。如果从终端执行命令,系统会缓存当前用户和 tty 的验证状态,但该验证状态会受到为 PAM 堆栈 /etc/pam.d/pfexec 中的 pam_tty_tickets(5) 设置的超时选项的影响。如果当前没有 tty,但存在活动的 X11 会话,系统会通过 zenity 对话框提示用户进行验证。系统会为当前用户和 DISPLAY 环境设置缓存此验证状态。成功通过重新验证的进程(包括在缓存的超时值以内通过隐式验证的进程)会使用另一个进程标志 PRIV_PFEXEC_AUTH 进行标记,以使其子进程无需进行后续的重新验证。除非实际 UID 发生变化,否则子进程将继承 PRIV_PFEXEC 和 PRIV_PFEXEC_AUTH 标志。与未验证配置文件集匹配的命令不需要进行重新验证,但其优先级低于已验证配置文件集中的命令。如果同一命令出现在多个配置文件中,则配置文件 shell 将使用第一个匹配的条目。
使用第二种形式 (pfexec –P privspec) 时,用户可以获取在 prof_attr(4) 中授予用户配置文件的附加特权。在命令行上指定的特权使用 priv_str_to_set(3C) 解析。得到的特权将先与在 prof_attr (4) 中使用 privs 关键字为所有用户配置文件指定的特权联合相交,并添加到可继承集,然后再执行命令。
pfexec 用于使用预定义的进程属性(例如特定用户或组 ID)执行命令。
有关配置文件 shell 的完整使用说明,请参见 sh(1)、csh(1) 和 ksh(1) 手册页。
example% pfexec -P all chown user file
此命令仅以分配给当前用户的所有特权运行 chown user file,不必使用所有特权。
将返回以下退出值:
成功完成。
出现错误。
有关下列属性的说明,请参见 attributes(5):
|
bash(1)、csh(1)、ksh(1)、ksh88(1)、profiles(1)、sh(1)、tcsh (1)、zsh (1)、exec_attr(4)、prof_attr(4)、user_attr(4)、attributes(5)