udev: Aguarde que as permissões de dispositivos sejam configuradas antes de executar o script

0

Estou tentando passar dispositivos USB para um contêiner do docker em execução usando o udev. No entanto, o script é chamado de antes que as permissões e a propriedade do grupo sejam definidas corretamente no dispositivo, causando todos os tipos de problemas de permissão no contêiner. Como posso resolver isso?

A resposta mais comum que eu vejo no google envolve sleep e um script chamando outro, mas isso parece hackish para mim. Existe uma maneira melhor?

Esta é a função relevante do script chamado para adicionar o dispositivo:

function add_device() {
    # Check that device exists and is a character device
    if [ ! -e $DEV ] || [ ! -c $DEV ]
    then
        exit 1
    fi

    MAJOR=$(echo $((0x$(stat -c "%t" "$DEV")))) # Get major number and convert to decimal with echo
    MINOR=$(echo $((0x$(stat -c "%T" "$DEV")))) # Get minor number and convert to decimal with echo
    MODE=$(stat -c "%a" "$DEV") # Get device file permissions
    GID=$(stat -c "%g" "$DEV") # Get device file group id

    docker exec $CONTAINER /bin/bash -c "mkdir -p $(dirname $DEV) \
        && mknod -m $MODE $DEV c $MAJOR $MINOR \
        && chgrp $GID $DEV \
        && echo $(date --rfc-3339=seconds): Character device $DEV created as (major:minor) $MAJOR:$MINOR with owner root:$GID and permissions $MODE >> /var/log/dynamic-devices.log"
}
    
por BadIdeaException 16.12.2017 / 15:39

0 respostas