2014-08-28 3 views
2

"rw-rw-rw-"에서 파생 된 FileAttribute와 함께 createFile을 사용하려고합니다. 내 파일은 Fedora에서 "rw-rw-r--"으로 생성됩니다.파일을 만들 때 어떻게 OTHERS_WRITE를 설정할 수 있습니까?

파일을 만들 때 어떻게 OTHERS_WRITE을 (를) 설정할 수 있습니까?

예 : 시스템 등 유닉스

(->> "rw-rw-rw-" 
    PosixFilePermissions/fromString 
    PosixFilePermissions/asFileAttribute 
    vector 
    into-array 
    (Files/createFile (Paths/get "temp" (into-array String [])))) 
;;; temp is created as rw-rw-r-- 

답변

3

모든 프로세스가 생성되고 자식 프로세스가 상속하는 파일의 권한에 마스크 umask라는 속성을 갖는다. 기본값은 0002이거나 "다른 사용자를위한 쓰기 금지"입니다. 그래서 가장 가능성이 높습니다 자바가 당신이 찾는 허가를 설정하고 나서 그것은 마스크가되고 있습니다. 명시 적으로 파일을 생성하는 after 권한을 설정하거나 자바 프로세스 의 umask 설정을 변경하여을 시작하기 전에 변경할 수 있습니다.

[email protected]:/tmp$ umask 
0002 

다음 읽기와 파일을 만들고 (터치는 자바 코드뿐만 아니라이 작업을 수행) 모두를위한 작성할 수 있습니다 우리가 볼

[email protected]:/tmp$ touch foo 
[email protected]:/tmp$ ls -l foo 
-rw-rw-r-- 1 arthur arthur 0 Aug 28 13:58 foo 

:

먼저 현재의 umask를 볼 수 있습니다 실제 파일 사용 권한에서 8 진수 0002이 가려졌습니다.
그래서 우리는 0000으로 설정하여이 umask를 제거 할 수 있습니다

[email protected]:/tmp$ umask 0000 
[email protected]:/tmp$ touch foo 

그리고 우리는 umasks는 새로운 파일에 적용되기 때문에 업데이트 할 때 그것이로 그 foo는 남아 참조하십시오. read-other 권한으로 새 파일 막대가 작성됩니다.

[email protected]:/tmp$ ls -l foo 
-rw-rw-r-- 1 arthur arthur 0 Aug 28 14:00 foo 
[email protected]:/tmp$ touch bar 
[email protected]:/tmp$ ls -l bar 
-rw-rw-rw- 1 arthur arthur 0 Aug 28 14:00 bar 

난 당신이 실행하기 전에 당신은 당신의 쉘에서의 umask를 설정하여 자신이 증명할 수 *이 시스템에서 시스템에보다 쉽게 ​​전달하기 때문에 자바에서 파일을 만든 후 명시 적으로 권한을 설정하는 습관이야 emacs/your-program을 실행 한 후 파일 사용 권한을 확인하십시오.

* Java는 "어디서든 쓰기가 가능합니다."