루트가 액세스할 수 없는 디렉터리를 루트만 액세스할 수 있는 디렉터리로 복사하는 방법은 무엇입니까?

루트가 액세스할 수 없는 디렉터리를 루트만 액세스할 수 있는 디렉터리로 복사하는 방법은 무엇입니까?

서버에 있는 nfs 마운트에 디렉터리가 있습니다./home/myname/.rubies

루트는 이 디렉터리에 액세스할 수 없습니다:

[mitchell.usher@server ~]$ stat /home/mitchell.usher/.rubies
  File: `/home/mitchell.usher/.rubies'
  Size: 4096            Blocks: 8          IO Block: 32768  directory
Device: 15h/21d Inode: 245910      Links: 3
Access: (0755/drwxr-xr-x)  Uid: (  970/mitchell.usher)   Gid: (  100/   users)
Access: 2016-08-22 15:06:15.000000000 +0000
Modify: 2016-08-22 14:55:00.000000000 +0000
Change: 2016-08-22 14:55:00.000000000 +0000

[mitchell.usher@server ~]$ sudo !!
sudo stat /home/mitchell.usher/.rubies
stat: cannot stat `/home/mitchell.usher/.rubies': Permission denied

/opt루트만 액세스할 수 있는 디렉터리에서 일부 콘텐츠를 복사 하려고 합니다 .

[mitchell.usher@server ~]$ cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot create directory `/opt/ruby-2.1.3': Permission denied

[mitchell.usher@server ~]$ sudo !!
sudo cp .rubies/ruby-2.1.3/ -r /opt
cp: cannot stat `.rubies/ruby-2.1.3/': Permission denied

분명히 나는 ​​다음을 수행할 수 있습니다(현재 수행하는 작업은 다음과 같습니다).

[mitchell.usher@server ~]$ cp -r .rubies/ruby-2.1.3/ /tmp/
[mitchell.usher@server ~]$ sudo cp -r /tmp/ruby-2.1.3/ /opt/

중간 단계로 복사하거나 권한을 변경하지 않고 이를 수행할 수 있는 방법이 있습니까?

답변1

tar버퍼링 프로세스 로 사용할 수 있습니다.

cd .rubies
tar cf - ruby-2.1.3 | ( cd /opt && sudo tar xvfp - )

첫 번째는 tar사용자로 실행되므로 홈 디렉토리를 읽을 수 있고 두 번째는 tar에서 실행 sudo되므로 쓸 수 있습니다 /opt.

답변2

로컬 디렉터리를 사용 rsync하거나 scp복사 할 수 있습니다 .user@localhost

rsync:

# rsync "$real_user@localhost:$PWD/.rubies/ruby-2.1.3" /opt

당신은 또한 수

$ rsync .rubies/ruby-2.1.3 "root@localhost:/opt"

localhost에 직접 루트 액세스 권한을 부여하는 경우(권장되지 않음, 일반적으로 루트를 통한 액세스를 선호함 sudo)

답변3

FAT(또는 기타)에 두 번째 항목을 만들 수 있습니다.
내 파일에 대해 HOSTS이 작업을 수행합니다 . 쓰기 가능한 디렉터리에 있는 파일을 참조하는 링크가 있고 권한이 다르기 때문에 /Hosts/HOSTS링크를 쉽게 수정할 수 있으며 변경 사항은 두 파일(예: "하나")에 모두 적용됩니다. 1개의 파일에 2개의 항목이 있습니다. 순서가 기억나지 않습니다. 죄송합니다.

/opt귀하의 경우에는 의 모든 파일에 대한 링크를 만들 수 .rubies있으며 에서 무엇이든 변경하면 /opt의 파일과 동일해집니다 .rubies.

관련 정보