在本地用户之间共享 Linux 中的文件/数据,而无需他们知道彼此的密码或具有 root 权限

在本地用户之间共享 Linux 中的文件/数据,而无需他们知道彼此的密码或具有 root 权限

如果我在一台计算机上有 3 个(或更多)用户,让他们之间共享文件的最佳(最简单)方法是什么?

问题是 UserX 应该能够向 UserY 发送文件,而 UserZ 却无法获取或查看这些文件。其中 X、Y、Z 可以是 1,2 或 3。
没有用户拥有其他用户的密码。


基本上,如果我是 User1,我希望能够做到send dir/file to User2,而 User2 也能做到receive from User1

我已经考虑过nc,但它不能保证如果 User1 想发送给 User2,他实际上不会发送给 User3。

共享目录是我唯一的选择吗?如果文件很大并且用户希望将它们放在其他地方,则看起来太混乱了。

答案1

你为什么要复杂化nc

设置三个具有共享组的共享目录(您只有三个用户,因此这是三个不同的组:u1-u2、u2-u3、u1-u3)。在这些共享目录中执行工作,因此不需要复制。

答案2

用户有权ACL为自己的文件设置s。

要允许john仅将文件“发送”给特定用户 ( joe),只需john执行即可,例如:

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。

相关内容