사용자 그룹에 bashrc를 제공할 수 있나요?

사용자 그룹에 bashrc를 제공할 수 있나요?

그룹의 모든 사용자에 대해 특정 bashrc 파일을 실행할 수 있습니까? /etc/profile에서 시스템 전체에 걸쳐 수행할 수 있다면 사용자 그룹에 대해서는 수행하지 않는 이유는 무엇입니까?

답변1

/etc/profile다음을 추가합니다.

if [ "$(id -ng)" = "the_cool_group" ]; then
    # do stuff for people in the_cool_group
fi

답변2

/etc/profile모든 사용자에게 표시됩니다. ~/.profile로그인한 사용자에게 표시됩니다. 이는 사용자의 홈 디렉토리에 있는 파일이며, 각 사용자는 자신의 디렉토리를 가지고 있습니다. 로그인 프로그램은 환경 변수를 HOME사용자의 홈 디렉토리 경로로 설정합니다. 다른 파일(예: 및 )도 /etc/bash.bashrc마찬가지 입니다 ~/.bashrc. 많은 애플리케이션에는 사용자 홈 디렉터리 아래에 시스템 전체 구성 파일이 있고 /etc사용자 홈 디렉터리 아래에 사용자별 구성 파일이 있습니다.

그룹에는 유사한 메커니즘이 없습니다. 그룹에는 홈 디렉터리가 없습니다. 따라서 그룹의 모든 사용자에게 프로필을 적용하는 직접적인 방법은 없습니다.

다른 답변에서 알 수 있듯이 조건문 내의 시스템 전체 쉘 초기화 파일에 명령을 추가하여 사용자가 특정 그룹에 속할 때만 실행되도록 할 수 있습니다. 사용자는 여러 그룹에 속할 수 있습니다. 그룹이 사용자의 기본 그룹이거나 사용자가 해당 그룹에 속할 때마다 명령을 실행하는 것은 사용자의 몫입니다.

case "$(id -gn)" in
  foo) somecommand;; # the user's primary group is foo
esac
case ":$(id -Gn | tr \\n :)" in
  *:foo:*) somecommand;; # the user belongs to the group foo
esac

.profile와 의 차이점은 .bashrc다음을 참조하세요.모든 쉘이 읽을 수 있는 ".bashrc"에 해당하는 파일이 있습니까?

답변3

다음과 같이 추가할 수 있습니다 /etc/bash.bashrc.

# running group-based bashrcs

for group in $(id -Gn); do
  group_bashrc=/etc/bashrc-by-group/$group
  if [ -f "$group_bashrc" ] && [ -r "$group_bashrc" ]; then
    command . "$group_bashrc"
  fi
done

그런 다음 하나를 만들고 거기에 /etc/bashrc-by-group/mygroup그룹 구성원의 초기화를 넣을 수 있습니다 mygroup.

그룹이 잘 길들여져 있다고 가정합니다. 그룹 이름에는 공백, 슬래시 또는 와일드카드가 포함되지 않고 .OR 도 아니며 ..그룹 이름과 그룹 ID 간에 일대일 매핑이 있습니다. 그렇지 않은 경우 id -G대신 사용 id -Gn하고 를 사용할 수 있습니다 /etc/bashrc-by-group/groupid.

답변4

다음 항목에 추가할 수도 있습니다 /etc/profile.d/yourscript.sh.

echo " $(groups) "|fgrep -q ' group '
if [ $? = 0 ] ; then
  test -r /path/.group_profile && source /path/.group_profile
fi

이는 profile파일 자체를 변경하는 것보다 더 깔끔할 수 있습니다.

관련 정보