슈퍼유저 그룹에 있을 때 왜 "sudo"를 사용해야 합니까?

슈퍼유저 그룹에 있을 때 왜 "sudo"를 사용해야 합니까?
[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 -irm -i

답변2

출력 결과에 rm이것이 rm별칭이나 다른 작업을 수행하는 함수라는 점에 동의합니다. 경로 이름을 보면 삭제하는 대신 휴지통 디렉토리로 이동하려는 것처럼 보입니다.

원래 문제를 해결하려면 그룹 0( wheel)은 기본적으로 의미가 없습니다. BSD 기반 시스템에서 루트는 그룹 멤버십으로 제한되지만 su이는 운영 체제 자체가 아닌 BSD 명령의 기능입니다 .sudowheelsu

sudo명령은 Linux에서 일반적으로 사용됩니다. 고도로 구성 가능합니다. 그룹 0의 멤버십이 필요할 수 있지만 sudo자동으로 사용되지는 않습니다 sudo.

관련 정보