내 사용자 이름을 사용하여 로그인합니다 ravbholua
.
ravbholua@ravbholua-Aspire-5315:~$ echo $LOGNAME ravbholua
내가 만든 파일 이름은 다음과 같습니다 a1
.
ravbholua@ravbholua-Aspire-5315:~$ echo>a1
ravbholua@ravbholua-Aspire-5315:~$ ll a1
-rw-rw-r-- 1 ravbholua ravbholua 1 Oct 8 09:57 a1
역시 ravbholua
위 파일의 소유자는 저()입니다.
echo
다음으로 sudo와 다음 명령을 사용하여 a2를 만듭니다.
ravbholua@ravbholua-Aspire-5315:~$ sudo echo>a2
ravbholua@ravbholua-Aspire-5315:~$ ll a2
-rw-rw-r-- 1 ravbholua ravbholua 1 Oct 8 09:57 a2
주인은 바로 나, 즉 ravbholua
.
이제 sudo를 다시 사용하여 a3을 생성하지만 vim
다음 명령을 사용합니다.
ravbholua@ravbholua-Aspire-5315:~$ sudo vim a3
ravbholua@ravbholua-Aspire-5315:~$ ll a3
-rw-r--r-- 1 root root 10 Oct 8 09:57 a3
오! 지금은 왜 주인이 바뀌었나요? 제가 아니고 루트입니다. 왜 그런 echo
변화 가 생겼습니까 vim
! 놀랍게도변경 명령생성된 파일의 소유자를 변경하는 방법
답변1
두 번째 예는 echo
에서 실행 sudo
되지만리디렉션원래 쉘에서 발생합니다.
sudo bash -c "echo > a4"
답변2
sudo
그냥 명령이에요.
첫 번째 예는 다음과 같습니다.
sudo echo>a2
sudo
그것은 명령이다. 리디렉션은 에코와 모순되지만 아무 의미도 없습니다.
예를 들어,
echo cat /etc/passwd > /tmp/foo
/tmp/foo에서 /etc/passwd의 내용을 얻을 수 없습니다. 당신은 그것을 갖게 될 것입니다 cat /etc/passwd
. sudo도 예외는 아닙니다. echo 부분은 sudo에 대한 매개변수일 뿐입니다. sudo는 이를 사용하여 작업을 수행하지만 쉘은 이를 모릅니다.
이는 sudo 액세스가 루트 액세스와 매우 다른 점 중 하나입니다.
sudo vim a3
예 를 들어 vim a3
sudo를 사용하여 루트로 실행합니다. 그리고 vim은 루트로 실행되므로 파일은 루트가 소유합니다.