2017-10-29 1 views
-1

Java로 작성된 Spark 작업에서 특정 hdfs 파일에 액세스 할 수있는 모든 linux/centos 사용자 목록을 가져 오려고합니다 .
모든 포인터가 도움이 될 것입니다. 현재 Java 코드 아래에서 정보를 얻기 위해 노력하고 있지만 제대로 작동하지 않습니다. 결과 = Shell.execCommand ("sudo", "bash", "-c", "lid", "-g", "-n", fileOwnersGroup);Spark-Java를 사용하여 hdfs 파일에 액세스 할 수있는 사용자 목록 가져 오기

는 sudo를 던지고있다 : 없음 청각 장애 선물을 더 askpass 프로그램은

이 업데이트의/etc/sudoer하지만, 행운 등 다양한 옵션을 시도 지정되지.

+1

스택 오버플로는 프로그래밍 및 개발 관련 질문에 대한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww

+0

"쉘 스크립트에서"또는 "내 프로그램에서"를 추가하는 것은 일반적으로 질문을 프로그래밍 및 개발 질문으로 만들기에 충분하지 않습니다. 자바 코드를 보여주고 어디에 문제가 있는지 설명하십시오. – jww

+0

HDFS는 POSIX 파일 시스템이 아닙니다. HDFS "사용자 계정"은 (일반적으로) Linux 사용자에게 매핑되지 않습니다. ** Kerberos를 사용하지 않는 경우 특히 ** ** –

답변

0

FileStatus 오브젝트는 getOwner()getGroup() 메소드를가집니다.

파일에 FileSystem 개체와 Path 상태를 가져올 수 있습니다. 예를 들어

, Spark Scala list folders in directory

그러나 유닉스 그룹으로지도를 차지하는 것을 찾기 위해 일부 외부 쿼리가 필요합니다. 예를 들어, 이러한 작업은 일반적으로 LDAP 검색에 의해 제어됩니다. 분명히 문제가 sudo는이 암호를 입력하라는 메시지 및 프로세스 불꽃 ​​온 상승 명령을 실행할 수 안된다는 점이다 더 TTY 선물을 더 askpass 프로그램은

를 지정하지 :

sudo를 던지는되지 않습니다 로컬 파일 시스템

+0

동일한 것을 사용하여 소유자와 그룹을 얻지 만 그룹이 생기면 그 그룹에 속한 모든 사용자의 목록을 얻고 싶습니다. from java 아래 명령을 사용 중입니다. 결과 = Shell.execCommand ("sudo", "bash", "-c", "lid", "-g", "-n", fileOwnersGroup); 하지만 제대로 작동하지 않습니다. –

+0

계정 정보를 읽을 때'sudo bash -c '가 필요하지 않습니다. 또한, 어쨌든 높은 권한으로 실행할 수없는 스파크 애플리케이션이 있습니다. Spark은 분산 실행 프레임 워크이므로 실행 프로그램이 실행되는 서버를 제어 할 수 없습니다. 사용자/그룹 매핑이 Hadoop 프로젝트의 범위를 벗어났습니다. 언급 한 바와 같이, 그룹 관리는 일반적으로 LDAP에 의해 관리됩니다. 그리고 LDAP를 유닉스 계정에 동기화하기 위해서, 하나는 sssd를 사용한다. –

+0

'getent group $ {group}'은 원하는 명령이다. –

관련 문제