단일 컴퓨터에서 한 사용자에서 다른 사용자로 파일 복사


20

터미널을 통해 같은 컴퓨터에서 한 사용자에서 다른 사용자로 파일이나 디렉토리복사하는 방법은 무엇입니까?

USER1의 홈 디렉토리에 test.txt 파일이 하나 있다고 가정하십시오 . 이 파일을 내 컴퓨터의 USER2 홈 디렉토리에 복사해야합니다. 터미널을 통해 어떻게 할 수 있습니까?

답변:


26

sudo권한이 있다고 가정하면 다음 명령이 수행합니다.

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

파일을 USER1에서 USER2로 복사 한 다음 / home / USER2의 사본 소유자를 USER2로 변경합니다.

sudo권한 이없는 경우 두 사용자는 USER1 디렉토리에 대한 읽기 권한과 USER2 디렉토리에 대한 쓰기 권한이 있는지 확인해야합니다. 이러한 액세스 권한이 있으면 다음 명령을 입력 할 수 있습니다.

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

그러면 해당 파일이 복사되지만 USER2는 적절한 권한이있을 때까지 파일을 조작하지 못할 수도 있습니다.


이것은 USER1이 sudo 액세스 권한을 가진 경우에만 작동하며 다중 사용자 시스템에서는 그렇지 않을 수 있습니다.
BostonHiker

다른 옵션은 다른 사용자가 권한을 갖도록 자신의 폴더에 대한 권한을 설정하는 것이지만 가능하면이 옵션이 훨씬 더 쉽습니다.
Geary Shull

@BostonHiker 나는 복사를하는 사람이 USER1 또는 USER2가 아니며 sudo 권한을 가지고 있다고 가정했습니다. 이것은 아마도 제 생각에는 좋지 않은 가정 일 것입니다.
Charles Green

@Charles Green-가정을 진술하기 위해 답을 편집하십시오. 그렇지 않으면 불완전하거나 오해의 소지가 있습니다.
BostonHiker

@BostonHiker 완료. 정직하게 해주셔서 감사합니다.
Charles Green

6

sudo 권한이 없지만 두 사용자로 로그인 할 수 있으면 localhost와 함께 scp를 사용할 수 있습니다.

scp file1 user2@localhost:/home/user2/

이것이 원격 호스트에 관한 것이라고 생각하거나 문제의 머신에서 SSH / SFTP 서버가 실행되고 있다고 생각하는 이유는 무엇입니까?
David Foerster

1
당신은 SSH가 설치되어 가정
loudstil

5

USER1로서 :

cp [filename] /tmp
chmod 777 /tmp/[filename]

USER2로서 :

cp /tmp/[filename] .

USER1로서 :

rm /tmp/[filename]

당신은 더 많은 투표를 deserver :)
Neeraj Jain

1

ssh가 설치되어 있지 않거나 키 / 비밀을 공유하고 싶지 않다고 가정하십시오.

user1이 group1에 있고 user2가 group2에 있고 user1! = user2 및 group1! = group2라고 가정하십시오.

공유 그룹 group3s를 작성하십시오.

addgrp group3

user1과 user2를 그룹 3에 추가하십시오.

한 사용자가 소유하지만 group3의 그룹 소유권이있는 상호 액세스 가능한 장소에 디렉토리를 작성하십시오.

#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

여기에있는 다른 모든 대답에는 루트 액세스 권한이 필요 하거나 같은 컴퓨터의 모든 사용자가 파일을 복사하거나 암호 공유가 필요합니다. 그렇지 않은 방법은 다음과 같습니다.

USER2다음 명령을 실행 (의 그 밥을 부르 자) (당신은 대체 할 수있는 /tmp두 사용자가 쓰기 권한을 가지고 임의의 디렉토리에 있지만, /tmp기본적으로이 과정을 전복 악의적 인 사용자를 방지하기 끈적하기 때문에 이상적이다. 디렉토리 소유 세계적으로 읽을 수있는 Bob의 작품) :

[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은 파일을 이동하고 소유권을 가져옵니다.

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

Bob은 원하는 경우 무결성을 확인할 수 있습니다. 그렇다면, Alice 만 쓸 수 있는지 확인해야합니다 /tmp/test.txt.

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

파일이 올바르게 복사되면 출력이 표시되지 않습니다.


-1

한 사용자를 다른 사용자에게 복사하기 전에 su user로 로그인 한 다음 cp 명령을 사용해야합니다.

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

소유권을 이전 USER2하지는 않지만 그대로 둡니다 root. -1
David Foerster

@DavidFoerster는 소유권을 양도하지 않고 파일을 한 사용자에서 다른 사용자로 복사합니다. 루트 사용자를 사용하여 파일을 전송할 수 있습니다. OK
Shyam Gupta
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.