루트 비밀번호를 제공할 때 다음 명령이 실패를 보고하는 이유가 궁금합니다.
$ su postgres Password: su: Authentication failure
이 올바른지
su
루트 비밀번호를 물어보세요,아니요postgres
?그렇다면
postgres
postgreSQL을 설치할 때 postgresql 서버에 연결하기 위한 로그인을 설정하지 않았고postgres
Ubuntu에서 명시적으로 사용자를 생성하지 않았습니다. 비밀번호는 무엇입니까?존재하다
/etc/passwd
postgres:x:124:133:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
존재하다
/etc/shadow
:postgres:*:17478:0:99999:7:::
실제로 불가능하다면
su postgres
일반적으로su
대상 사용자는 무엇으로 전환할 수 있습니까?그들은 또한 ID가 매개변수로 setuid()일 수 있는 사용자입니다. 이것이 맞습니까?
APUE를 통해 유효한 로그인 쉘 명령 없이 로그인하면 로그인할 수 없다는 것을 배웠습니다. 그들
su
도 편집할 수 있나요? 하지만postgres
유효한 로그인 셸 명령이 있는데/bin/bash
왜 그럴 수 없습니까su postgres
?
감사해요.
답변1
두 번째 필드 보기 /etc/shadow
:
postgres:*:17478:0:99999:7:::
일반적으로 비밀번호는 암호화되어 있지만 여기에는 별표만 있습니다. 이는 계정이 잠겨 있음을 의미하며 비밀번호는 허용되지 않습니다. 이는 비밀번호가 할당되기 전의 새 계정 상태입니다.
현재 잠긴 사용자 계정으로 전환하려면 대상 계정의 비밀번호가 필요하지 않은 전환 방법이 필요합니다. 의 경우 su
이는 먼저 완전한 루트가 되어야 함을 의미합니다.
비밀번호 인증으로 인해 계정이 잠겨 있는 경우에도 계정에 sudo
접근할 수 있도록 구성할 수 있습니다 . postgres
줄 /etc/sudoers
은 다음과 같습니다.
Tim ALL=(postgres) ALL
sudo
해당 명령줄 su postgres
은 입니다 sudo -u postgres -s
. 참고: 이 방법에서는 원래 계정의 일부 환경 설정이 사용자 세션에서 계속 사용될 수 있습니다 postgres
. 이것을 원할 수도 있고 원하지 않을 수도 있습니다. 쉘/환경이 모두 sudo
이 계정을 사용하고 개인 기본 설정이 다른 두 명 이상의 데이터베이스 관리자가 있는 경우 실제로 유용할 수 있습니다 postgres
.
postgres
사용자가 직접 로그인한 경우와 동일한 환경을 원하는 경우 sudo -u postgres -i
(와 동일 su - postgres
) 을 사용할 수도 있습니다.
하지만 작동시키려면 su postgres
사용자의 비밀번호를 설정하기만 하면 됩니다 postgres
. 이는 passwd postgres
루트로 실행하여 달성할 수 있습니다.
답변2
postgres 사용자에게 비밀번호를 제공하면 안 됩니다. 이제 누군가가 해당 사용자로 로그인하여 원하는 모든 작업을 수행할 수 있으므로 이는 보안 결함으로 간주됩니다. 대신 이 사용자에게 sudo 권한을 부여하고 다음과 같은 구조를 사용해야 합니다.
sudo -u postgres psql ...