파일을 직접 편집할 수 없는 이유는 무엇입니까?

파일을 직접 편집할 수 없는 이유는 무엇입니까?
mkdir ~/.config/dunst

sudo cp /etc/dunst/dunstrc ~/.config/dunst/dunstrc

이렇게 하면 파일을 편집할 수 없게 됩니다.

rm ~/.config/dunst/dunstrc
touch ~/.config/dunst/dunstrc
sudo cp /etc/dunst/dunstrc ~/.config/dunst/dunstrc

이렇게 하면 파일을 편집할 수 있습니다. 리눅스는 왜 이렇게 행동하는가?

답변1

대부분의 최신 운영 체제에서 작동파일 권한 및 소유권. Linux에서는 Unix와 마찬가지로 파일을 공유하라는 지시가 없는 한 파일에 대한 액세스를 제한하는 것이 기본 동작입니다(다른 운영 체제에서는 다른 접근 방식을 취함). "sudo"를 사용하면 보안 제어 없이 작업을 수행하게 됩니다. Sudo는 루트 사용자로 명령을 실행합니다. 루트로 파일을 복사하면 새 파일은 루트의 소유가 됩니다. 파일은 계속 편집할 수 있지만 루트 이외의 사용자는 편집할 수 없습니다. 당신은 할 수 있습니다 ...

  • 루트로 파일 편집(보통 잘못됨)
  • 파일의 사용자(또는 그룹이 쓰기 가능한 경우 그룹) 소유권을 일반적으로 사용하는 사용자(또는 해당 그룹이 속한 그룹)로 변경합니다(양호).
  • 누구나 편집할 수 있도록 파일의 권한을 변경합니다(나쁨).
  • 파일 권한에 대한 기본값 변경(나쁨)

소유권 변경은 다음을 통해 이루어집니다.주문하다. 파일의 권한 변경은 다음과 같이 수행됩니다.chmod. 기본값을 변경하는 방법은 다음과 같습니다.마스크일반적으로 쉘 구성 파일에서 호출되는 명령입니다. chmod 및 chown은 첫 번째 링크에 설명되어 있으며 후속 링크에서 더 자세히 설명됩니다.

답변2

sudo cp파일의 원래 사용자에게 속하게 됩니다(대부분 root).

sudoafter는 touch파일을 덮어쓰므로 원래 ID/그룹 ID를 유지합니다.

"Clobber"는 기본 동작이지만 매뉴얼 페이지에 명시적으로 명시되어 있지는 않습니다.

       -n, --no-clobber
              do not overwrite an existing file (overrides a previous -i option)

이렇게 하면 문제가 해결됩니다.

sudo chown `id -u` ~/.config/dunst/dunstrc

관련 정보