![슈퍼유저 그룹에 있을 때 왜 "sudo"를 사용해야 합니까?](https://linux55.com/image/138479/%EC%8A%88%ED%8D%BC%EC%9C%A0%EC%A0%80%20%EA%B7%B8%EB%A3%B9%EC%97%90%20%EC%9E%88%EC%9D%84%20%EB%95%8C%20%EC%99%9C%20%22sudo%22%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ groups martin
martin : martin wheel
나는 내 홈 디렉토리에 있습니다 :
[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ pwd
/home/martin/anaconda3
하지만 내 디렉터리에 있는 파일을 삭제하려고 하면 다음 오류가 발생합니다.
[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ rm test2.ipynb
mv: cannot create regular file ‘/export/.trash/test2.ipynb’: Permission denied
왜 그런 겁니까?
답변1
배경
rm
파일에 대해 작업을 시도하는 세 번째 예는 rm
일련의 명령으로 오버로드된 것으로 보이며 그 중 하나는 mv
파일에 대한 작업을 수행하려고 시도합니다 /export/.trash
.
권한
[martin@A08-R32-I196-2-FZ1RLP2 anaconda3]$ rm test2.ipynb mv: 일반 파일 '/export/.trash/test2.ipynb'를 생성할 수 없습니다: 권한이 거부되었습니다.
권한 보기 /export/.trash/
:
$ ls -ld /export/.trash
mv
계정이 파일을 삭제하고 선택적으로 해당 디렉터리에서 삭제할 수 있도록 모든 항목은 사용자 "martin"이 소유해야 합니다 .
누군가가 이 디렉토리에서 작업하는 동안 해당 명령을 사용했고 실수로 루트가 디렉토리를 소유하도록 sudo
디렉토리에 대한 권한을 설정했을 수도 있습니다 ..trash
다시 로드 명령
귀하의 주문에 대해 rm
. 이 명령을 사용하여 동일한 이름을 가진 별칭이나 쉘 함수로 오버로드되었는지 확인할 수 있습니다 type
. 예:
$ type -f rm
rm is aliased to `rm -i'
$ type -f mv
mv is aliased to `mv -i'
mv
여기서는 and 명령이 and의 별칭 rm
으로 오버로드되었음을 확인할 수 있습니다 .mv -i
rm -i
답변2
출력 결과에 rm
이것이 rm
별칭이나 다른 작업을 수행하는 함수라는 점에 동의합니다. 경로 이름을 보면 삭제하는 대신 휴지통 디렉토리로 이동하려는 것처럼 보입니다.
원래 문제를 해결하려면 그룹 0( wheel
)은 기본적으로 의미가 없습니다. BSD 기반 시스템에서 루트는 그룹 멤버십으로 제한되지만 su
이는 운영 체제 자체가 아닌 BSD 명령의 기능입니다 .sudo
wheel
su
이 sudo
명령은 Linux에서 일반적으로 사용됩니다. 고도로 구성 가능합니다. 그룹 0의 멤버십이 필요할 수 있지만 sudo
자동으로 사용되지는 않습니다 sudo
.