如果我在一台计算机上有 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。