bash 구성 파일을 자동으로 생성하시겠습니까?

bash 구성 파일을 자동으로 생성하시겠습니까?

이 훌륭한 연습의 지침을 따르십시오.여기.

내 도메인을 인증하도록 CentOS 6.5 서버를 성공적으로 구성했습니다. 게다가, 그것은오직이 그룹의 도메인 사용자가 domain-ssh-usersSSH를 통해 로그인하도록 허용합니다. 퍼즐 조각이 하나 더 필요해요.

도메인 사용자가 SSH를 통해 처음으로 로그인하면 해당 사용자를 위한 홈 디렉터리가 자동으로 생성됩니다(위에 게시한 연습에 따라). domain-ssh-users그러나 그룹의 도메인 사용자를 위해 생성된 모든 홈 디렉토리의 경우아니요.bash_profile로컬 사용자의 경우 특정 사용자를 만들고 싶습니다 . "쉬운" 부분은 .bash_profile모든 것이 동일하다는 것입니다 domain-ssh-users.

누구든지 이 문제를 해결하는 방법에 대한 단서를 줄 수 있습니까?

편집하다: 로컬 로그인과 도메인 로그인의 환경 변수 차이입니다.

이러한 차이점(보안상의 이유로 난독화됨)을 제외하면 모든 것이 거의 동일합니다.

로컬 사용자:

PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/LOCALUSER/bin
PWD=/home/LOCALUSER
HOME=/home/LOCALUSER
LOGNAME=LOCALUSER

도메인 사용자:

PATH=/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/local.mydomainname.com/DOMAINUSER/bin
PWD=/home/local.mydomainname.com/DOMAINUSER
KRB5CCNAME=FILE:/tmp/krb5cc_gibberish_8839
HOME=/home/local.mydomainname.com/DOMAINUSER

그럼... 음, 어쩌면 꽤 간단할 수도 있겠네요. /home사용자가 내부에 있는지 또는 외부에 있는지에 따라 bash 생성 스크립트에서 다른 bash_profile을 사용하도록 할 수 있습니까 /home/local.mydomainname.com?

편집 2:

그래서 이것을 .bash_profile테스트로 생성하고 로컬 사용자와 도메인 사용자를 위해 /home 디렉토리에 넣어 보았습니다.

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
       . ~/.bashrc
fi

env='env'

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

if echo $env grep -q "local.mydomain.com"
       then
               umask 000
               /domain/menu.sh
               clear;exit
fi

하지만 이제 로컬 사용자나 도메인 사용자로 로그인하면 menu.sh가 시작됩니다. 저는 이 .bash_profile 생성을 처음 접했기 때문에 간단한 것이 빠졌다고 확신합니다.

답변1

.bash_profile파일을 에 넣으세요 /etc/skel/. 기본적으로 새 사용자 프로필을 위한 템플릿 디렉터리입니다. $HOME새 사용자가 생성되고 디렉터리가 있으면 그 안의 모든 내용이 해당 디렉터리로 복사됩니다 $HOME. 이는 Windows의 기본 프로필과 유사합니다.

원격 사용자와 로컬 사용자 모두에 대해 동일한 파일을 사용하려면 원격 사용자만 설정한 변수를 찾아 적용하려는 기능/설정에 해당 변수에 대한 테스트를 포함시킵니다. 와 비슷한 것 SSH_CLIENT또는SSH_TTY

if [[ $SSH_CLIENT ]]; then
    setup foo for a remote user
else
    setup foo for a local user
fi

답변2

/etc/profile.d/디렉토리에는 user_login에서 실행되는 스크립트가 포함되어 있습니다. bash 구성 파일을 생성하려면 여기에서 스크립트를 생성하세요.

#!/bin/bash
export your environment variables here
or invoke a script that generates bash profile.

bash_profile 위치는 사용자 디렉터리(예: (/home/usr/.bash_profile))에 있어야 합니다.

bash_profile은 일반적으로 내보낸 환경 변수(예: 경로...) 목록입니다.

export VARENV="/path/to/object/"

답변3

사용자 계정을 도메인과 동기화하기 위한 SAMBA 매뉴얼 페이지

SAMBA 메일링 목록:: Active Directory D(omain)/C(컨트롤러)에 대해 도메인 사용자 상태 확인

이를 달성하는 한 가지 방법은 다른 답변에서 지적한 대로 /profile.d/ 디렉토리에 스크립트를 배치하는 것입니다.

도메인 멤버십 및 사용자 상태를 테스트한 다음 쿼리 결과에 따라 요구 사항을 충족하거나, 사용자가 도메인 권한 요구 사항을 충족하지 않는 경우 bash_profile을 생성하지 마세요.

배시 콘솔 명령

$> getent group

산출

Domain Admins:x:512:root
Domain Users:x:513:jht,lct,ajt,met,vlendecke
Domain Computers:x:553:
... ...
domain-ssh-users:x:55X:harry,mark,john

도메인 그룹 멤버십 테스트

DOMAIN_GROUPS=`getent group`
USERS_DOMAIN_SSH=`echo $DOMAIN_GROUPS | grep "domain-ssh-users" | sed 's/domain-ssh-users:x:55X://g`
USER=`last | head -n 1`
if [ `echo $DOMAIN_GROUPS | grep $USER` ]
then
#... Do add bash_profile.
else
#... Do not add bash_profile.
exit
fi

해키지만 가능합니다 ...

DOMAIN_GROUPS 할당에는 연결된 도메인 그룹 및 사용자가 나열됩니다. USER_DOMAIN_SSH는 DOMAIN_GROUPS를 읽고 도메인 ssh-user 줄을 제외한 모든 항목을 제거하며 스트리밍 텍스트 처리는 쉼표로 구분된 사용자를 제외한 모든 항목을 제거합니다. USER는 마지막으로 로그인한 사용자를 확인하고 최신 로그인을 읽습니다.

이 테스트는 USER의 DOMAIN_GROUPS 문자열을 확인합니다.

SAMBA 경로 내보내기 예

if [ $TEST_DOMAIN_USER_ACCESS_LEVEL ]
then
export PATH='/usr/local/samba/bin:\
/usr/local/samba/sbin:$PATH' >> /home/domain/user/.bash_profile && echo OK
else
exit
fi

삼바 그룹 관리

profile.d 스크립트

#!/bin/bash
env=`env`
#Store env to string then test for domain membership...
if echo $env grep -q "local.mydomainname.com"
  then
    user=`cat /var/log/auth | grep LOGIN | grep -o '.\{0,0\}:.\{0,100\} | sed 's/: //g' | grep -Eo '^[^ ]`
    # There's a step ^^ missing in this assignment to grab the first line matching a pattern. So here we are checking what user to build for.
    echo "Line 1 of ~/.bashrc" >> /home/mydomain/$user
    echo "Line 2 of ~/.bashrc" >> /home/mydomain/$user
  else
    echo "Do not build a ~./bashrc for non-domain users"
fi

관련 정보