777 모드를 사용해도 파일 권한이 거부되었습니다.

777 모드를 사용해도 파일 권한이 거부되었습니다.

CentOS 6.10 64비트에서 권한 거부 오류가 발생합니다.

"#"은 루트 수준 사용자 프롬프트를 나타냅니다.

# cd /tmp
# chmod 777 file*
# /bin/ls -l file*
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_00.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_01.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_02.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_03.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_04.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_05.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_06.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_07.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_08.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_09.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_10.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_11.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_12.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_13.dat
-rwxrwxrwx 1 apache apache   824 Sep 17 17:15 file_14.dat
-rwxrwxrwx 1 apache apache     1 Sep 17 17:15 file_15.dat
# cat file* > file.dat
cat: file_00.dat: Permission denied
cat: file_02.dat: Permission denied
# /bin/ls -l file.dat
-rw-rw-r-- 1 root   root   10713 Sep 17 17:32 file.dat

전체 파일의 크기는 10713, 즉 824*13+1입니다. 이는 "00" 및 "02" 파일을 제외한 모든 파일을 성공적으로 복사했음을 의미합니다. 성공적인 복사는 12361바이트, 824*15+1이어야 합니다. 그러나 두 파일 사이에는 차이가 없습니다. 단지 기계가 해당 파일을 읽는 것을 거부한다는 것뿐입니다.

"chmod 777" 명령은 중복되며 상황을 강조하는 역할만 합니다. 명령을 실행하기 전에 권한은 "-rw-r--r--" 형식이었으며 이는 여전히 권한 거부 오류가 발생해서는 안 된다는 의미입니다.

아니요".". 권한 문제가 있어서 이론적으로는 Selinux가 개입하면 안 되지만, 설령 그렇다 하더라도 왜 두 개의 파일만 선택하는 걸까요?

이러한 파일을 만드는 과정을 반복하면 다른 파일 집합을 읽을 수 없는 것으로 선택하게 됩니다. 누구든지 이에 대한 설명과 해결책이 있습니까?

고쳐 쓰다:

파일 생성 과정을 수정했습니다. 이전에는 대용량 스프레드시트를 업로드할 수 있도록 XLSX 파일을 여러 개의 청크로 분할한 JavaScript 클라이언트로부터 데이터를 받았습니다. 서버는 청크를 Base64로 수신하고 각 청크를 바이너리로 디코딩한 후 최종 XLSX 파일에 연결하기 위해 임시 파일에 저장합니다.

이제 수행되는 작업은 각 임시 블록을 base64(100% ASCII)로 저장하는 것입니다. 모든 청크가 업로드된 후 각 파일을 읽고,그 다음에이를 바이너리로 디코딩하여 최종 XLSX 파일에 추가합니다.

잘 작동합니다. 내 생각엔 우리가 그걸 그냥 놔둘 것 같아요.

테스트로 Base64 청크를 읽고 바이너리로 디코딩한 다음 저장하는 빠른 3줄 프로그램을 작성했습니다. 그런 다음 결과를 읽어보려고 합니다. 뭔지 맞춰봐?바이너리 파일에 대한 권한이 거부되었습니다.

분명히 파일을 읽을 수 없게 만드는 일종의 데이터 패턴입니다.~에문서.

이 접근 방식을 사용하면 문제가 해결되었지만 여전히 이진 데이터의 스키마가 어떻게 보이는지 알고 싶습니다.~에파일 생성 "권한이 거부되었습니다" 오류외부.

답변1

최종 업데이트

우리 서비스 제공업체가 Red-Hat Linux 바이러스 백신 프로그램을 실행한 것으로 밝혀졌습니다. 분명히 나는 ​​이것을 깨닫지 못했습니다.

바이러스 백신 소프트웨어를 끄면 모든 파일을 마술처럼 읽을 수 있게 됩니다. 다시 열면 선택한 일부 파일이 특정 바이러스 서명과 일치하는 것으로 나타났습니다.

항바이러스제~해야 한다실행 파일을 조심하세요. (문제가 발생했을 때 파일은 원래 모드 644에 있었습니다)

거기~해야 한다오류 메시지가 다릅니다.

아 글쎄. 이제부터 Base64를 사용하여 파일을 인코딩하면 문제가 해결됩니다.

도움을 주신 모든 분들께 다시 한번 감사드립니다.

답변2

파일 속성이 설정되었을 수 있습니다. lsattr명령으로 나열 해보십시오 . 그런 다음 activr 속성을 사용하여 설정을 해제할 수 있습니다 chattr -[acdeijstuADST] filename.

자세한 내용은 다음에서 확인할 수 있습니다.맨샤텔.

관련 정보