서버에 있는 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
.