tar 디렉토리에는 루트 파일이 루트가 아닌 파일로 포함되어 있습니다.

tar 디렉토리에는 루트 파일이 루트가 아닌 파일로 포함되어 있습니다.

루트가 아닌 사용자를 사용하여 디렉토리를 압축하고 싶습니다. 하지만 이 디렉터리에는 루트 권한을 가진 파일도 있습니다.

예:

foo@bar:~ $ ls -l tmp/
insgesamt 8
-rw-r--r-- 1 foo  foo  6 Mär 16 08:38 test.1
-rw------- 1 root root 6 Mär 16 08:38 test.2

사용자 "foo"로 tar 명령을 실행하면 "권한이 거부되었습니다"라는 오류가 발생합니다. 예:

foo@bar:~ $ tar -czf --preserve-permissions test.tar.gz ./tmp
tar: tmp/test.2: function open failed. Permission denied.

이 권한 문제를 어떻게 해결할 수 있나요? 가능하다면 루트가 아닌 사용자를 사용하는 것을 선호합니다.

답변1

당신은 할 수 없습니다.

파일 의 경우 tar읽어야 합니다. 그러나 root단지읽다그리고 파일에 씁니다. (권한은 rw-------/ 입니다 600.)

owner = rw-
group = ---
others = ---

주인 rootfoo아마도다른 사람.


foo권한을 변경한 후 다음 사용자를 사용하여 파일을 읽을 수 있습니다.

# give read permission (+r) to others (o) 
sudo chmod o+r ./tmp/test.2

또는

# Set specific permissions value -> 6=rw- 4=r--
sudo chmod 644 ./tmp/test.2

또는 소유자를 다음으로 변경하세요 foo.

sudo chown foo: ./tmp/test.2

사용자가 해당 컴퓨터에 없는 경우에도 sudoer루트 콘솔이나 라이브 시스템에서 이 작업을 수행할 수 있습니다.


그러면 명령이 문제 없이 작동할 것입니다.

foo@bar:~ $ tar -czf --preserve-permissions test.tar.gz ./tmp

관련 정보