Флаг -f требуется, чтобы bash интерпретировал его как функцию, а не как переменную. См. справочную страницу .
Зачем вам усложнять nc
?
Настройте три общих каталога с общими группами (у вас только три пользователя, так что это три отдельные группы :u1 -u2, u2 -u3, u1 -u3 ). Выполняйте работу в этих общих каталогах, поэтому копирование не требуется.
Пользователи имеют право устанавливать 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 должны быть включены в первую очередь.