2014-04-09 3 views
2

처음에는 약간 이상한 질문이 될지 모르지만 여기에 나와 있습니다.sudo를 사용하지 않고 root가 소유하고있는 쉘 스크립트 파일을 생성하십시오.

파일 시스템을 구성하는 셸 스크립트를 작성하여 아카이브로 다시 압축 할 수 있으며 루트 사용자가 소유 할 파일이 필요합니다. 이 모든 일이 곧 자동화 될 것입니다 만, 지금은 sudo를 사용하면 암호를 입력해야하기 때문에 조금 문제가 있습니다.

파일이 전체 액세스 권한을 가진 내 자신의 홈 디렉토리 아래에 생성 된 것을 보면 루트 사용자로 소유권을 변경할 수 있다고 생각됩니다. 그게 가능하니?

정상적으로 시도하면 "허용되지 않는 작업"이 발생합니다. 어쩌면 대안이 있을까요?

+0

당신은'su' 또는'sudo'을 사용할 수 있습니다, 그러나 그것은 그것의 끝에 관한 것이다. 당신은 다른 사람에게 속한 파일을 만들 수 없다. 가장 좋은 방법은 아카이브 도구를 수정하여 아카이브 내의 파일에 대한 기록 된 권한을 변경하는 것입니다. –

+0

당신은 루트 사용자입니까, sudoers입니까? – MLSC

+0

흠. 어쩌면 내가 schroot로 할 수있다 – Matt

답변

4

fakeroot을 사용하여 원하는 것을 할 수 있습니다. 프로그램을 만드는 라이브러리입니다. 루트가 아니라면 루트로 실행 중입니다. IIRC에서는 루트가 아닌 사용자가 .deb 루트 소유 파일을 포함하는 패키지를 빌드 할 수 있도록 dpkg에 의해 사용됩니다. 이 쉘 스크립트 밖으로

확인 :

#!/bin/bash 

mkdir image 
touch image/user-owned 
touch image/root-owned 

chown renato.renato image/user-owned 
chown root.root  image/root-owned 

tar cf image.tar image 

일반적으로는, 난 단지 루트로이 tar 아카이브를 만들 수있을 것입니다. 내가 fakeroot 사용을 사용하는 경우 :

$ fakeroot ./create-image.sh 
$ tar tvf image.tar 

drwxr-xr-x root/root   0 2014-04-09 01:09 image/ 
-rw-r--r-- root/root   0 2014-04-09 01:09 image/root-owned 
-rw-r--r-- renato/renato  0 2014-04-09 01:09 image/user-owned 

그러나 디스크에있는 파일은 그래서 아무 보안 위험이 여기에, 여전히 사용자가 소유하고 있습니다

$ ls -l image/ 

total 0 
-rw-r--r-- 1 renato renato 0 Abr 9 01:09 root-owned 
-rw-r--r-- 1 renato renato 0 Abr 9 01:09 user-owned 
+1

아, 이제 너는 뭔가있어 ... 나는 오래 전에이 명령을 회상한다. 그래서 그러한 도구가 존재한다고 생각하면서 질문을 던졌습니다. – Matt

관련 문제