왜 `su postgres`를 할 수 없나요?

왜 `su postgres`를 할 수 없나요?
  1. 루트 비밀번호를 제공할 때 다음 명령이 실패를 보고하는 이유가 궁금합니다.

    $ su postgres
    Password: 
    su: Authentication failure
    

    이 올바른지su루트 비밀번호를 물어보세요,아니요 postgres?

    그렇다면 postgrespostgreSQL을 설치할 때 postgresql 서버에 연결하기 위한 로그인을 설정하지 않았고 postgresUbuntu에서 명시적으로 사용자를 생성하지 않았습니다. 비밀번호는 무엇입니까?

    존재하다/etc/passwd

    postgres:x:124:133:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash
    

    존재하다 /etc/shadow:

    postgres:*:17478:0:99999:7:::
    
  2. 실제로 불가능하다면 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 ...

관련 정보