スクリプトでは、システム管理者のエイリアスのみを提供してください。

スクリプトでは、システム管理者のエイリアスのみを提供してください。

システム管理者だけが使用できるいくつかのエイリアス/スクリプトがあります。私は/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

本当にsysadminsだけがスクリプトを実行できるようにするための最も簡単な方法は、sysadminsグループのみを読み取ることができるディレクトリを作成し、関連する秘密をその中に入れることです。

答え2

ディストリビューションには、/etc/profile.d でファイルを検索する /etc/profile があります。その場合は、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

.shbashの場合は、拡張子を使用して名前を付けるだけです。

/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のソリューション到着正確に一致する特定のユーザーグループメンバーシップを検索する。アイデアは、現在のユーザーがホイールグループのメンバーであることを確認することです。 id -Gnznullで区切られたリストから-G名前()ごとにグループ()リストを要求します。次にフラグを使用して-nにパイプします。grep

  • -q- 一致するものを出力せずに戻りコードを成功または失敗に設定するだけです。
  • -x- 全体の「行」が一致する必要があるため、ユーザーが次のグループのメンバーである場合、誤検知は発生しません。flywheel
  • -z- 入力をnullで終わる「行」リストとして解釈します。

答え3

/etc/bash.bashrcにこれを追加します。

if id -G | egrep "(^| )$(getent group wheel | cut -d: -f3)( |\$)" > /dev/null; then
    # set your aliases here
fi

関連情報