我希望有几个别名/脚本仅供系统管理员使用。我知道我可以将脚本放在 /usr/sbin 中。至于别名,我可以在手动创建用户帐户后添加这些别名:
#as root
adduser username
passwd username
usermod -aG wheel username
cd /home/username
nano .bashrc
if [ -f /path/to/file ]; then
. /path/to/file
fi
但是我更希望有一个包含这些别名的文件,这些别名将在系统管理员的 .bashrc 中引用,而不必手动编辑每个 .bashrc 文件。有什么建议吗,还是我只需要手动操作?
答案1
如果您确实希望脚本只能由系统管理员运行,那么最简单的方法是创建一个只能由系统管理员组读取的目录,并将相关机密放入其中。
答案2
您的发行版可能有一个 /etc/profile,用于在 /etc/profile.d 中查找文件;如果是这样,请在那里放置一个文件,为 Wheel 组的成员设置这些别名。在 Debian 系统上,相关代码是:
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi
对于 bash,你只需要使用.sh
扩展名来命名它;例如:
/etc/profile.d/admin-aliases.sh
# set up admin-only aliases if the user is a member of the wheel group
if id -Gnz "$LOGNAME" | grep -qxz wheel
then
alias youralias=yourcommand
fi
解决id | grep
方案借鉴自Stéphane Chazelas 的解决方案到搜索具有完全匹配的特定用户组成员资格。这个想法是看看当前用户是否是wheel组的成员。 id -Gnz
请求以null 分隔的列表中-G
按名称 ( )列出的组 ( ) 列表。-n
然后通过管道传输到grep
,其标志为:
-q
-- 不输出任何匹配项,仅将返回码设置为成功或失败-x
-- 要求整个“行”匹配,因此如果用户是名为的组的成员,我们就不会得到误报flywheel
-z
-- 将输入解释为以空结尾的“行”列表
答案3
将其添加到 /etc/bash.bashrc 中:
if id -G | egrep "(^| )$(getent group wheel | cut -d: -f3)( |\$)" > /dev/null; then
# set your aliases here
fi