![Linux에서 사용자의 파일을 다른 사용자에게 복사](https://linux55.com/image/6600/Linux%EC%97%90%EC%84%9C%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EB%8B%A4%EB%A5%B8%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%97%90%EA%B2%8C%20%EB%B3%B5%EC%82%AC.png)
내 홈 디렉터리의 파일을 다른 사용자의 디렉터리로 복사하려고 합니다. 다른 사용자에게 sudo 액세스 권한이 있고 비밀번호는 없습니다. 나는 다음과 같은 일을하려고합니다 :
sudo secondUser cp /home/firstUser/file /home/secondUser
이를 수행할 수 있는 방법이 있습니까? 또한 루트 액세스 권한이 없으며 두 번째 사용자의 비밀번호도 모릅니다.
답변1
편집: 예예추가 설정 없이 이 작업을 수행하는 빠르고 쉬운 방법입니다.
cat ~firstUser/file | sudo -u secondUser tee ~secondUser/file >/dev/null
모든 파일이 전송됩니다.콘텐츠정확히. 원본 파일과 일치하는 파일 권한 및/또는 타임스탬프가 중요하다면 chmod
및 를 각각 사용하여 수정 해야 합니다 touch
.
원래 답변:
여기서 문제는 다음과 같습니다.
secondUser
홈 디렉토리에 접근할 수 없습니다.- 액세스할 수 없는
secondUser
홈 디렉터리입니다 .
따라서 cp
명령을 직접 실행하든 로 실행하든 관계없이 secondUser
파일 복사를 수행할 수 없습니다 .
액세스 권한 이 없다고 말하면 root
확실한 대답은 누구나 읽을 수 있는 중간 위치를 통해 파일을 복사하고 /tmp
파일의 권한을 누구나 읽을 수 있도록 변경하는 것입니다. 그러나 파일 전송 중에 서버의 모든 사용자가 파일을 읽을 수 있으므로 파일의 데이터가 민감한 경우에는 이 작업을 수행하지 않을 수 있습니다. 그렇다면아니요민감한 데이터인 경우 다음을 수행하세요.
cp file /tmp/
chmod a+r /tmp/file
sudo -u secondUser cp /tmp/file ~secondUser
rm /tmp/file
더 나은 옵션은 귀하와 만 포함된 그룹을 만들고 해당 그룹 에 속한 파일의 복사본을 소유하는 것 secondUser
입니다 . 이렇게 하면 파일을 만들 필요가 없습니다.chgrp
/tmp
세계- 읽을 수 있지만 그룹( 사용 chmod g+r /tmp/file
)만 읽을 수 있습니다. 하지만 groupadd
그 자체로 루트 접근이 필요하기 때문에 정리가 쉽지 않습니다. 상황에 따라(자주 공유/공동 작업을 시도하는 경우 적용될 수 있음 secondUser
) 나중에 사용할 수 있도록 관리자에게 이 그룹을 설정하도록 요청하는 것이 좋습니다.
답변2
문제는 다음과 같습니다.
sudo -u secondUser cp /home/firstUser/file /home/secondUser
일단 가 되면 secondUser
액세스할 수 없습니다 /home/firstUser/file
.
secondUser
해결책은 파일을 다른 이름으로 열고 해당 파일 설명자를 firstUser
상속 해야 한다는 것입니다.secondUser
안전 조치로 , 및 를 제외한 모든 파일 설명자는 닫힙니다 sudo
. 그러나 이 경우에는 이것이 필요한 전부입니다(더 많은 파일 설명자의 상속을 명시적으로 허용할 수 있음).0
1
2
sudo -u secondUser < /home/firstUser/file sh -c 'cat > /home/secondUser/file'
tar
메타데이터 저장이 가능한 보다 일반적인 솔루션을 위해 다음 과 같은 출력을 cpio
프로세스 끝에 넣을 수 있습니다 .sudo
stdin
tar c file1 file2 file3 | sudo -u secondUser tar x -C ~secondUser
답변3
sudo의 -u 플래그를 사용하면 명령을 실행해야 하는 사용자 계정을 지정할 수 있지만 다른 사용자의 비밀번호를 알아야 합니다.
sudo -u secondUser cp file /home/secondUser/file
다른 사용자의 비밀번호를 모르면 이 작업을 수행하지 못할 수도 있습니다. 이는 시스템의 일반적인 권한 분리 설계의 일부이며 이상적으로는 우회가 불가능합니다.
또한 파일을 두 사용자 계정 모두가 액세스할 수 있는 위치(예: /tmp)로 이동하고 두 번째 사용자가 해당 파일을 자신의 홈 디렉터리로 이동하도록 할 수도 있습니다.
답변4
파일을 /tmp에 복사하고
su
두 번째 사용자에 대한 권한을 777로 변경합니다. /tmp에서 파일을 복사합니다.
명령이 sudo secondUser
잘못되었습니다.