스크립트에서는 시스템 관리자에 대한 별칭만 제공하세요.

스크립트에서는 시스템 관리자에 대한 별칭만 제공하세요.

시스템 관리자만 사용할 수 있는 몇 가지 별칭/스크립트를 갖고 싶습니다. /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

관련 정보