単一のマシンであるユーザーから別のユーザーにファイルをコピーする


20

ターミナルを介して同じマシンのあるユーザーから別のユーザーにファイルまたはディレクトリコピーする方法は?

USER1のホームディレクトリにtest.txtというファイルが1つあるとします。そのファイルをマシンのUSER2のホームディレクトリにコピーする必要があります。ターミナル経由でどうすればいいですか?

回答:


26

sudo特権があると仮定すると、次のコマンドが実行されます。

sudo cp /home/USER1/FNAME /home/USER2/FNAME && sudo chown USER2:USER2 /home/USER2/FNAME

ファイルをUSER1からUSER2にコピーしてから、/ home / USER2のコピーの所有者をUSER2に変更します

sudo特権がない場合、2人のユーザーは、USER1ディレクトリに対する読み取り権限と、USER2ディレクトリに対する書き込み権限を持っていることを確認する必要があります。これらのアクセス権がある場合は、次のコマンドを入力できます。

cp /home/USER1/FNAME /home/USER2/FNAME

これにより問題のファイルがコピーされますが、USER2は適切なアクセス許可を取得するまでファイルを操作できない場合があります。


これは、USER1がsudoアクセスを持っている場合にのみ機能しますが、これはマルチユーザーシステムには当てはまらない可能性があります。
BostonHiker 14年

他のオプションは、他のユーザーがそれらを取得できるように自分のフォルダーにアクセス許可を設定することですが、このオプションは可能であればはるかに簡単です。
ギアリーシャル14年

@BostonHiker私は、コピーをしている人がUSER1でもUSER2でもなく、sudo特権を持っていると仮定していました。これはおそらく私の側の悪い想定です。
チャールズグリーン14年

@Charles Green-回答を編集して仮定を述べてください。そうでない場合、不完全/誤解を招く可能性があります。
BostonHiker 14年

@BostonHiker完了。正直にしてくれてありがとう。
チャールズグリーン14年

6

sudo特権を持っていないが、2人のユーザーでログインできる場合は、localhostでscpを使用できます。

scp file1 user2@localhost:/home/user2/

これがリモートホストに関するものであるか、問題のマシンでSSH / SFTPサーバーが実行されていると思われるのはなぜですか?
デビッドフォースター

1
SSHがインストールされていると想定
15:09に大声


1

sshがインストールされていないか、キー/シークレットを共有したくないと仮定します。

user1がgroup1にあり、user2がgroup2にあり、user1!= user2とgroup1!= group2の両方であるとします。

共有グループgroup3sを作成します。

addgrp group3

user1とuser2の両方をgroup3sに追加します。

1人のユーザーが所有しているが、group3sのグループ所有権がある相互にアクセス可能な場所にディレクトリを作成します。

#as user1,
mkdir $place/shared && chown user1.group3s $place/shared && chmod 770 $place/shared;
#as user1 or user2,
cp $file $place/shared && chgrp $place/shared/$file && chmod 660 $place/shared/$file

しかし、新しい共有グループを作成して、両方のユーザーをそのグループに入れることはできないとしますか?

ディレクトリを作成し、770のアクセス許可を付与します。

mkdir $place/shared && chown user1.group1 $place/shared && chmod 770 $place/shared;

次に、root / adminとして、グループの所有権を他のユーザーのグループに変更し、

sudo bash
chgrp group2 $place/shared && chmod g+s $place/shared

コマンドchmod g + sは、ディレクトリに配置されたファイルのグループ所有権がgroup2に設定されるようにsetgidビットを設定します。


0

ここの他のすべての回答には、rootアクセスが必要であり、同じマシン上のすべてのユーザーがファイルをコピーできるようにする、パスワード共有が必要です。しないメソッドは次のとおりです。

USER2、以下のコマンドを実行します(のは彼ボブを呼びましょう)(あなたは置き換えることができ/tmp、両方のユーザーがへの書き込み権限を持っていることを任意のディレクトリではなく、/tmpデフォルトでは、このプロセスを破壊するから、悪意のあるユーザーを防止する、粘着性があるので、理想的である。Aディレクトリが所有します世界的に読み取り可能なボブによっても動作します):

[bob@computer ~]$ touch /tmp/test.txt
[bob@computer ~]$ chmod 622 /tmp/test.txt

これにより、誰でも書き込み可能なファイルが作成されますが、読み取りはできません。

次にUSER1(アリスに電話しましょう)実行します(妄想している場合は、アリスが最初に権限をチェックして、ファイルがボブに所有されていることを確認できます)。

[alice@computer ~]$ dd if="$HOME/test.txt" of=/tmp/test.txt

これにより、の内容が上書きされます/tmp/test.txt。ファイルの整合性をチェックする場合、Aliceはファイルのハッシュも生成する必要があります。例えば:

[alice@computer ~]$ openssl sha1 < "$HOME/test.txt" > /tmp/test.txt.sha1

代わりに、ファイル、またはファイルの整合性を保証するその他の方法にデジタル署名することができます。

最後に、ボブはファイルを移動し、所有権を取得します。

[bob@computer ~]$ mv /tmp/test.txt "$HOME" 
[bob@computer ~]$ chmod 600 "$HOME/test.txt"

ボブは、必要に応じて整合性を確認できます。その場合、彼はAliceのみがに書き込めることを確認する必要があります/tmp/test.txt

[bob@computer ~]$ diff /tmp/test/txt.sha1 <(openssl sha1 < "$HOME/test.txt")

ファイルが正しくコピーされた場合、出力は表示されません。


-1

あるユーザーを別のユーザーにコピーする前に、suユーザーとしてログインし、cpコマンドを使用する必要があります。

sudo cp /home/shyam/Desktop/sparkhadoop_2.11-1.0.jar /home/hadoop/Desktop

これにより、所有権は譲渡さUSER2rootず、そのままになります。-1
デビッドフォースター

@DavidFoerster所有権を譲渡するのではなく、あるユーザーから別のユーザーにファイルをコピーします。rootユーザーを使用して、ファイルを転送できます。OK
シャムグプタ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.