ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Xcode rsync.samba deny file-write-create 오류 분석기
    Xcode 2025. 3. 12. 10:06

    안녕하세요. 그린입니다 🍏

    이번 포스팅에서는 기술적인 새로운걸 알아가는것보다 실제 겪은 Xcode에서 발생할 수 있는 오류에 대해 파악해봅니다 😃

     


    What's Error?

    최근 Xcode에서 iOS 프로젝트를 빌드하는 과정에서 Sendbox: rsync.samba deny(1) file-write-create 오류를 경험했어요!

     

    해당 오류는 rsync(Samba 관련 프로세스)가 특정 디렉터리에 파일을 생성하려 할 때, macOS의 보안 정책으로 인하여 차단되면서 발생하는 문제입니다.

     

    일반적으로는 SMB(Network File System) 공유 디렉터리, Xcode의 새로운 샌드박스 정책, macOS의 보안 제한 및 디렉터리 권한 문제로 인해서 이 오류가 발생할 수 있어요.

     

    그렇기에 이 오류가 발생하는 이유를 한번 분석해보고 해결 방법까지 찾아봤습니다 🙏🏻

     


    Investigate Error Message

     

    이런 오류가 Xcode 빌드 시 발생했습니다.

     

    해당 메시지를 한번 분석해볼까요?

     


    Sandbox

    rsync.samba 프로세스가 macOS의 샌드박스 보안 정책에 의해서 차단되었다는걸 말해줍니다.

    즉, Xcode의 빌드 과정 중에서 특정 스크립트 또는 프로세스가 파일을 생성하려고 했지만 거부되었다는거죠.

     


    rsync.samba(13105)

    rsync.samba는 Samba 프로토콜을 통해서 네트워크 공유 폴더에서 파일을 동기화 하는데 사용되는 프로세스입니다.

    13105는 해당 프로세스의 PID(Process ID)로, 특정 실행 인스턴스를 식별해요.

     


    deny(1) file-write-create

    파일 생성 권한이 거부되었고 실패된것을 의미합니다.

     

    즉, Xcode 빌드 과정에서 rsync 혹은 Samba 프로세스가 특정 디렉터리에 파일을 생성하려다가 macOS의 보안 정책에 의해서 차단되었다고 해석할 수 있습니다!

     


    Error Reason

    해당 오류가 발생하는 원인은 주요하게 아래와 같아요.

     

    1️⃣ 네트워크 공유 드라이브 (SMB)에서 프로젝트를 실행하는 경우

    프로젝트가 SMB 드라이브 또는 NFS(Network File System) 디렉터리에서 실행되고 있을 가능성이 있습니다.

    macOS의 보안 정책과 Xcode의 파일 시스템 보호 기능이 네트워크 드라이브에서의 파일 쓰기 작업을 제한할 수 있죠.

    즉, 네트워크 드라이브에서 프로젝트를 실행하면 빌드가 실패해요.

     

    2️⃣ Xcode의 User Script Sandboxing 기능이 활성화된 경우 

    Xcode 14.3부터는 빌드 스크립트에 대한 샌드박싱 기능이 도입되었어요.

    해당 기능이 활성화되면, 빌드 과정에서 실행되는 모든 스크립트가 제한된 권한 내에서만 실행됩니다.

    그렇기에 rsync, bash 스크립트가 특정 디렉터리에 파일을 쓰려 할 때 차단될 수 있죠.

    흔히, 타겟의 Build Setting에서 ENABLE_USER_SCRIPT_SANDBOXING가 Yes로 설정되어 있다면 빌드가 실패할 가능성이 있어요.

    특히, Run Script 단계에서 실행되는 명령어가 정상적으로 동작하지 않을 수 있습니다.

     

    저도 이 경우였더라구요!

     

    3️⃣ 파일 시스템 권한 문제

    네트워크 공유 폴더 혹은 특정 디렉터리의 파일 권한이 제한되어 있을 수 있습니다.

    rsync 혹은 Xcode가 특정 폴더에서 파일을 생성하려 할 때, 파일 소유권 문제로 인해서 권한이 거부될 수 있어요.

    chmod: Operation not permitted 등의 메시지가 출력될 수 있습니다.

     

    그럼 어떻게 해결해볼 수 있을까요?

     


    Solution

    각 발생하는 원인에 따라 다른 케이스로 알아볼께요.

     

    1️⃣ 프로젝트를 로컬 디스크로 이동

    네트워크 공유 드라이브가 아닌 Mac의 로컬 디렉터리에서 프로젝트를 실행하는것이 가장 좋은 방법입니다.

    위 에러 상황에서 1번이였다면, 이 경우로 대부분 다 해결이 될거에요.

     

    2️⃣ Build Settings 변경

    Xcode > 프로젝트 타겟으로 갑니다.

    Build Settings > Build Options에서 ENABLE_USER_SCRIPT_SANDBOXING 해당 항목을 찾아요.

    해당 값을 NO로 설정한 후 다시 프로젝트를 빌드해보면 정상적으로 빌드가 될 수 있어요.

     

    다만, 샌드박싱을 비활성화 하게 되기에, 빌드 스크립트가 더 많은 권한을 가지게 되어서 보안 위험성이 증가할 순 있기에 신뢰되는 환경에서만 사용하는걸 권장합니다.

     

    3️⃣ 파일 시스템 권한 수정

    네트워크 드라이브에서 작업해야 하는 환경이라면 추가적인 파일 접근 권한을 설정해야 합니다.

    방법은 다양해요.

    시스템 설정에서 개인정보 보호 및 보안 탭에서 전체 디스크 접근 권한으로 들어가서 Xcode와 터미널을 추가할 수 있어요.

     

    그게 아니라면, 아래 쉘 명령어를 통해 파일 소유권을 변경할 수도 있습니다.

     

    sudo chown -R $(whoami) /path/to/your/project

     

    또한, 권한을 강제로 변경할 수 도 있어요.

    위험성은 있지만요!

     

    sudo chmod -R 777 /path/to/your/project

     


    Conclusion

    해당 오류는 대부분 네트워크 드라이브에서 작업 시 많이 일어나긴 하지만 아닐 수도 있어요.

    그렇기에 저 같은 경우는 2번의 경우여서 NO 설정으로 해결되었지만, 다른 케이스일 경우 다른 방법으로 시도해보는것이 좋을것 같습니다.

     


    References

     

    error while build iOS app in Xcode : Sandbox: rsync.samba (13105) deny(1) file-write-create, Flutter failed to write to a file

    while building iOS app on Xcode I got these 2 errors, I tried to build the iOS on visual studio code and I got the same errors. the operating system macOS 14.0 beta. processor M1 Pro Could downgra...

    stackoverflow.com

     

    Xcode 14.3 Release Notes | Apple Developer Documentation

    Update your apps to use new features, and test your apps against API changes.

    developer.apple.com

     

    About System Integrity Protection on your Mac - Apple Support

    System Integrity Protection is a security technology that helps protect your Mac from malicious software.

    support.apple.com

Designed by Tistory.