문서의 이전 판입니다!
Linux From Scratch - Version 12.1-systemd | ||
---|---|---|
Chapter 8. Installing Basic System Software | ||
이전 | 위로 / 처음으로 | 다음 |
Libxcrypt-4.4.36 | GCC-13.2.0 |
8.27. Shadow-4.14.5
Shadow 패키지에는 비밀번호를 안전하게 처리하기 위한 프로그램이 포함되어 있습니다.
대략적인 빌드 시간: 0.1 SBU
필요한 디스크 공간: 49 MB
8.27.1. Shadow 설치
참고
강력한 암호 사용을 강제하려면 Shadow를 빌드하기 전에
CrackLib를 설치해서 강력한 암호 사용을 강제하려면 Shadow를 빌드하기 전에 CrackLib-2.9.11 BLFS를 참조하세요. 그런 다음 아래 구성 명령에 –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에 있는 해당 위치에 대한 심볼릭 링크일 뿐이므로 경로에서 제거하세요.
참고
어떤 이유로 /bin 및/또는 /sbin을 PATH에 포함하려면 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
참고
Cracklib 지원으로 Shadow를 빌드하기로 선택한 경우 다음 명령을 실행하세요:
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
새로운 구성 옵션의 의미는 다음과 같습니다:
- 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 함수를 사용하지 않도록 합니다. 대신 소스에 포함된 복사본을 사용합니다.
패키지를 컴파일합니다.
make
이 패키지는 테스트 스위트를 제공되지 않습니다.
패키지를 설치합니다.
make exec_prefix=/usr install
make -C man install-man
8.27.2. 섀도 구성하기
이 패키지에는 사용자 및 그룹을 추가, 수정, 삭제하고, 비밀번호를 설정 및 변경하고, 기타 관리 작업을 수행하는 유틸리티가 포함되어 있습니다. 비밀번호 섀도잉의 의미에 대한 자세한 설명은 압축을 푼 소스 트리에 있는 doc/HOWTO 파일을 참조하세요. Shadow 지원을 사용하는 경우 비밀번호를 확인해야 하는 프로그램(디스플레이 관리자, FTP 프로그램, 팝3 데몬 등)은 반드시 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
8.27.3. 루트 비밀번호 설정하기
사용자 root의 비밀번호를 선택하고 실행하여 설정합니다.
passwd root
8.27.4. 섀도우의 내용
- 설치된 프로그램:
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 범위를 처리합니다.