서로의 비밀번호를 모르거나 루트 권한이 없는 로컬 사용자 간에 Linux의 파일/데이터 공유

서로의 비밀번호를 모르거나 루트 권한이 없는 로컬 사용자 간에 Linux의 파일/데이터 공유

한 컴퓨터에 3명(또는 그 이상)의 사용자가 있는 경우 사용자 간에 파일을 공유할 수 있는 가장 좋은(가장 쉬운) 방법은 무엇입니까?

문제는 UserX가 UserY에게 파일을 보낼 수 있어야 하지만 UserZ는 해당 파일을 가져오거나 볼 수 없다는 것입니다. 그 중 X, Y, Z는 1, 2, 3이 될 수 있습니다.
어떤 사용자도 다른 사용자의 비밀번호를 갖고 있지 않습니다.


기본적으로 내가 User1이라면 내가 할 수 있고 싶고 send dir/file to User2User2도 할 수 있다 receive from User1.

생각해 봤지만 nc, User1이 User2에게 전송을 원한다고 해서 실제로 User3에게 전송하지 않을 것이라는 보장은 없습니다.

공유 디렉터리가 유일한 선택인가요? 파일이 크고 사용자가 다른 곳에서 파일을 원하면 너무 복잡해 보일 것입니다.

답변1

왜 그것을 복잡하게 만들고 싶습니까 nc?

공유 그룹이 있는 세 개의 공유 디렉터리를 설정합니다(사용자가 세 명뿐이므로 u1-u2, u2-u3, u1-u3의 세 가지 다른 그룹이 있습니다). 작업은 이러한 공유 디렉터리에서 수행되므로 복사가 필요하지 않습니다.

답변2

ACL사용자는 자신의 파일에 대해 를 설정할 권리가 있습니다 .

특정 사용자( ) john에게만 파일을 "전송"하도록 허용하려면 다음과 같이 하십시오.joejohn

setfacl -m u:joe:rw file

joe사용자가 파일에 액세스할 수 있도록 허용하는 데 사용됩니다 . 물론, 표준 권한은 접근 권한을 제외해야 합니다 joe(즉, joe그룹의 그룹 구성원이 아니고 john접근 권한이 없습니다 others). 원하는 대로 명령을 설정하십시오 setfacl. 간단한 스크립트를 사용하여 "보내기" 명령을 생성하려면 다음 제안 사항을 따르십시오.

#!/bin/bash

print_help(){
  echo "Usage: sendfile -u <user> file1 file2 ..."
  exit 1
}

while getopts "u:h" option
do
  case $option in
    u) user=$OPTARG
       if [[ "$(grep ^${user}: /etc/passwd)" == "" ]]
       then
         echo "$user not a valid user."
         exit
       fi ;; 
    h) print_help ;;
    *) print_help ;;
  esac
done 


if ((OPTIND == 1))
then
    echo "No user specified"
    exit 1
fi

shift $((OPTIND - 1))

setfacl u:${user}:rw "$@"

물론 먼저 ACL을 활성화해야 합니다.

관련 정보