루트 만 액세스 할 수있는 디렉토리를 루트 만 액세스 할 수있는 디렉토리에 복사하는 방법은 무엇입니까? ( 100/ users) Access:

서버의 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/

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



답변

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

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

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


답변

당신은 사용할 수 있습니다 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"

root가 localhost에 직접 액세스하도록 허용하는 경우 (권장되지 않음) 일반적으로 루트 액세스는을 통해 선호 sudo됩니다.


답변

FAT (또는 무엇이든)에 두 번째 항목을 만들 수 있습니다.
나는 내 HOSTS파일을 위해 이것을한다 . 파일을 참조하는 쓰기 가능한 디렉토리에 링크가 있으며 다른 권한을 가지고 있으므로 /Hosts/HOSTS쉽게 수정할 수 있으며 변경 사항은 두 파일 (예 : “하나”)에 있습니다. 파일 1 개에 대한 2 개의 항목입니다. 명령이 기억 나지 않습니다. 죄송합니다.

의 경우 /opt모든 파일에 대한 링크를 만들고에서 .rubies를 변경하면의 /opt파일과 동일합니다 .rubies.


답변