/ etc / group에서 두 번째 필드의 의미는 무엇입니까?


18

샘플 /etc/group파일에는 다음 항목이 포함되어 있습니다.

root:*:0:
adm:!:4:logcheck
antoine:x:1000:

내가 읽은 맨 페이지 (Debian & OSX)에 따르면 두 번째 필드는 그룹 비밀번호를 저장하는 것입니다. 그것들이 거의 사용되지 않기 때문에 별표 *나 a x는 보통 비워 두지 않고 그 안에 넣습니다.

또한 shadow매뉴얼 페이지에는이 두 번째 필드가 crypt함수 의 결과를 저장해야한다고 나와 있습니다. 잘못된 결과가 저장되면 (예 : *또는 !) 비밀번호를 인증 방법으로 사용할 수 없습니다.

그 대기는 마찬가지합니까 group뿐만 아니라 파일? 내 group파일 에서 3 개의 다른 문자로 끝나는 이유는 무엇 입니까? 모든 것을 안전하게 변경할 수 있습니까 *?


그것들을 모두로 바꾸면 무엇을 성취 할 수 *있을까요?
jordanm

!현재 관리하고있는 10+ 중 하나의 단일 서버에서 단일 그룹에 사용되는 것을보고 있습니다. 일부 검사 스크립트의 단순성을 위해 항상 동일한 문자를 사용하면 문제가 해결됩니다. 물론 그것이 실제로 동일한 것을 의미한다면.
Tonin

답변:


28

당신은 !, *또는 x여기에 특별한 의미 가 있다고 생각하고 있으므로 , 그들 사이에 약간의 차이가 있을까 걱정하고 있습니다.

사실이 문자는 단순히 서양의 눈에 띄기 때문에 단순히 선택됩니다. 이러한 문자는 결 측값, 예외 경우 또는 경고를 나타냅니다. 당신은 둘 수 있었다 boogabooga여기가 정확히 같은 효과를.

이것은 유닉스 타입 시스템에서 암호가 처리되는 방식 때문입니다. 시스템은 암호 입력을 받으면 해시 하여 저장된 해시와 비교합니다. 따라서 여기서 중요한 것은 유효한 암호 해시가 될 수없는 문자 또는 일련의 문자를 사용한다는 것입니다. (명백한 이유로 콜론을 포함해서는 안됩니다.)

핵심 OS의 관점에서이 문자들 사이에는 차이가 없지만 몇 가지 규칙이 있습니다.

  • 리눅스 pwconv(8)프로그램이을 볼 때, x"이 공용 암호 해시를 이미 섀도 암호 파일로 옮겼습니다"라는 의미입니다.

    (하늘의 도움을 당신을하거나 변환하는 일이기 때문 연습에서 중요한 그렇지 않다 에서 그림자 암호) 지금 우리 뒤에 있습니다.

  • usermod -L또는 passwd -l사용자 를 사용 하거나 잠그는 경우 "이 해시를 끊어 더 이상 일치하지 않습니다"라는 규칙이 있기 때문에 !특별한 의미가 /etc/shadow있습니다.

    저장된 해시에 다른 문자를 추가하면 마찬가지로 해시됩니다. 이 규칙을 위반하면 단순히 방지 usermod -U또는 passwd -u에서 잠금 해제 사용자의 로그인을. 마찬가지로, 가짜 캐릭터를 추가하여 손으로 고정했기 때문에 제거하여 손으로 잠금을 해제 할 수 있습니다.

    그러나이 질문에 관해서는 사소한 것입니다. 에 groupmod -L또는 이 (가 gpasswd -l) 있으므로 !컨벤션 이 없습니다 /etc/group.

    더 퀴즈 : 당신이 경우에 하는 손으로 잠금 사용자 계정에 가고, 당신은 멀리해야 [A-Za-z0-9/\]하는 해시 법률 문자이기 때문에, 세트. 그것이 대신에 여기서 usermod사용하는 한 가지 이유 !입니다 x.

기분이 나아지면 모든 /etc/group비밀번호 필드 를 정규화하는 데 아무런 문제가 없습니다 . 그렇게함으로써 이미 파일을 직접 해킹하고 있다고 말하고 있기 때문에 어쨌든 차이점을 신경 쓰는 도구를 사용하는 것은 아닐 것입니다. 어쨌든 변경 사항은 일상적인 시스템 작동에 영향을 미치지 않습니다.


완전한 답변을 주셔서 감사합니다. 현재 서버에서 사용자와 그룹을 확인하는 스크립트를 작성하고 있으며 해당 필드에서 다른 문자 또는 문자 시퀀스를 찾을 수 있는지 알고 싶었습니다. 당신의 대답과 그렇게 사소한 세부 사항으로부터, 나는 이것에 대해 훨씬 더 잘 볼 수 있습니다. 다시 감사합니다!
Tonin

1
스크립팅의 경우 아마도 전화를 걸고 getpwent(3)친구가 되어야합니다 . Perl은 다른 Unix sysadmin에 중점을 둔 스크립팅 언어와 마찬가지로 표준 라이브러리에 래퍼를 가지고 있습니다. 그러한 래퍼가없는 언어를 사용하는 경우, 이는 교환하기에 좋은 구실입니다. :)
Warren Young

당신은 여전히 ... 거의 6 세 대답 해 주셔서 감사합니다 일을 읽고 있다면, 나는 역사적인 이유 사람들 중 일부는 같은 것을 사용을 참조 x하고 *에 "사용하지 않는"암호 필드를 표시 할 수 있습니다. 그러나 궁금한 점은 매뉴얼 페이지에 필드가 비어있을 수 있다고 말합니다 (데이터베이스 필드에서 NULL이라고 할 수 있음-특히 NULL과 빈 문자열을 동일하게 정의하는 Oracle의 경우). 다시 / etc / group으로 돌아갑니다 . 필드를 비워 두지 않고 왜 xor !또는을 사용 *합니까? 이 문자들과 마찬가지로 두 개의 연속 콜론이 눈에 stand니다. 중요하지 않음-그냥 궁금합니다
mathguy 23.40에

1
@mathguy : 빈 비밀번호 필드는 "비밀번호 없음"을 의미하며 실제 비밀번호와 절대 일치 할 수없는 문자를 포함하는 비밀번호 필드와는 다릅니다. 대부분의 유닉스 시스템은 그룹 암호를 사용하지 않기 때문에 별다른 차이가 없지만, 대부분의 Linux 시스템에서와 같이 문제를 일으키는 습관을 개발하고 싶지는 않습니다 /etc/shadow. 또한 이중 콜론이 분명하다는 개념을 거부합니다. 빈 필드는 몇 개 ::::::입니까? 이제 몇 명 :x:*:!:x:*:입니까? 같은 수의 콜론이지만 다른 답변은 믿습니다.
워렌 영
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.