autofs
 O
 O autofs é um serviço de montagem automática de sistemas de arquivo locais ou remotos que já vem habilitado por padrão em algumas distro GNU/Linux, como SuSE e Kurumin.
O Slackware possui autofs, mas não vem habilitado por padrão. Vou demonstrar como habilitar esse serviço.
Observação: todos os procedimentos devem ser executados como superusuário (root).
Inicialização
Os scripts de inicialização no Slackware ficam em
/etc/rc.d/, mas não há um script pronto para o autofs.Salve o seguinte código como
/etc/rc.d/rc.autofs e torne o arquivo executável:#!/bin/bash
DAEMON=/usr/sbin/automount
DELAY=5
localoptions=
getmounts() {
    #
    # Check for local maps to be loaded
    #
    #
    if [[ -f /etc/auto.master ]]
    then
        sed -re 's/^#.*$//g; /^\s*$/d' /etc/auto.master | while read dir map options
        do
            if [[ ! -z "$dir" && ! -z "$map" && x`echo "$map" | cut -c1` != 'x-' ]]
            then
                map=`echo "/etc/$map" | sed -e 's:^/etc//:/:'`
                options=`echo "$options" | sed -e 's/\(^\|[ \t]\)-/\1/g'`
                if [[ -x $map ]]
                then
                    echo "$DAEMON -t $DELAY $dir program $map $options $localoptions"
                elif [[ -f $map ]]
                then
                    echo "$DAEMON -t $DELAY $dir file $map $options $localoptions"
                else
                    echo "$DAEMON -t $DELAY $dir `basename $map` $options $localoptions"
                fi
            fi
        done
    fi
    #
    # Check for YellowPage maps to be loaded
    #
    if [[ -e /usr/bin/ypcat  && `ypcat -k auto.master 2>/dev/null | wc -l` > 0 ]]
    then
        ypcat -k auto.master | while read dir map options
        do
            if [[ ! -z "$dir" && ! -z "$map" && x`echo "$map" | cut -c1` != 'x-' ]]
            then
                map=`echo "$map" | sed -re 's/^auto_/auto./'`
                if echo $options | grep -- '-t' >/dev/null 2>&1
                then
                    mountoptions="--timeout $(echo $options | sed 's/^.*-t\(imeout\)*[ \t]*\([0-9][0-9]*\).*$/\2/g')"
                fi
                options=`echo "$options" | sed -re 's/--*t(imeout)*[ \t]*[0-9][0-9]*//g; s/^(\s*)-/\1/g'`
                echo "$DAEMON $dir yp $map $options $localoptions"
            fi
        done
    fi
}
#
# Status lister.
#
status_autofs() {
    echo "Configured Mount Points:"
    echo "------------------------"
    getmounts
    echo
    echo "Active Mount Points:"
    echo "--------------------"
    mount | grep '^automount'
    #ps ax | egrep "[0-9]:[0-9]{2} $DAEMON " | while read pid tt stat time command
    #do
    #    echo $command
    #done
    echo
}
start_autofs() {
    # Check if the automounter is already running?
    if [[ ! -f /var/lock/subsys/autofs ]]
    then
        echo 'Starting automounter: '
        getmounts | sh
        touch /var/lock/subsys/autofs
    fi
}
stop_autofs() {
    echo 'Stopping automounter: '
    kill -TERM $(/sbin/pidof /usr/sbin/automount)
    rm -f /var/lock/subsys/autofs
}
reload_autofs() {
    if [[ ! -f /var/lock/subsys/autofs ]]
    then
        echo "Automounter not running"
        exit 1
    fi
    echo "Checking for changes to /etc/auto.master ...."
    TMP1=`mktemp /tmp/autofs.XXXXXX` || { echo "could not make temp file" >&2; exit 1; }
    TMP2=`mktemp /tmp/autofs.XXXXXX` || { echo "could not make temp file" >&2; exit 1; }
    getmounts > $TMP1
    ps ax | egrep "[0-9]:[0-9]{2} $DAEMON " | while read pid tt stat time command
    do
        echo "$command" >> $TMP2
        if ! grep -q "^$command" $TMP1
        then
            kill -USR2 $pid
            echo "Stop $command"
        fi
    done
    cat $TMP1 | while read x
    do
        if ! grep -q "^$x" $TMP2
        then
            $x
            echo "Start $x"
        fi
    done
    rm -f $TMP1 $TMP2
}
case "$1" in
    start)
        start_autofs
        ;;
    stop)
        stop_autofs
        ;;
    restart)
        stop_autofs
        sleep 2
        start_autofs
        ;;
    reload)
        reload_autofs
        ;;
    force_start)
        stop_autofs &>/dev/null
        sleep 2
        start_autofs
        ;;
    status)
        status_autofs
        ;;
    *)
        echo "Usage: /etc/rc.d/rc.autofs {start|stop|restart|reload|status}"
        exit 1
        ;;
esacExecute então o seguinte comando:
echo '[ -x /etc/rc.d/rc.autofs ] && /etc/rc.d/rc.autofs force_start' >> /etc/rc.d/rc.localConfigurações
O principal arquivo de configuração do
autofs é /etc/auto.master.Cada linha do arquivo indica um diretório para os pontos de montagem. A primeira coluna é o nome do diretório – que não precisa existir no sistema de arquivos, pois será gerenciado dinamicamente pelo
autofs – a segunda coluna é o caminho para o arquivo de configuração específico apra gerenciar as montagens nesse diretório e a terceira coluna são as opções.Por exemplo:
/auto   /etc/auto.misc  --timeout=30Vai criar o diretório
/auto/ e usar o arquivo /etc/auto.misc para as configurações, com um timeout de trinta (30) segundos.Digamos que queremos usar o diretório
/auto/ para montar disquete, CD-ROM e USB, e queremos que o autofs gerencie o /home/ para montar os homedirs remotos via NFS. Usaremos /etc/auto.misc para o /auto/ e o /etc/auto.home para configurar o NFS:/auto   /etc/auto.misc  --timeout=30
/home   /etc/auto.home  --timeout=30Configuração dos pontos de montagem de recursos locais
Os pontos de montagem locais estarão em
/auto/ e serão gerenciados pelo arquivo /etc/auto.misc.Cada linha é um ponto de montagem. A primeira coluna é o nome do ponto de montagem dentro de
/auto/, a segunda coluna são as opções e a terceira é o dispositivo a ser montado.As opções são as mesmas do comando
mount. A única exceção é a opção -fstype, para indicar o sistema de arquivo.Por exemplo, pra montar o disquete em
/auto/floppy/ identificando o sistema de arquivo automaticamente, de modo síncrono, com máscara 0000 e modo 0777:floppy  -fstype=auto,rw,sync,umask=0,mode=0777  :/dev/fd0Vamos ao arquivo completo: CDROM, disquete e USB (meu USB é reconhecido como
/dev/sda):cd      -fstype=iso9660,exec,ro                 :/dev/cdrom
floppy  -fstype=auto,rw,sync,umask=0,mode=0777  :/dev/fd0
usb     -fstype=auto,rw,sync,umask=0,mode=0777  :/dev/sdaConfigurações dos pontos de montagem de recursos remotos
Ainda é possível montar diretório remotos via NFS, bastando informar o IP ou nome da máquina antes do nome do dispositivo.
Por exemplo:
remote  -fstype=nfs,rw,async,soft,timeo=60,rsize=8192,wsize=8192    192.168.0.2:/sharedVai montar o diretório exportado
/shared/ de 192.168.0.2 em /auto/remote/. A opção timeo tem prioridade sobre a opção timeout de /etc/auto.master, alterando seu valor apenas para o ponto de montagem em questão.Para recursos remotos é aconselhável usar blocos maiores que 4KB. No exemplo o bloco é de 8KB.
Mas há uma configuração mais interessante. Digamos que a máquina 192.168.0.2 seja um servidor de usuários e está exportando os homedirs via NFS.
É possível montar somente um ou alguns homedirs de cada vez, não o
/home/ todo. Por exemplo, se o usuário blackstar logou, pra que montar também o homedir do usuário slack? Podemos montar apenas o homedir do usuário logado.E o melhor de tudo: o
autofs faz isso automaticamente!Para tanto o conteúdo de
/etc/auto.home será:*       -fstype=nfs,rw,async,soft,timeo=60,rsize=8192,wsize=8192    192.168.0.2:/home/&O
/home/& indica que não será montado o /home/ todo, mas apenas os subdiretórios solicitados. O campo * na primeira coluna indica que será usado o nome representado por &.Assim, como
/etc/auto.home está gerenciando o diretório /home/, quando o usuário blackstar se conectar, seu diretório será montado como /home/blackstar/, vindo de 192.168.0.2, mas não existirá o diretório /home/slack/ – a menos que o usuário slack conecte.Iniciando o serviço
Basta agora iniciar o serviço:
/etc/rc.d/rc.autofs startSe tudo correu bem, você poderá ver os pontos de montagem com o comando:
/etc/rc.d/rc.autofs statusInsira um disquete na unidade
/dev/fd0 (A:) e acesse seu conteúdo sem precisar montá-lo:ls /auto/floppy/Só um conselho: retire do
fstab os pontos de montagem usados pelo autofs. Pode até deixar o fstab gerenciar os mesmos recursos – eles apenas serão montados também nos pontos de montagem do fstab –, mas normalmente não faz muito sentido.[]'s
Cacilhas La Batalema
 


 CC-BY: Os textos deste blog podem ser reporduzidos contanto que sejam informados autor e origem
 CC-BY: Os textos deste blog podem ser reporduzidos contanto que sejam informados autor e origem