삼바 비밀번호는 방지되지만 안전한 스크립트 작성

삼바 비밀번호는 방지되지만 안전한 스크립트 작성

삼바 사용자 및 비밀번호에 추가 스크립트를 작성하고 싶습니다.

나는 here과 비슷한 해결책을 보았습니다.

비밀번호를 smbpasswd로 파이프

echo -ne "$PASS\n$PASS\n" | smbpasswd -a -s $LOGIN

그러나 비밀번호는 스크립트를 보는 모든 사람에게 표시됩니다. 해시를 어떻게 사용하고 비밀번호로 사용할 수 있나요?

답변1

smb.conf에 passdb backend = tdbsam설정한 시스템의 암호화된 비밀번호로 파일을 내보낼 수 있는 경우 다음을 사용하십시오.

sudo pdbedit -e smbpasswd:/tmp/smbpasswd

/tmp/smbpasswd그러면 사용자 이름과 해시가 포함된 파일이 생성됩니다 . 관심 없는 사용자가 포함된 줄을 쉽게 보고 삭제할 수 있는 텍스트 파일입니다.

다음 명령을 사용하여 사용자를 다시 가져올 수 있습니다.

sudo pdbedit -i smbpasswd:/tmp/smbpasswd -e tdbsam:/var/lib/samba/private/passdb.tdb

의 사용자는 /tmp/smbpasswdSamba 사용자 데이터베이스에 추가되거나 이미 존재하는 경우 덮어쓰게 됩니다.

/var/lib/samba/private/passdb.tdbUbuntu에 있는 Samba 사용자 데이터베이스 파일의 위치입니다.

답변2

스크립트에 비밀번호에 대한 액세스 권한이 있어야 합니다. 비밀번호의 해시는 사용할 수 없습니다. 사용하는 경우 해시는비밀번호는 해시가 있는 사람이라면 누구나 로그인할 수 있음을 의미합니다.

비밀번호를 별도의 파일에 넣고 스크립트에서 읽어야 합니다. 비밀번호를 정확하게 재현하도록 주의하세요(예: echo -e "$PASS"백슬래시 이스케이프를 해석하므로 를 사용하지 마세요 ).

IFS= read -r password </somewhere/private/file.password
printf '%s\n%s\n' "$password" "$password" | smbpasswd -a -s "$LOGIN"

또는

IFS= read -r password </somewhere/private/file.password
smbpasswd -a -s "$LOGIN" <<EOF
$password
$password
EOF

외부 명령에 전달된 인수는 명령이 실행되는 동안 다른 프로세스에서 볼 수 있으므로 printf셸의 외부 명령인 경우 첫 번째 해결 방법을 사용하지 마세요. 이제 대부분의 셸에는 이 기능 printf이 내장되어 있습니다. type명령을 사용하여 확인하거나 여기에서 문서를 확인하세요.

비밀번호가 포함된 파일은 스크립트를 실행해야 하는 사용자만 읽을 수 있는지 확인하세요. 물론 해당 사용자로 실행되는 모든 명령은 스크립트를 읽을 수 있습니다. 바람직하지 않은 경우 다른 사용자로 스크립트를 실행해야 합니다(또는 다른 격리 메커니즘을 사용하지만 별도의 사용자를 설정하는 것이 가장 쉽습니다). .

관련 정보