Linux : chsh 나 ypchsh가 작동하지 않습니다. 쉘을 변경할 수 있습니까?


8

나는 구식 유닉스 사람이므로 Linux 기술이 약간 오래된 것입니다. 그러나 이것은 충분히 간단해야합니다.

루트가없는 Red Hat Linux 시스템 (회사 IT 부서에서 관리)에서 로그인 쉘을 변경할 수 있기를 원합니다. chsh를 실행하면 다음이 제공됩니다.

$ chsh -s /bin/bash
chsh: can only change local entries; use ypchsh instead.

그래서 대신 ypchsh를 실행했습니다.

$ ypchsh userid
ypchsh: can't find the master ypserver: Internal NIS error

무엇을 제공합니까? 다른 아이디어가 있습니까?


3
당신이 있습니까 정말 NIS를 사용하고 계십니까? 아니면 LDAP와 같은 것입니까?
이그나시오 바스케스-아 브람스

NIS가이 시점에서 구식이 되었기 때문에 네트워크에서 LDAP를 사용하고 있다고 확신합니다.
오우거 시편 33

답변:


8
  • NIS : ypchsh

  • LDAP :

    $ ldapmodify <<EOF
    dn: YOUR_DN
    changetype: modify
    replace: loginShell
    loginShell: /bin/bash
    -
    EOF
    

    ( YOUR_DN 형식 일 수 있습니다 uid=$USER,ou=people,dc=example,dc=org. 보려고 ldapwhoami합니다)

  • Hesiod : 시스템 관리자에게 문의하십시오.

  • Active Directory : 시스템 관리자에게 문의하십시오.


동료가 LDAP라고 생각한다고 말했지만 ldapwhoami는 "ldap_sasl_interactive_bind_s : 알 수없는 인증 방법 (-6) 추가 정보 : SASL (-4) : 사용할 수있는 메커니즘 없음 :"을 제공하므로이 시점에서 Active Directory를 추측하고 있습니다. IT에 문의해야합니다.
오우거 시편 33

@Ogre : /etc/nsswitch.conf (행 'passwd')를 확인하십시오.
user1686 년

5

로그인시 쉘을 변경하기 위해 하나의 해결 방법을 사용했습니다. bash.profile파일 에서 쉘을 변경하는 데 사용되는 것을 넣었습니다 .

.profile사용자의 홈 디렉토리에서 찾을 수 있습니다 ls -la.

귀하의 .profile파일은 다음과 같은 것을 할 수 있습니다 :

PATH=/usr/bin
export PATH
#Add this to go bash at login
bash
#end

7
이것은 공정한 해결 방법입니다. 그러나 한 줄에 / usr / bin / bash 만있는 것이 더 쉽습니다. 또한 새 프로세스를 '실행'하여 현재 프로세스를 대체하는 것이 더 좋습니다.
피터 젠킨스

나는 .shellrc(올바른 파일 이름으로 변경) 과 동일 하지만 환경 변수를 exec bash설정하지 않은 경우에만 쉘을 수동으로 실행하고 불행한 루프를 방지하기 위해 환경 변수를 선언합니다 . 이러한 작업을 수행하기 위해 올바른 shebang으로 스크립트를 실행할 수 있으므로 특정 쉘 방언을 사용할 필요가 없습니다.
MayeulC

4

내 경우의 진정한 대답은 시스템 관리자 (IT)가 표준 구성을 잠그고 싶어하므로 요청해야한다는 것입니다. 그러나 프로세스에서 시스템이 동일한 SASL 오류 "ldap_sasl_interactive_bind_s : 알 수없는 인증 방법 (-6) 추가 정보를보고하는 경우를 대비하여 LDAP 구성을 파악하는 데 도움이되는 몇 가지 더 유용한 명령을 발견했습니다. : SASL (-4) : 사용 가능한 메커니즘이 없음 : "

시스템이 지원하는 SASL 인증 방법을 나열하십시오.

 ldapsearch -x -LLL -s "base" -b "" supportedSASLMechanisms

결과는 다음과 같습니다.

dn:
supportedSASLMechanisms: EXTERNAL
supportedSASLMechanisms: DIGEST-MD5

그런 다음 -Y 옵션을 사용하여 인증 방법을 LDAP 명령에 전달할 수 있습니다.

ldappasswd -Y DIGEST-MD5
ldapmodify -Y DIGEST-MD5

4

또 다른 해결책은 단순히 YP 쉘을 무시하는 것입니다.

이 줄을 다음에 추가하십시오 /etc/passwd.

+<USERNAME>::::::/bin/bash

예:

+psalm33::::::/bin/bash

그리고 당신의 다음을 추가하십시오 /etc/nsswitch.conf:

passwd: compat

passwd_compat: nis

언급했듯이 시스템에 루트가 없으므로 / etc의 파일은 편집을 위해 제한이 없습니다. 그러나이 답변은 비슷한 문제를 가진 다른 사람에게 도움이 될 수 있습니다.
Ogre Psalm33

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.