サーバー上の/home/myname/.rubies
にあるnfsマウントにディレクトリがあります
ルートはこのディレクトリにアクセスできません:
[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
に何かをコピーしようとしています。これはrootだけがアクセスできるものです。
[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
はあなたと同じように実行されるため、ホームディレクトリを読み取ることができます。 2番目の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
を介したrootアクセスが推奨されます)。