File: unix.7

package info (click to toggle)
manpages-pt 20040726-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 2,988 kB
  • sloc: sh: 45; makefile: 16
file content (257 lines) | stat: -rw-r--r-- 8,063 bytes parent folder | download | duplicates (6)
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