1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257
|
.\" This man page is Copyright (C) 1999 Andi Kleen <ak@muc.de>.
.\" Permission is granted to distribute possibly modified copies
.\" of this page provided the header is included verbatim,
.\" and in case of nontrivial modification author and date
.\" of the modification is added to the header.
.\" $Id: unix.7,v 1.1 2000/10/20 13:05:12 ricardo Exp $
.TH UNIX 7 "07/05/1999" "Pgina do Manual Linux" "Manual do Programador Linux"
.SH NOME
unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL \- Sockets para comunicao local interprocessos.
.SH SINOPSE
.B #include <sys/socket.h>
.br
.B #include <sys/un.h>
.IB unix_socket " = socket(PF_UNIX, type, 0);"
.br
.IB error " = socketpair(PF_UNIX, type, 0, int *" sv ");"
.SH DESCRIO
A famlia de sockets
.B PF_UNIX
(tambm conhecida como
.B PF_LOCAL )
usada para comunicao eficiente entre processos na mesma
mquina. Sockets Unix podem ser annimos (criados pelo
.BR socketpair (2))
ou associados com um arquivo do tipo do socket.
O Linux tambm suporta um espao de nomes abstrato, que independente do
sistema de arquivos.
Tipos vlidos so
.B SOCK_STREAM
para um socket orientado a stream, e
.B SOCK_DGRAM
para um socket orientado a datagrama que preserva os limites das mensagens.
Os sockets Unix tambm so confiveis e no reordenam os datagramas.
Os sockets Unix suportam a passagem para outros processos de descritores de arquivos ou credenciais de processos,
como dados ancilares para datagramas.
.SH FORMATO DE ENDEREO
Um endereo Unix definido como um nome de arquivo no sistema de arquivos ou
como uma string nica no espao de nomes abstrato. Os sockets criados pelo
.BR socketpair (2)
so annimos. Para sockets no annimos, o endereo-alvo pode ser setado
usando-se
.BR connect (2).
O endereo local pode ser setado usando-se
.BR bind (2).
Quando um socket conectado e ainda no tem um endereo local, um
endereo nico ser gerado automaticamente no espao de nomes abstrato.
.RS
.nf
#define UNIX_PATH_MAX 108
.ta 4n 17n 42n
struct sockaddr_un {
sa_family_t sun_family; /* AF_UNIX */
char sun_path[UNIX_PATH_MAX]; /* caminho de diretrio */
};
.fi
.RE
.B sun_family
sempre contm
.BR AF_UNIX .
.B sun_path
contm o caminho de diretrio, terminado em zero, do socket no sistema de arquivos.
Se
.B sun_path
comea com um byte zero, ele se refere ao espao de nomes abstrato
mantido pelo mdulo do protocolo Unix.
O endereo do socket neste espao de nomes dado pelo restante dos bytes em
.BR sun_path .
Note que os nomes no espao de nomes abstrato no so terminados em zero.
.SH OPES DE SOCKET
Por razes histricas, essas opes de socket so especificadas com um tipo
SOL_SOCKET mesmo sendo especficos do PF_UNIX.
Eles podem ser selecionados com
.BR setsockopt (2)
e lidos com
.BR getsockopt (2)
especificando-se SOL_SOCKET como a famlia de socket.
.B SO_PASSCRED
habilita o recebimento das credenciais da mensagem ancilar de processo de
envio. Quando essa opo setada e o socket ainda no est conectado,
um nome nico ser gerado automaticamente no espao de nomes abstrato.
Espera um flag booleano inteiro.
.SH MENSAGENS ANCILARES
Por razes histricas, esses tipos de mensagens ancilares so
especificados com um tipo SOL_SOCKET mesmo sendo especficos do PF_UNIX.
Para envi-los, setar o campo
.B cmsg_level
da estrutura
.B cmsghdr
com SOL_SOCKET, e o campo
.B cmsg_type
com o tipo. Para mais informaes, veja
.BR cmsg (3).
.TP
.B SCM_RIGHTS
Envia ou recebe um conjunto de descritores de arquivo de outro processo.
A poro de dados contm uma matriz de inteiros com os descritores de arquivos.
Os descritores de arquivo passados se comportam como se tivessem sido criados com
.BR dup (2).
.TP
.B SCM_CREDENTIALS
Envia ou recebe credenciais do unix. Isto pode ser usado para autenticao.
As credenciais so passadas como uma mensagem ancilar de
.B struct ucred
.
.RS
.nf
.ta 4n 11n 17n
struct ucred {
pid_t pid; /* "process id" do processo de envio */
uid_t uid; /* "user id" do processo de envio */
gid_t gid; /* "group id" do processo de envio */
};
.fi
.RE
As credenciais que o remetente especifica so verificadas pelo kernel.
Um processo com id de usurio efetivo igual a 0 tem permisso para especificar valores que
no casam com o seu prprio valor.
O remetente precisa especificar seu prprio id de processo (a menos que ele tenha
.BR CAP_SYS_ADMIN ),
seu id de usurio, id de usurio efetivo ou setar o id de usurio (a menos que ele tenha
.BR CAP_SETUID ),
e seu id de grupo, id de grupo efetivo ou setar o id do grupo (a menos que ele tenha
.BR CAP_SETGID ).
Para receber uma mensagem de
.B struct ucred
a opo
.B SO_PASSCRED
precisa estar habilitada no socket.
.SH VERSES
.B SCM_CREDENTIALS
e o espao de nomes abstrato foram introduzidos com o Linux 2.2 e no deve
ser usados em programas portveis.
.SH NOTAS
Na implementao Linux, os sockets que so visveis no sistema de
arquivos respeitam as permisses do diretrio onde eles esto. Seus
proprietrios, grupo e permisses podem ser alterados.
A criao de um novo socket falhar se o processo no tiver permisso de escrita e
busca (execuo) no diretrio no qual o socket criado.
A conexo com o objeto do socket requer permisso de leitura/escrita.
Este comportamento difere de muitos sistemas derivados do BSD,
que ignoram permisses para sockets Unix. Programas portveis no devem confiar
nessa implementao, por segurana.
Ligar-se a um socket com um nome de arquivo cria um socket
no sistema de arquivos que precisa ser deletado por que chama quando ele no for
mais necessrio (usando-se
.BR unlink (2)).
Aplica-se a semntica "fecha para trs" normal do Unix; o socket pode ser desligado
a qualquer momento, e ser finalmente removido do sistema de arquivos quando a ltima
referncia a ele for encerrada.
Para enviar descritores de arquivos ou credenciais, voc precisa enviar/ler pelo menos
um byte.
.SH ERROS
.TP
.B ENOMEM
Sem memria.
.TP
.B ECONNREFUSED
.BR connect (2)
foi chamado com um objeto de socket que no est escutando. Isto pode acontecer
quando um socket remoto no existe, ou o nome de arquivo no um socket.
.TP
.B EINVAL
Um argumento invlido foi passado. Uma causa comum a perda de configurao do AF_UNIX
no campo sun_type do endereo passado, ou o socket est em um estado invlido
para a operao aplicada.
.TP
.B EOPNOTSUPP
Uma operao de stream foi chamada em um socket no orientado a stream, ou tentou
usar uma opo de dados fora de banda.
.TP
.B EPROTONOSUPPORT
O protocolo passado no PF_UNIX.
.TP
.B ESOCKTNOSUPPORT
Tipo de socket desconhecido.
.TP
.B EPROTOTYPE
O socket remoto no encontra o tipo de socket local (SOCK_DGRAM
vs. SOCK_STREAM).
.TP
.B EADDRINUSE
O endereo local selecionado j foi pego, ou o objeto de socket do sistema de arquivo
j existe.
.TP
.B EISCONN
.BR connect (2)
foi chamado em um socket j conectado, ou um endereo-alvo foi
especificado em um socket conectado.
.TP
.B ENOTCONN
A operao de socket precisa de um endereo-alvo, mas o socket no est conectado.
.TP
.B ECONNRESET
O socket remoto foi encerrado inesperadamente.
.TP
.B EPIPE
O socket remoto foi encerrado em um socket de stream. Se habilitado, um
.B SIGPIPE
enviado tambm. Isto pode ser evitado pela passagem da flag
.B MSG_NOSIGNAL
para
.BR sendmsg (2)
ou para
.BR recvmsg (2).
.TP
.B EFAULT
O endereo de memria do usurio no era vlida.
.TP
.B EPERM
O remetente passou credenciais invlidas na
.BR "struct ucred" .
.PP
Outros erros podem ser gerados pela camada genrica de sockets ou
pelo sistema de arquivos, enquanto geram um objeto de socket do sistema de arquivos. Veja
as pginas de manual apropriadas para maiores informaes.
.SH VEJA TAMBM
.BR recvmsg (2),
.BR sendmsg (2),
.BR socket (2),
.BR socketpair (2),
.BR cmsg (3),
.BR socket (7)
.SH CRDITOS
Esta pgina de manual foi escrita por Andi Kleen.
.SH TRADUZIDO POR LDP-BR em 21/08/2000.
\&\fR\&\f(CWRubens de Jesus Nogueira <darkseid99@usa.net> (traduo)\fR
\&\fR\&\f(CWXxxxxxx Xxxxxxxxx Xxxxxxxx <xxxxxxxxx@xxxxxxx> (reviso)\fR
|