
サーバー上の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 - )
1つ目はtar
ユーザーとして実行されるため、ホームディレクトリを読み取ることができ、2つ目はで実行されているので書き込むこと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(またはその他)に2番目の項目を作成できます。
私のファイルに対してHOSTS
これを行います。書き込み可能なディレクトリにあるファイルを参照するリンクがあり、権限が異なるため、リンクを/Hosts/HOSTS
簡単に変更でき、変更は両方のファイル(たとえば「1」)に適用されます。 1つのファイルに2つの項目があります。順序は覚えていません。申し訳ありません。
/opt
あなたの場合は、すべてのファイルへのリンクを作成することができます.rubies
から何かを変更すると/opt
のファイルと同じになります.rubies
。