GRANT
다른 개체에있는 s는 분리되어 있습니다. GRANT
데이터베이스에 대한 GRANT
것은 스키마에 대한 권한 이 없습니다 . 유사 GRANT
하게 스키마에 대한 작업은 내부 테이블에 대한 권한을 부여하지 않습니다.
SELECT
테이블에 대한 권한은 있지만이를 포함하는 스키마에서 볼 수있는 권한이없는 경우 테이블에 액세스 할 수 없습니다.
권한 테스트는 순서대로 수행됩니다.
Do you have `USAGE` on the schema?
No: Reject access.
Yes: Do you also have the appropriate rights on the table?
No: Reject access.
Yes: Check column privileges.
public
스키마에 모든 사용자 / 그룹이 구성원 인 GRANT
역할에 대한 모든 권한 의 기본값이 있다는 사실로 인해 혼란이 발생할 수 있습니다 public
. 따라서 모든 사람이 이미 해당 스키마를 사용하고 있습니다.
문구 :
(객체의 고유 한 권한 요구 사항도 충족된다고 가정)
USAGE
개체를 사용하려면 스키마에 있어야 하지만 USAGE
스키마에있는 것만으로는 스키마 내의 개체를 사용하는 데 충분하지 않으며 개체 자체에 대한 권한도 있어야합니다.
디렉토리 트리와 같습니다. somedir
파일이 somefile
포함 된 디렉토리 를 만든 다음 자신의 사용자 만 디렉토리 또는 파일 (디렉토리의 모드, 파일의 모드) rwx------
에 액세스 할 수 있도록 설정하면 rw-------
다른 사람이 파일이 있는지 확인하기 위해 디렉토리를 나열 할 수 없습니다.
파일 (mode rw-r--r--
) 에 대한 세계 읽기 권한을 부여 하고 디렉토리 권한을 변경하지 않으면 아무런 차이가 없습니다. 디렉토리를 나열 할 권한이 없기 때문에 아무도 파일을 읽기 위해 볼 수 없습니다.
대신 rwx-r-xr-x
디렉토리를 설정하여 사람들이 디렉토리를 나열하고 탐색 할 수 있지만 파일 권한을 변경할 수 없도록 설정하면 사람들은 파일을 나열 할 수 있지만 파일에 대한 액세스 권한이 없기 때문에 읽을 수 없습니다 .
사람들이 실제로 파일을 볼 수 있도록하려면 두 권한을 모두 설정해야 합니다.
Pg에서도 마찬가지입니다. 테이블에서 USAGE
와 같이 개체에 대한 작업을 수행하려면 스키마 권한과 개체 권한 이 모두 필요 SELECT
합니다.
(비유는 사용자가 계속하여 테이블이 스키마에 존재하는 "볼"수의 PostgreSQL는, 아직 행 수준 보안이없는 점에서 조금 아래로 떨어지면 SELECT
에서 보내고 pg_class
직접. 그들은 수없는 상호 작용이 어떤 방식으로 , 그렇기 때문에 완전히 동일하지 않은 "목록"부분 일뿐입니다.)
CREATE EXTENSION
. .NET을 사용하는 동안 Linux에서 생성 된 파일과 거의 동일한 문제입니다su
.sudo -e
pqsl에 일종의 for 문이 있으면 좋을 것입니다.