대답은 이해하기 어려우며 이해하기 위해 약간의 생각 이 필요 했기 때문에 ( 이 의견 으로 이해하게되었습니다) 희망적으로 더 나은 설명 을 드리겠습니다 .
1. fakeroot에서 일어나는 일
자신의 사용자에게 일어나는 일 외에는 아무것도 없습니다. 더 이상 아무것도 없습니다. 만약 당신이 fakeroot
(당신이 호출 될 때 당신과 같은 새로운 쉘을 제공 sudo
한다면), 당신이 허가를 필요로하는 것을하고, 종료하는 것은 절대 아무 일도 일어나지 않을 것입니다.
당신이 그것에 대해 생각하면, 그것은 총 시간 낭비입니다. 실제로 일어나지 않는 일을 왜 하시겠습니까? 미쳤다. 당신은 단순히 그것을 할 수 없었으며 아무런 흔적도 없었기 때문에 아무런 차이가 없었을 것입니다.
잠깐만 ...
2. 가짜 뿌리의 흔적
의 흔적이 남아 있을 수 있습니다 fakeroot
. MortenSickel의 답변 에서 꽤 훌륭하고 공감할만한 명령을 살펴 보겠습니다 .
$ fakeroot
# echo "Wow I have root access" > root.tst
# ls -l root.tst
-rw-rw-r-- 1 root root 23 Oct 25 12:13 root.tst
# ls -l /root
ls: cannot open directory /root: Permission denied
# exit
$ ls -l root.tst
-rw-rw-r-- 1 ubuntu ubuntu 23 Oct 25 12:13 root.tst
언뜻보기에 사용하는 fakeroot
것이 총 시간 낭비 인 것처럼 보입니다 . 결국,를 사용하지 않았다면 fakeroot
같은 것을 얻게 될 것입니다.
여기서 미묘한 것은 다음과 같습니다.
$ cat root.tst
Wow I have root access
이는 파일의 내용이 여전히 루트 인 것을 기억한다는 것을 의미합니다. 사용하지 않으면 fakeroot
같은 결과가 나왔다고 말할 수 있습니다 . 맞습니다.이 예는 너무 간단합니다.
다른 예를 보자.
$ fakeroot
# touch x
# touch y
# chown myuser:myuser x
# ls -l > listing
# exit
$ ls -l
total 4
-rw-rw-r-- 1 myuser myuser 152 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 y
$ cat listing
total 0
-rw-rw-r-- 1 root root 0 Jan 7 21:39 listing
-rw-rw-r-- 1 myuser myuser 0 Jan 7 21:39 x
-rw-rw-r-- 1 root root 0 Jan 7 21:39 y
무슨 일이 있었는지 보자. 나는 척 root
완전히 효과가있는, 그리고 창조 x
와 y
. 나는 척 x
에 속하는 myuser
과 y
에 속하는 root
. 그것들은 실제로 myuser
(우리가 결국 볼 수 있듯이)에 속하지만, 나는 단지 그런 식으로 척 했습니다.
그런 다음 목록을 작성하고 상상력을 파일로 저장했습니다. 나중에 파일을 다시 보면 파일 소유자가 누구인지 상상할 수 있습니다. 다시, 그들은 내가 상상했던 사람들에 의해 실제로 소유되지 않고, 나는 단지 그것을 상상했습니다.
3. 그래서 ... 왜 다시 원하니?
당신은 내가 그 목록을 만들기 위해 루트가되는 가짜를 할 필요가 없다고 말할 수 있습니다. 간단히 목록을 만든 다음 상상력을 반영하도록 목록을 편집 할 수있었습니다. 당신은 당신이 필요로하지 않았다 맞아 fakeroot
그것에 대해. 실제로, 그것이 fakeroot
실제로 아무것도하지 않는다는 것을 알면, 이전 에는 없었던 능력을 얻을 수 없었을 것입니다.
그러나 이것은 fakeroot
목록의 편집 이 쉽지 않을 수 있습니다. 시스템에 설치할 수있는 패키지와 함께 tar
ed, gzip
ed, xz
ed, bzip2
ed 또는 파일을 함께 유지하고 권한 및 소유자를 기억하는 다른 형식이 있습니다. 압축 파일을 쉽게 수정하고 파일의 소유권을 편집 할 수 있습니까? 나는 당신에 대해 모른다. 그러나 나는 방법을 생각할 수 없다.
모든 것이 압축되면 압축 된 파일을 수정하고 소유권 및 권한을 프로그래밍 방식으로 편집하는 도구가 구축 될 수 있습니까? 그렇습니다. 따라서 압축하기 전에 소유권을 위조하거나 나중에 변경할 수 있습니다. 데비안 사람들은 전자가 더 쉽다고 결정했습니다.
4. 왜 그냥 사용하지 sudo
않습니까?
우선, 소프트웨어를 빌드하기 위해 루트 권한이 필요하지 않으며 소프트웨어를 압축하기 위해 루트 권한이 필요하지 않습니다. 따라서 필요하지 않은 경우 해당 권한을 얻는 것을 생각하기 위해서는 실제로 Windows 사용자 여야합니다. 그러나 빈정 거림은 루트 비밀번호가 없을 수도 있습니다.
또한 루트 권한이 있다고 가정 해 봅시다. 그리고 파일에 루트에 대한 읽기 권한 만 있어야한다고 가정 해 봅시다. 따라서 sudo
실제로 파일 소유자와 권한을로 변경하면 root
루트 셸에서 벗어나 모든 것을 패키지하려고합니다. 루트 액세스 권한이 없어서 더 이상 파일을 읽을 수 없으므로 실패합니다. 따라서 sudo
패키지를 루트로 압축하고 압축 해야 합니다. 효과적으로 모든 것을 루트로해야합니다.
이것은 나쁜 TM 입니다.
패키저로서 루트 권한이 필요하지 않으며 권한을 가져서는 안됩니다. 패키지를 설치할 때 일부 파일 ( A
)을 루트 로 설치해야 할 수 있으며 여기에서 루트 권한이 필요합니다. 모든 fakeroot
것이 이것을 가능하게하는 것입니다. A
패키지 관리자는 아카이버에 대해 루트 소유의 것으로 패키지를 나열 할 수 있으므로 사용자가 패키지 압축을 풀 때 아카이버는 루트 권한을 요구하고 루트 A
소유의 것으로 작성 합니다.
sudo
있거나su
머신이기 때문에 일반 사용자로 수행 할 수있는 모든 것을 루트로 사용하지 않는 것이 좋습니다 .fakeroot
1) 그것은 실제로 루트 사용자라고 믿는 프로그램을 속이는 것입니다. 실제로 잘못 작성된 독점 소프트웨어는 필요하지 않더라도 필요할 수 있습니다 (일반적으로 Windows 개발자는 Linux를갔습니다) 및 2) 파일 모드 및 소유권 변경을 모방 할 수 있습니다. ' 그렇지 않으면tar
소프트웨어를 패키징 할 때 유용한 올바른 권한과 소유권을 가진 파일 을 만들 수 있습니다.