루트가 아닌 사용자를 사용하여 디렉토리를 압축하고 싶습니다. 하지만 이 디렉터리에는 루트 권한을 가진 파일도 있습니다.
예:
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 = ---
주인 root
은 foo
아마도다른 사람.
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