Esta construção descreve um serviço.
O parâmetro
name é apenas para conveniência de
nomeação, serve simplesmente para distinguir mensagens de
relatórios e fornece uma predefinição para
opções que podem aceitar logicamente um nome como um argumento.
enabled
Esta construção permite facilitar o activar
e desactivar de serviços. O argumento pode ser ou
yes ou
no. O valor predefinido é
yes. Definir isto para
no desactiva serviços.
Exemplo:
enabled no;
port
Isto lista os portos onde o serviço deve estar
disponível. Os portos podem ser listados numa string ou formato
numérico. Se especificado, isto predefine para o nome do serviço
a menos que o serviço seja um serviço RPC, que neste caso o
valor do porto será atribuído dinamicamente pelo sistema.
Exemplo:
port "telnet", "rcmd", 56,
99;
interface
Isto especifica a quais interfaces os portos escutados
devem ser associados. Recebe uma lista de endereços IP como um
argumento, correspondente aos endereços configurados das interfaces
requeridas. Se esta palavra-chave não for dada ou quando o valor
especial
any é atribuído a ela, o serviço
irá unir-se a todas as interfaces disponíveis.
Exemplos:
interface 192.168.1.1, 192.168.1.2;
interface any;
exec
Isto especifica a invocação do
serviço. Pode ser feito um número de substituições
dentro da string, por favor veja
Modificadores de String em baixo.
Exemplo:
exec "/usr/sbin/in.telnetd -d";
server
Isto especifica o binário a ser executado, se
diferente de
exec.
Exemplo:
server "/usr/sbin/tcpd";
protocol
Isto especifica o protocolo socket a usar quando escuta
em portos para o serviço. O argumento pode ser ou
tcp ou
udp. A definição predefinida para esta variável
é
tcp.
Exemplo:
protocol tcp;
user
Isto especifica o id de utilizador sob qual este
serviço deve correr. Irá aceitar um argumento em formato ou
simbólico ou numérico. A menos que seja fornecido
group
(veja em baixo), o id de grupo é também definido para o grupo
primário do utilizador.
Exemplo:
user "nobody";
group
Isto especifica o id de grupo sob qual este
serviço deve correr. Irá aceitar um argumento em formato ou
simbólico ou numérico.
Exemplo:
group "system";
backlog
Isto é um argumento de backlog que será
passado à chamada de sistema
listen(2).
Exemplo:
backlog 30;
instances
Isto especifica o número máximo de
instâncias de serviço que podem correr em simultâneo. A
predefinição para esta variável é 40.
Exemplo:
instances 50;
wait
Esta directiva emula o comportamento de
inetd(8)
wait. O argumento pode ser ou
yes ou
no. O valor
predefinido é
no. Definir isto para
yes também
reinicia o valor da opção
instances para 1.
Exemplo:
wait yes;
nice
Isto especifica a prioridade de processo para correr este
serviço como. O argumento é passado directamente para a chamada
de sistema
setpriority(2). O valor pode ser negativo.
Exemplo:
nice -5;
rpc
Isto especifica que o serviço deve ser registado
com o mapeador
portmap(8) do sistema como um serviço RPC. Aceita
uma lista de argumentos como se segue.
rpc {
name "string"; version
3,6,9-15,22;
}
O parâmetro name é opcional, e predefine para
nome do serviço.
chroot
Isto especifica o directório raiz para o
serviço. A string argumento pode aceitar modificadores como detalhado
em
Modificadores de String em baixo.
Exemplo:
chroot "/tftpboot/%O";
log
Esta directiva recebe dois argumentos. O primeiro tem de
ser ou o nome simbólico de uma directiva
log anteriormente
especificada (vem em baixo), ou ou a palavra
syslog sem
citação. Se for a última, a mensagem será
registada via chamada ao
syslog(3). O segundo argumento é a
mensagem que irá ser registada, sujeita aos modificadores detalhados em
Modificadores de String em baixo.
Exemplo:
log syslog "Service from %O
complete";
tcpd
Esta directiva faz com que sejam aplicados controlos de
acesso como especificados por tcp_wrappers. Isto tem o mesmo efeito que
invocar um serviço com o argumento
server de
/usr/sbin/tcpd (ou com o que o seu programa
tcpd(8) é
mantido), mas guarda o passo adicional de iniciar o programa. Irá
aceitar até dois argumentos adicionais. O primeiro é um nome de
serviço para aplicar contra as suas regras, e o segundo é um
bloco de instruções para executar se corresponderem. Se
não for especificado um nome, recorre ao nome do serviço. Se o
bloco de instruções não for definido, usa por
predefinição 'exit;'.
Exemplos:
tcpd "in.telnetd";
tcpd { exec "/usr/local/bin/winnuke %O"; }
tcpd "pointless" { echo "Hi guys, come on in."; }
tcpd "defiant" { echo "500 Access denied from %O."; exit; }
exit
Esta directiva é apenas útil num argumento
de bloco de instruções para a directiva
tcpd. Note bem -
não a usar (e não especificar alguma outra directiva de
terminação,como o
exec) irá resultar em que o
serviço vá correr para sempre.
Exemplo:
exit;
capability
Esta directiva especifica as capacidades que este
serviço deve ter quando corre. O argumento é uma string que
é passada directamente para o
cap_from_text(3). Sabemos,
é uma descrição muito pobre, mas esta funcionalidade
é de utilidade limitada e ao menos leia o ficheiro README.capabilities.
Exemplo:
capability "cap_setuid=ep";
rlimit
Esta directiva recebe dois argumentos. O primeiro
é um símbolo que especifica o tipo de limite requerido. Estes
estão listados mais abaixo. O segundo argumento toma um de dois
formatos. Pode ser ou um único valor numérico, que neste caso
ambos os limites soft e hard do recurso em questão irão ser
definidos para este valor. Alternativamente, pode ser uma lista no formato:
rlimit type {
soft x; hard y;
}
Neste caso os limites hard e soft serão definidos de modo
apropriado. Em ambos casos, pode ser especificada a palavra unlimited
em vez de um valor numérico, assim removendo qualquer
restrição. Os valores são passados directamente ao
syscall setrlimit(2), e deve ser especificado nesse contexto.
Tipos:
cpu, fsize, data, stack, core, rss, nproc, nofile,
memlock
Exemplo:
rlimit cpu 15;
initgroups
O argumento pode ser ou
yes ou
no. Esta
directiva faz com que
initgroups(3) seja chamado no arranque do
serviço, o que define os grupos suplementares do serviço de
acordo com o ficheiro
/etc/group.
Exemplo:
initgroups yes;
family
Esta directiva especifica a família de protocolos
a que o rlinetd deve unir sockets neste serviço. Actualmente, isto pode
ser ou
ipv4 ou
ipv6. Se não especificado, isto recorre a
algo apropriado para o sistema.
Exemplo:
family ipv6;
banner
Esta directiva permite-lhe despejar um ficheiro como
saída de uma ligação.
Exemplo:
banner "/etc/nologin";
echo
Esta directiva permite-lhe enviar uma linha gerada
dinamicamente para a ligação.
Exemplo:
echo "500 Service denied from your IP
(%O)";
filter
Esta directiva permite-lhe especificar um programa Linux
Socket Filter a ser associado cm o socket que escuta. Estes podem ser gerados
com uma ferramenta como o
lsfcc(1).
Exemplo:
filter
"/usr/local/lib/rlinetd/filters/privport";
chargen
Esta directiva faz ciclos internos, enviando dados para
qualquer ligação. Se não for dado um argumento, ecoa um
subconjunto de caracteres de escrita. No entanto, pode ser especificado um
nome de ficheiro como um argumento, que neste caso o conteúdo desse
ficheiro é enviado em ciclo infinito.
Exemplo:
chargen "/usr/local/lib/spam";
Esta construção especifica um
directório que contem ficheiros de configuração
adicionais para serem analisados. A análise destes ficheiros adicionais
não começa até que o ficheiro actual esteja completo. Os
argumentos match e ignore são opcionais, e se
especificados, são usados para filtrar os ficheiros no
directório. Os nomes de ficheiros devem corresponder à
expressão regular match, de dada, e não devem
corresponder à expressão regular ignore, se dada. Os
nomes de ficheiros começados com um ponto ('.') são saltados em
todos os casos. Os directórios não são lidos
recursivamente.