linuxfromscratch:12.1:097-shadow-4.14.5

Linux From Scratch - Version 12.1-systemd
Chapter 8. Installing Basic System Software
이전 위로 / 처음으로 다음
Libxcrypt-4.4.36 GCC-13.2.0

Shadow 패키지에는 비밀번호를 안전하게 처리하기 위한 프로그램이 포함되어 있습니다.

  • 빌드 시간: 0.1 SBU
  • 디스크 공간: 49 MB

참고
강력한 암호 사용을 강제하려면 Shadow를 빌드하기 전에 CrackLib-2.9.11 BLFS를 참조해서 CrackLib를 설치해야 합니다. 그리고 아래 설명 명령에 –with-libcrack을 추가합니다.

Coreutils가 더 나은 버전을 제공하므로 group 프로그램과 해당 man 페이지의 설치를 비활성화합니다. 또한 8.3, "Man-pages-6.06"에서 이미 설치된 man 페이지를 덮어쓰는 것을 방지합니다.

sed -i 's/groups$(EXEEXT) //' src/Makefile.in
find man -name Makefile.in -exec sed -i 's/groups\.1 / /'   {} \;
find man -name Makefile.in -exec sed -i 's/getspnam\.3 / /' {} \;
find man -name Makefile.in -exec sed -i 's/passwd\.5 / /'   {} \;

기본 암호 방식을 사용하는 대신 8자 이상의 암호도 허용하는 훨씬 더 안전한 YESCRYPT 방식의 암호 암호화를 사용하세요. 또한 Shadow가 기본적으로 사용하는 사용자 사서함의 /var/spool/mail 위치를 현재 사용되는 /var/mail 위치로 변경해야 합니다. 그리고 /bin/sbin/usr에 있는 해당 위치에 대한 심볼릭 링크일 뿐이므로 PATH에서 제거하세요.

참고
/bin 및/또는 /sbinPATH에 포함하려면 LFS를 빌드한 후 .bashrc에서 PATH를 수정하세요.

sed -e 's:#ENCRYPT_METHOD DES:ENCRYPT_METHOD YESCRYPT:' \
    -e 's:/var/spool/mail:/var/mail:'                   \
    -e '/PATH=/{s@/sbin:@@;s@/bin:@@}'                  \
    -i etc/login.defs

참고
Shadow에 Cracklib 지원을 추가해서 빌드하기로 한 경우, 다음과 같이 실행하세요.

sed -i 's:DICTPATH.*:DICTPATH\t/lib/cracklib/pw_dict:' etc/login.defs

Shadow 컴파일을 준비합니다.

touch /usr/bin/passwd
./configure --sysconfdir=/etc   \
            --disable-static    \
            --with-{b,yes}crypt \
            --without-libbsd    \
            --with-group-name-max-length=32

configure 옵션 설명

  • touch /usr/bin/passwd
    일부 프로그램에서는 해당 위치가 하드코딩 되어있기 때문에 /usr/bin/passwd 파일이 존재해야 하며, 파일이 존재하지 않으면 설치 스크립트가 잘못된 위치에 파일을 생성합니다.
  • –with-{b,yes}crypt
    셸은 이 스위치를 두 개의 스위치, –with-bcrypt–with-yescrypt로 확장합니다. 이를 통해 섀도우는 Libxcrypt에서 암호 해싱을 위해 구현한 Bcrypt 및 Yescrypt 알고리즘을 사용할 수 있습니다. 이러한 알고리즘은 기존 SHA 알고리즘보다 더 안전합니다(특히 GPU 기반 공격에 훨씬 더 강합니다).
  • –with-group-name-max-length=32
    허용되는 사용자 이름의 최대 길이는 32자입니다. 그룹 이름의 최대 길이를 동일하게 설정합니다.
  • –without-libbsd
    LFS에 없는 libbsd의 readpassphrase 함수를 사용하지 않도록 합니다. 대신 소스에 포함된 복사본을 사용합니다.
  • –with-libcrack
    Cracklib에 대한 지원을 추가합니다.

패키지를 컴파일합니다.

make

이 패키지는 테스트 스위트를 제공되지 않습니다.

패키지를 설치합니다.

make exec_prefix=/usr install
make -C man install-man


이 패키지에는 사용자 및 그룹을 추가, 수정, 삭제하고, 비밀번호를 설정 및 변경하고, 기타 관리 작업을 수행하는 유틸리티가 포함되어 있습니다. 비밀번호 섀도잉의 의미에 대한 자세한 설명은 압축을 푼 소스 트리에 있는 doc/HOWTO 파일을 참조하세요. Shadow 지원을 사용하는 경우 비밀번호를 확인해야 하는 프로그램(디스플레이 관리자, FTP 프로그램, pop3 데몬 등)은 반드시 Shadwo와 호환되어야 한다는 점에 유의하세요. 즉, Shadow로 처리된 비밀번호로 작업할 수 있어야 합니다.

Shadow 비밀번호를 사용하려면 다음 명령을 실행하세요.

pwconv

섀도화된 그룹 비밀번호를 사용하려면 다음 명령을 실행합니다.

grpconv

useradd 유틸리티에 대한 섀도우의 기본 구성에 대한 설명이 필요합니다. 먼저, useradd 유틸리티의 기본 동작은 사용자와 동일한 이름의 사용자와 그룹을 만드는 것입니다. 기본적으로 사용자 ID(UID) 및 그룹 ID(GID) 번호는 1000부터 시작됩니다. 즉, useradd에 추가 매개변수를 전달하지 않으면 각 사용자는 시스템에서 고유한 그룹의 멤버가 됩니다. 이라한 동작을 원하지 않는 경우 useradd-g 또는 -N 매개변수를 전달하거나 /etc/login.defs에서 USERGROUPS_ENAB의 설정을 변경해야 합니다. 자세한 내용은 useradd(8)을 참조하세요.

둘째, 기본 매개변수를 변경하려면 /etc/default/useradd 파일을 생성하고 필요에 맞게 조정해야 합니다. 다음과 같이 생성합니다.

mkdir -p /etc/default
useradd -D --gid 999

/etc/default/useradd 매개변수 설명

  • GROUP=999
    /etc/group 파일에서 사용되는 사용자 그룹 번호의 시작을 설정합니다. 특정 값 999는 위의 –gid 매개변수에서 가져온 것입니다. 원하는 값으로 설정할 수 있습니다. useradd는 UID 또는 GID를 재사용하지 않는다는 점에 유의하세요. 이 매개변수에서 식별된 번호가 사용되면 사용 가능한 다음 번호를 사용합니다. 또한 시스템에 이 번호와 동일한 ID를 가진 그룹이 없는 경우 -g 매개변수 없이 useradd를 처음 사용하면 계정이 올바르게 생성되었더라도 오류 메시지(useradd: 알 수 없는 GID 999)가 생성됩니다. 그렇기 때문에 7.6. "필수 파일 및 심볼 링크 만들기" 에서 이 그룹 ID로 사용자 그룹을 만들었습니다.
  • CREATE_MAIL_SPOOL=yes
    useradd가 새로운 사용자에 대한 사서함 파일을 만듭니다. useradd는 이 파일의 그룹 소유권을 0660 권한이 있는 mail 그룹에 할당합니다. 이러한 파일의 생성을 원하지 않는다면 다음과 같이 실행하세요.
    sed -i '/MAIL/s/yes/no/' /etc/default/useradd
    

사용자 root의 비밀번호를 설정합니다.

passwd root


  • 설치된 프로그램:
    chage, chfn, chgpasswd, chpasswd, chsh, expiry, faillog, getsubids, gpasswd, groupadd, groupdel, groupmems, groupmod, grpck, grpconv, grpunconv, login, logoutd, newgidmap, newgrp, newuidmap, newusers, nologin, passwd, pwck, pwconv, pwunconv, sg (newgrp에 링크), su, useradd, userdel, usermod, vigr (vipw에 링크) 및 vipw
  • 설치된 디렉터리
    /etc/default 및 /usr/include/shadow
  • 설치된 라이브러리
    libsubid.so

간략한 설명

  • chage
    의무적인 비밀번호 변경 사이의 최대 일수를 변경하는 데 사용됩니다.
  • chfn
    사용자의 전체 이름 및 기타 정보를 변경하는 데 사용됩니다.
  • chgpasswd
    배치 모드에서 그룹 비밀번호를 업데이트하는 데 사용됩니다.
  • chpasswd
    배치 모드에서 사용자 비밀번호를 업데이트하는 데 사용됩니다.
  • chsh
    사용자의 기본 로그인 셸을 변경하는 데 사용됩니다.
  • expiry
    현재 비밀번호 만료 정책을 확인하고 적용합니다.
  • faillog
    로그인 실패 로그를 검사하고, 계정이 차단되기 전 최대 실패 횟수를 설정하고, 실패 횟수를 재설정하는 데 사용됩니다.
  • getsubids
    사용자의 하위 아이디 범위를 나열하는 데 사용됩니다.
  • gpasswd
    그룹에 멤버와 관리자를 추가 및 삭제하는 데 사용됩니다.
  • groupadd
    주어진 이름으로 그룹을 생성합니다.
  • groupdel
    주어진 이름의 그룹을 삭제합니다.
  • groupmems
    사용자가 수퍼유저 권한 없이도 자신의 그룹 멤버십 목록을 관리할 수 있도록 합니다.
  • groupmod
    지정된 그룹의 이름 또는 GID를 수정하는 데 사용됩니다.
  • grpck
    그룹 파일 /etc/group 및 /etc/gshadow의 무결성을 확인합니다.
  • grpconv
    일반 그룹 파일에서 섀도 그룹 파일을 만들거나 업데이트합니다.
  • grpunconv
    /etc/gshadow에서 /etc/group을 업데이트한 다음 /etc/gshadow를 삭제합니다.
  • login
    사용자가 로그온할 수 있도록 시스템에서 사용한다.
  • logoutd
    로그온 시간 및 포트에 대한 제한을 적용하는 데 사용되는 데몬입니다.
  • newgidmap
    사용자 네임스페이스의 gid 매핑을 설정하는 데 사용됩니다.
  • newgrp
    로그인 세션 중에 현재 GID를 변경하는 데 사용됩니다.
  • newuidmap
    사용자 네임스페이스의 UID 매핑을 설정하는 데 사용됩니다.
  • newusers
    일련의 연속적인 사용자 계정을 만들거나 업데이트하는 데 사용됩니다.
  • nologin
    계정을 사용할 수 없다는 메시지를 표시하며, 비활성화된 계정의 기본 셸로 사용하도록 설계되었습니다.
  • passwd
    사용자 또는 그룹 계정의 비밀번호를 변경하는 데 사용됩니다.
  • pwck
    암호 파일 /etc/passwd 및 /etc/shadow의 무결성을 확인합니다.
  • pwconv
    일반 비밀번호 파일에서 섀도 비밀번호 파일을 생성하거나 업데이트합니다.
  • pwunconv
    /etc/shadow에서 /etc/passwd를 업데이트한 다음 /etc/shadow를 삭제합니다.
  • sg
    사용자의 GID가 지정된 그룹의 GID로 설정된 상태에서 지정된 명령을 실행합니다.
  • su
    대체 사용자 및 그룹 ID로 셸을 실행합니다.
  • useradd
    주어진 이름으로 새 사용자를 만들거나 기본 새 사용자 정보를 업데이트합니다.
  • userdel
    지정된 사용자 계정을 삭제합니다.
  • usermod
    지정된 사용자의 로그인 이름, 사용자 식별(UID), 셸, 초기 그룹, 홈 디렉토리 등을 수정하는 데 사용됩니다.
  • vigr
    /etc/group 또는 /etc/gshadow 파일을 편집합니다.
  • vipw
    etc/passwd 또는 /etc/shadow 파일을 편집합니다.
  • libsubid
    사용자 및 그룹의 하위 ID 범위를 처리합니다.
  • linuxfromscratch/12.1/097-shadow-4.14.5.txt
  • 마지막으로 수정됨: 2024/06/15 11:40
  • 저자 baecy