사용자가 자신의 계정을 만들도록 허용할 수 있나요?

사용자가 자신의 계정을 만들도록 허용할 수 있나요?

저는 40명이 넘는 학생들에게 프로그래밍 과정을 가르치고 있습니다. 임대한 Linux 웹 서버에 프로젝트를 업로드하길 원합니다. 그래서 저는 각 학생이 서버에 사용자 계정을 생성하기를 원합니다. 각 사용자를 수동으로 생성하고 싶지 않습니다 adduser.

학생들에게 루트 액세스 권한을 부여하지 않고 자신의 계정을 만들도록 허용할 수 있습니까?

답변1

예. 기본 모듈이 아닌 다른 PAM 모듈 pam_unix.so과 기본 모듈이 아닌 다른 NSS 모듈을 사용할 수 있습니다 files.

귀하가 교육 기관에 있는 경우 학생들은 이미 공통 디렉터리에 LDAP 액세스 가능한 계정을 가지고 있을 가능성이 높습니다. 이 경우 친구 pam_ldap로서 nss_ldap귀하는 정의된 모든 사용자가 귀하의 잠재적인 계정인 디렉토리에 시스템을 연결하기만 하면 됩니다. MS AD와 같이 널리 사용되는 디렉터리에는 전용 PAM 및 NSS 공급자와 구성 및 관리를 더 쉽게 만들고 그룹 정책과 같은 추가 기능을 제공하는 지원 소프트웨어가 있습니다.

pam_mysql그렇지 않은 경우 및 같은 RDBMS 모듈을 사용하여 nss_mysql데이터베이스의 특정 테이블에 대한 시스템 인증 및 사용자 조회를 제공할 수 있습니다. 데이터베이스의 기록은 StackExchange 웹사이트에 등록할 때 사용하는 것과 마찬가지로 셀프 서비스 등록 웹 양식을 통해 생성할 수 있으며 유사한 양식을 사용하여 비밀번호 재설정/변경을 제공할 수 있습니다.


여기에 약간의 경고가 있습니다. 이와 같은 솔루션을 구축할 때 인증을 제공하는 동일한 서버에서 MariaDB를 호스팅하는 데 문제가 있다는 것을 알았습니다. 시작에 실패했습니다. 아마도 내 문제는 고급 PAM 구성을 사용하여 해결될 수 있지만 그럼에도 불구하고 근처 클러스터에서 호스팅할 수 있었기 때문에 큰 문제는 아닙니다. YMMV.

답변2

정의된 로그인 데이터베이스를 연결하지 않으려면 언제든지 bash 스크립팅을 사용하여 사용자 생성을 스크립팅할 수 있습니다. 모든 사용자 이름과 임시 비밀번호가 포함된 텍스트 파일을 만든 다음 bash 스크립트를 사용하여 이를 반복하는 것은 충분히 간단합니다. 그런 다음 해당 텍스트 파일을 인쇄하고 종이를 오려낸 후 학생들에게 임시 비밀번호를 나눠주고 들어가서 변경하게 하세요.

추가하려는 사용자 이름 목록으로 시작하세요: users.txt (파일의 각 줄은 추가하려는 사용자 이름입니다)

user1
user2
user3

그런 다음 bash 스크립트: addusers.sh

#!/bin/bash

# reads your user.txt file while removing carriage returns
users=$(cat users.txt | tr -d '\r') 

# loop over each line in your user.txt file and adds that line as a user
for user in $users; do
# creates the user
sudo useradd -m "$user"
# user has no password
sudo passwd -d "$user"
done

sudo 권한이 있는 계정을 사용하여 서버에 로그인한 상태에서 실행하여 chmod u+x addusers.sh스크립트를 실행 가능하게 만든 다음 해당 스크립트를 실행합니다../addusers.sh

보너스: 연말에 서버를 정리하고 싶을 때 스크립트를 사용하여 해당 사용자를 모두 지울 수도 있습니다(실수로 삭제하지 않도록 삭제하려는 사용자에 대해 다른 파일을 사용하는 것이 좋습니다) 아직 계정을 사용하고 있는 사용자)

#!/bin/bash

users=$(cat delusers.txt | tr -d '\r')

for user in $users; do
sudo deluser --remove-home "$user"
done

참고: 이 모든 파일은 동일한 폴더에 저장되어야 합니다.

관련 정보