Ubuntu 20.04를 Ubuntu 22.04로 업그레이드한 후 nano로 편집할 때 "/etc/nginx/nginx.conf는 읽기 전용입니다"

Ubuntu 20.04를 Ubuntu 22.04로 업그레이드한 후 nano로 편집할 때 "/etc/nginx/nginx.conf는 읽기 전용입니다"

최근 Ubuntu Server 20.04를 Ubuntu Server 22.04로 업그레이드했습니다. Nginx의 최신 메인라인 버전을 실행하는 LEMP 서버입니다. 업그레이드 후 nano 편집기를 사용하여 /etc/nginx/nginx.conf 파일을 수정하려고 하면 nano에 다음과 같은 경고가 빨간색으로 표시됩니다.

/etc/nginx/nginx.conf는 읽기 전용입니다.

이 오류는 무엇에 관한 것이며, 언제부터 내 nginx.conf 파일이 읽기 전용이 되었습니까? 이것이 nginx 문제입니까, nano 문제입니까, 파일 시스템 권한 문제입니까, 아니면 위의 모든 것입니까? 이 오류를 해결하려면 어떻게 해야 합니까? 아래 스크린샷을 참조하세요.

Nginx.conf는 읽기 전용입니다.

답변1

이는 실제 오류가 아니며, 여전히 파일에 쓸 수 있습니다.

nano파일에 , 또는 권한 비트가 설정되어 있는지 테스트 u+wg+w입니다 o+w. 해당 비트 중 어느 것도 설정되지 않으면 시스템의 어느 누구도 파일에 대한 쓰기 액세스 권한이 명시적으로 부여되지 않은 것입니다. 그러나 루트 사용자( 로 승격되었을 수 있음 sudo)는 이를 무시하고 암시적으로 모든 파일에 쓸 수 있습니다.

즉, 경고는 다음과 같습니다. 루트이기 때문에 이 파일에 쓸 수 있지만 기술적으로는 어떤 사용자에게도 파일에 대한 쓰기 권한이 없습니다.

새로운 동작은 다음과 같이 제출된 개선 요청에서 비롯됩니다.버그 #58685근거를 설명합니다.

현재 nano는 444 [ ] 권한으로 파일에 쓸 수 있습니다 r--r--r--.

이러한 파일은 어떤 이유로 읽기 전용인 경우가 많으므로 사용자에게 실제로 이 작업을 수행할지 묻는 메시지를 표시하는 것이 좋습니다.


이 질문에 답하기 위해 검색해 보니nanognu.org 의 코드. (Ubuntu의 저장소에 제공되는 정확한 코드가 정말로 필요하다면 다음을 확인하세요.발사대.) 에서 src/files.c다음 메시지를 찾았습니다.

#elif defined(HAVE_GETEUID)
        if (new_one && !(fileinfo.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH)) &&
                        geteuid() == ROOT_UID)
            statusline(ALERT, _("%s is meant to be read-only"), realname);
#endif

이 줄 은 git blame우리가 커밋하도록 지시합니다.180a53cc0:

파일: 모든 쓰기 비트가 누락되면 루트 사용자에게 경고합니다.
루트에는 읽을 수 없는 파일을 읽고 쓸 수 없는 파일을 쓸 수 있는 전권이 있습니다. 파일 시스템은 이를 방지하지 않습니다. 따라서 읽기 전용으로 의도된 파일을 열 때 루트에 경고하십시오.

관련 정보