sudo su-postgres와 sudo -u postgres의 차이점은 무엇입니까?


35

PostgreSQL 사용자는 기본적으로 유닉스 소켓에서 인증을 피어링합니다. 여기서 유닉스 사용자는 PostgreSQL 사용자와 동일해야합니다. 따라서 사람들은 자주 수퍼 유저 가 su되거나 사용 sudo합니다 postgres.

나는 종종 다음과 같은 구문을 사용하는 사람들을 봅니다.

sudo su - postgres

오히려

sudo -u postgres -i

왜 그런지 궁금합니다. 마찬가지로, 나는 보았다 :

sudo su - postgres -c psql

대신에

sudo -u postgres psql

주요없이 이없는 오래된 플랫폼 인 경우 버전 어떤 의미를 만들 것입니다 . 그러나 왜 선사 시대 이전의 유닉스 나 리눅스보다 적게 사용 하겠습니까?sudosusudosudo su


답변:


39

잊다 sudo su

을 사용 sudo su하면 이점이 없으며 , 사람들이을 사용하는 데 익숙해 졌을 때의 구식 습관입니다 su. sudo리눅스 배포판이 루트 암호 설정을 중단 sudo하고 루트 계정에 액세스 할 수있는 유일한 방법을 만들었을 때 사람들 이 정면으로 치기 시작했습니다 . 그들은 습관을 바꾸지 않고 방금 사용했습니다 sudo su. ( sudoers구성이있는 상자를 사용할 때 상대적으로 최근까지 습관 중 하나를 강요 할 때까지 그중 하나였습니다 ).

사용하다 sudo -u

로그인 쉘의 경우을 sudo -u postgres -i선호합니다 sudo su - postgres. 사용자에게 루트 액세스 권한이 필요하지 않으며 사용자가 /etc/sudoers될 수있는 권한 만 있으면 postgres됩니다. 또한 더 나은 액세스 제어를 시행 할 수 있습니다.

명령 실행

sudo -u postgres psql -c "SELECT 1"

대안보다 우수합니다.

sudo su - postgres -c "psql -c \"SELECT 1\""

따옴표와 다른 셸 메타 문자를 이중 이스케이프 할 필요가 없으며 루트가 필요하지 않은 다른 보안 이점도 있습니다. 당신은 아마 실수로 글을 쓸 것입니다 :

sudo su - postgres -c psql -c "SELECT 1"

때로는 제대로 작동하지 않습니다.

마지막으로,를 통해 설정 환경 변수에 그것의 방법보다 쉽게 sudo, 예를 들어,

sudo PATH=/usr/pgsql-9.3/bin:$PATH -u postgres /usr/pgsql-9.3/bin/initdb -D /var/lib/pgsql/testcluster

통해보다 su. (여기서 올바른 실행 파일을 찾을 수 PATH있도록 설정이 필요합니다 ).initdbpostgres

그래서. 잊어 su명령이 존재한다. 더 이상 필요하지 않습니다. 습관을 없애려면 오류를 인쇄 할 것으로 별칭을 지정하십시오. (일부 초기화 및 패키지 설정 스크립트는 여전히 사용 su하므로 제거 할 수 없습니다).

참조 :

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.