お互いのパスワードを知らない、またはroot権限を持たないローカルユーザー間でLinux上のファイル/データを共有する

お互いのパスワードを知らない、またはroot権限を持たないローカルユーザー間でLinux上のファイル/データを共有する

1台のコンピュータに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

共有グループを持つ3つの共有ディレクトリを設定します(ユーザーは3人だけなので、u1-u2、u2-u3、u1-u3の3つの異なるグループがあります)。操作はこれらの共有ディレクトリで実行されるため、コピーは必要ありません。

答え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を有効にする必要があります。

関連情報