![chroot 환경에 사용자 추가](https://rvso.com/image/1263752/chroot%20%ED%99%98%EA%B2%BD%EC%97%90%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%B6%94%EA%B0%80.png)
저는 최소한의 우분투를 기반으로 schroot와 debrootstrap을 사용하여 우분투에서 chroot 시스템을 만들었습니다. 그러나 이 chroot 환경에 새 사용자를 추가할 수 없는 것 같습니다. 일어나는 일은 다음과 같습니다.
- 루트로 schroot를 입력하고 새 사용자를 추가합니다.(adduser 및 useradd 명령을 모두 시도했습니다)
- 사용자 이름은 /etc/passwd 파일에 나열되며 새 사용자로 'su'할 수 있습니다. 여태까지는 그런대로 잘됐다.
- schroot에서 로그아웃하고 schroot에 다시 로그인하면 내가 생성한 사용자가 사라졌습니다!! /etc/passwd에도 해당 사용자에 대한 언급이 없습니다.
새 사용자를 영구 사용자로 만들려면 어떻게 해야 합니까?
답변1
아, 제가 직접 알아냈어요. Schroot에는 현재 환경을 보존할 수 있는 "세션"이라는 기능이 있습니다. "세션"을 생성하지 않고 로그아웃할 때마다 schroot는 모든 것을 정리된 상태로 가져오고 사용자도 삭제합니다. 다음을 사용하여 세션을 시작할 수 있습니다.
schroot -c mychroot -b
답변2
사실 더 나은 해결 방법이 있는데 제가 찾았습니다.슈루트 FAQ, 섹션에서schroot가 chroot의 구성 파일을 덮어쓰는 이유는 무엇입니까?
기본적으로 schroot는 시스템 NSS 데이터베이스('passwd', 'shadow', 'group', 'gshadow', 'services', 'protocols', 'networks' 및 'hosts' 등)를 chroot에 복사합니다. . 그 이유는 chroot 환경이 완전히 별개의 시스템이 아니기 때문에 복사하면 동기화가 유지되기 때문입니다. 그러나 이것이 항상 바람직한 것은 아니며, 특히 chroot에 패키지를 설치하면 호스트에 없는 시스템 사용자 및 그룹이 생성됩니다. 이는 다음에 데이터베이스를 복사할 때 사라지기 때문입니다..
간단히 말해서:새로운 schroot 세션을 시작할 때마다 또는 호스트 시스템 재부팅 후 schroot는 /etc/passwd
실제 시스템에서 기타 파일을 가져와 chroot에 복사하므로 모든 새 사용자를 잃게 됩니다. 제안된 해결 방법은 이 FAQ에 설명되어 있습니다. 이 파일 복사를 비활성화할 수 있습니다.
- 개방형
/etc/schroot/default/nssdatabases
(물론 실제 시스템에서) - 소위 목록이 표시됩니다.NSS 데이터베이스, 실제 시스템에서 복사됩니다.
- 주석 라인
passwd
,group
및shadow
, 파일은 다음과 같습니다.
/etc/schroot/default/nss데이터베이스
# System databases to copy into the chroot from the host system.
#
# <database name>
#passwd
#shadow
#group
services
protocols
networks
hosts
이제 chroot로 돌아가서 일부 사용자를 생성하거나 일부 postgresql 등을 설치하면 새 사용자가 손실되지 않습니다. 재부팅 후에도!