uri(7) Miscellaneous Information Manual uri(7) NOME uri, url, urn - identificador uniforme de recursos (URI), incluindo uma URL ou URN SINOPSE URI = [ absoluteURI | relativeURI ] [ "#" fragment ] absoluteURI = scheme ":" ( hierarchical_part | opaque_part ) relativeURI = ( net_path | absolute_path | relative_path ) [ "?" query ] scheme = "http" | "ftp" | "gopher" | "mailto" | "news" | "telnet" | "file" | "ftp" | "man" | "info" | "whatis" | "ldap" | "wais" | ... hierarchical_part = ( net_path | absolute_path ) [ "?" query ] net_path = "//" authority [ absolute_path ] absolute_path = "/" path_segments relative_path = relative_segment [ absolute_path ] DESCRICAO Um Identificador Uniforme de Recursos (Uniform Resource Identifier - URI) e uma cadeia de caracteres curta que identifica um recurso abstrato ou fisico (por exemplo, uma pagina da Web). Um Localizador Uniforme de Recursos (Uniform Resource Locator - URL) e uma URI que identifica um recurso atraves do seu mecanismo de acesso primario (por exemplo, sua 'localizacao' de rede), em vez do nome ou algum outro atributo daquele recurso. Um Nome Uniforme de Recurso (URN) e uma URI que precisa manter-se unica e persistente globalmente, mesmo quando o recurso deixa de existir ou se torna indisponivel. As URIs sao o meio padrao de nomear destinos de links de hipertexto para ferramentas como os web browsers. A "http://www.kernel.org" e uma URL (e portanto e uma URI). Muitas pessoas usam o termo URL largamente como um sinonimo de URI (apesar de que, tecnicamente, as URLs formam um subconjunto das URIs). As URIs podem ser absolutas ou relativas. Um identificador absoluto refere-se a um recurso independente de contexto, enquanto um identificador relativo refere-se a um recurso atraves da descricao de diferencas do contexto atual. Dentro de uma referencia de caminho relativo, os segmentos completos de caminhos '.' e '..' tem significados especiais: 'o nivel de hierarquia atual' e 'o nivel acima deste nivel de hierarquia', respectivamente, exatamente como sao nos sistemas do tipo UNIX. Um segmento de caminho que contem um caractere de dois-pontos nao pode ser usado como o primeiro segmento de um caminho relativo de uma URI (por exemplo, 'isto:aquilo'), porque ele poderia ser enganado por um nome de esquema; preceda tal segmento com ./ (por exemplo, './isto:aquilo'). Note que os descendentes do MS-DOS (por exemplo, o Microsoft Windows) substituem os dois-pontos do nome do dispositivo por uma barra vertical("|") em URIs, de forma que 'C:' se torna 'C|'. Um identificador de fragmento, se incluido, refere-se a uma porcao particular nomeada (fragmento) de um recurso; textos depois de um '#' identificam o fragmento. Uma URI comecando com '#' refere-se a aquele fragmento no recurso atual. Uso Ha muitos esquemas de URIs diferentes, cada um com regras e significados adicionais especificos, mas eles sao feitos intencionalmente para serem tao similares quanto possivel. Por exemplo, muitos esquemas de URL permitem que a autoridade tenha o seguinte formato, chamada aqui de ip_server (colchetes mostram o que e opcional): ip_server = [user [ : password ] @ ] host [ : port] This format allows you to optionally insert a username, a user plus password, and/or a port number. The host is the name of the host computer, either its name as determined by DNS or an IP address (numbers separated by periods). Thus the URI logs into a web server on host example.com as fred (using fredpassword) using port 8080. Avoid including a password in a URI if possible because of the many security risks of having a password written down. If the URL supplies a username but no password, and the remote server requests a password, the program interpreting the URL should request one from the user. Aqui estao alguns dos esquemas mais comuns em uso em sistemas tipo UNIX, que sao entendidos por muitas ferramentas. Note que muitas ferramentas usando URIs tambem tem esquemas internos ou especializados; veja a documentacao dessas ferramentas para informacoes sobre esses esquemas. http - servidor Web (HTTP) http://ip_server/path http://ip_server/path?query Esta e uma URL acessando um servidor web (HTTP). A porta padrao e 80. Se o caminho se refere a um diretorio, o servidor Web escolhera qual retorna; geralmente, se ha um arquivo denominado 'index.html' ou 'index.htm', seu conteudo e retornado, caso contrario, uma lista de arquivos no diretorio atual (com links apropriados) e gerada e retornada. Um exemplo e . Uma pesquisa pode ser dada no formato 'isindex' arcaico, consistindo em uma palavra ou frase, e nao incluindo um sinal de igual. Uma pesquisa tambem pode ser no formato 'GET', mais longo, que tem uma ou mais entradas de pesquisa no formato chave=valor, separadas pelo caractere (&). Note que chave pode ser repetida mais de uma vez, porem cabe ao servidor web e seus programas aplicativos determinar se ha algum significado para aquilo. Ha uma infeliz interacao com HTML/XML/SGML e o formato de pesquisa GET; quando tais URIs com mais de uma chave sao embutidas em documentos SGML/XML (incluindo HTML), o '&' tem que ser reescrito como '&'. Note que nem todas as pesquisas usam este formato; formas maiores podem ser muito longas para se armazenar como uma URI, de forma que eles usam um mecanismo de interacao diferente (chamado POST) que nao inclui os dados na URI. Veja a especificacao do CGI (Common Gateway Interface) em para maiores informacoes. ftp - File Transfer Protocol (FTP) ftp://ip_server/path Esta e uma URL acessando um arquivo atraves de um protocolo de transferencia de arquivo (FTP). A porta padrao (para controle) e 21. Se nenhum nome de usuario e incluido, e fornecido o nome de usuario 'anonymous' (anonimo), e neste caso muitos clientes fornecem como a senha o correio eletronico do requerente. Um exemplo e . gopher - servidor Gopher gopher://ip_server/gophertype selector gopher://ip_server/gophertype selector%09search gopher://ip_server/gophertype selector%09search%09gopher+_string A porta padrao do gopher e 70. gophertype e um campo de caractere unico que denota o tipo Gopher do recurso ao qual a URL se refere. O caminho inteiro tambem pode ser vazio, caso em que o delimitador '/' tambem e opcional e o padrao de gophertype e '1'. selector e o seletor do Gopher. No protocolo Gopher, os seletores sao uma sequencia de octetos que podem conter quaisquer octetos, exceto o hexadecimal 09 (HT do US-ASCII, ou tabulacao), hexadecimal 0A (caractere LF do US-ASCII), e 0D (caractere CR do US-ASCII). mailto - endereco de email mailto:email-address Este e um endereco de e-mail, geralmente no formato name@hostname. Vejamailaddr(7) para mais informacoes sobre o formato correto de um endereco de e-mail. Note que qualquer caractere % deve ser reescrito como %25. Um exemplo e . news - Newsgroup ou mensagem de noticias news:newsgroup-name news:message-id A newsgroup-name e um nome delimitado por pontos, tal como "comp.infosystems.www.misc". Se e '*' (como em ), ele e usado para se referir a 'todos os grupos de noticias disponiveis'. Um exemplo e . Um message-id corresponde ao ID de mensagem do IETF RFC 1036, sem os contornantes '<' e '>'; ele toma a forma unique@full_domain_name. Um identificador de mensagem pode ser distinguido de um nome de grupo de noticias pela presenca do caractere '@'. telnet - Telnet login telnet://ip_server/ O esquema de URL Telnet e usado para designar servicos de texto interativos que podem ser acessados pelo protocolo Telnet. O caractere final '/' pode ser omitido. A porta padrao e 23. Um exemplo e . file - arquivo normal file://ip_server/path_segments file:path_segments Este representa um arquivo ou diretorio acessivel localmente. Como um caso especial, ip_server pode ser 'localhost' ou vazio; isto e interpretado como "a maquina da qual a URL esta sendo interpretada". Se o caminho e para um diretorio, o visualizador deve mostrar o conteudo do diretorio com links para cada item; nem todos os visualizadores fazem isso. O KDE suporta arquivos gerados atraves da URL . Se o arquivo dado nao e encontrado, os escritores do browser podem querer tentar expandir o nome do arquivo atraves de um englobamento (veja glob(7) e glob(3)). O segundo formato (por exemplo, ) e um formato correto para se referir ao arquivo local. Porem, padroes mais antigos nao permitiam este formato, e alguns programas nao reconhecem isto como uma URI. Uma sintaxe mais portavel e o uso de uma cadeia vazia como o nome do servidor, por exemplo, ; este formato faz a mesma coisa e e facilmente reconhecido como uma URI por buscadores de padroes e programas mais antigos. Note que se voce realmente quer dizer 'inicie do local atual', nao especifique o esquema de jeito nenhum; use um endereco relativo, como <../test.txt>, que tem o efeito colateral de ser independente de esquema. Um exemplo deste esquema e . man - Documentacao de paginas de manual man:command-name man:command-name(section) Isto se refere as paginas de referencia do manual (man) online local. O nome do comando pode opcionalmente ser seguido por parenteses e pelo numero da secao; veja man(7) para mais informacoes sobre o significado dos numeros de secao. Este esquema de URI e unico para sistemas do tipo UNIX (tais como o Linux) e nao e registrado atualmente pelo IETF. Um exemplo e . info - Documentacao de paginas info info:virtual-filename info:virtual-filename#nodename info:(virtual-filename) info:(virtual-filename)nodename Este esquema se refere as paginas de referencia info online (geradas dos arquivos texinfo), um formato de documentacao usado por programas como as ferramentas GNU. Este esquema de URI e exclusivo para sistemas do tipo UNIX (tais como o Linux) e nao e registrado atualmente pelo IETF. No momento em que este e escrito, o GNOME e o KDE diferem em suas sintaxes de URI, e nao aceitam a sintaxe do outro. O primeiro dos dois formatos sao o formato GNOME; um nomes de nos todos os espacos sao escritos como sublinhados. O segundo dos dois formatos e o formato KDE; os espacos nos nomes de nos devem ser escritos como espacos, mesmo isso sendo proibido pelos padroes da URI. Espera-se que no futuro muitas ferramentas entenderao todos estes formatos e sempre aceitarao sublinhados para espacos nos nomes dos nos. Tanto no GNOME quanto no KDE, se o formato sem o nome do no e usado, o nome do no e assumido como sendo 'Top'. Exemplos de formato GNOME sao e . Exemplos de formato KDE sao e . whatis - Busca de documentacao whatis:string Este esquema busca no banco de dados de descricoes curtas (de uma linha) de comandos e retorna uma lista de descricoes contendo aquela string. Somente encontros de palavras completas sao retornados. Veja whatis(1). Este esquema de URI e unico para sistemas do tipo UNIX (tais como o Linux) e nao e registrado atualmente pelo IETF. ghelp - documentacao de ajuda do GNOME ghelp:nome-da-aplicacao Isto carrega a ajuda do GNOME para a aplicacao dada. Note que nao existe muita documentacao atualmente neste formato. ldap - Lightweight Directory Access Protocol (Protocolo Leve de Acesso a Diretorios) ldap://hostport ldap://hostport/ ldap://hostport/dn ldap://hostport/dn?atributos ldap://hostport/dn?atributos?escopo ldap://hostport/dn?atributos?escopo?filtro ldap://hostport/dn?atributos?escopo?filtro?extensoes This scheme supports queries to the Lightweight Directory Access Protocol (LDAP), a protocol for querying a set of servers for hierarchically organized information (such as people and computing resources). See RFC 2255 for more information on the LDAP URL scheme. The components of this URL are: hostport o servidor LDAP a se pesquisar, escrito como um nome de host, seguido opcionalmente por dois-pontos e a numero de porta. O padrao de porta LDAP e a porta TCP 389. Se vazio, o cliente determina qual o servidor usar. dn o Nome Distinto do LDAP, que identifica o objeto-base da busca LDAP (veja RFC 2253 secao 3). atributos uma lista de atributos, separados por virgulas, a serem retornados; veja a RFC 2251, secao 4.1.5. Se omitido, todos os atributos devem ser retornados. escopo especifica o escopo da busca, que pode ser uma da 'base' (para uma busca de objeto-base), 'um' (para uma busca de um nivel), ou 'sub' (para uma busca em sub-arvores). Se o escopo e omitido, 'base' e assumido. filtro especifica o filtro de busca (subconjunto de entradas a serem retornadas). Se omitido, todas as entradas devem ser retornadas. Veja RFC 2254 secao 4. extensoes uma lista, separada por virgulas, de pares tipo=valor, onde a porcao =valor pode ser omitida para opcoes que nao a requerem. Uma extensao prefixada com um '!' e critica (deve ser suportada para ser valida), caso contrario e nao-critica (opcional). Pesquisas LDAP sao as mais faceis de explicar com exemplos. Aqui esta uma pesquisa que pede ao ldap.itd.umich.edu informacoes sobre a Universidade de Michigan, nos E.U.A.: ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US Para obter apenas seu atributo de endereco postal, peca: ldap://ldap.itd.umich.edu/o=University%20of%20Michigan,c=US?postalAddress Para pedir a um host.com porta 6666 por informacoes sobre a pessoa com nome comum (cn) 'Babs Jensen' na Universidade de Michigan, peca: ldap://host.com:6666/o=University%20of%20Michigan,c=US??sub?(cn=Babs%20Jensen) wais - Servidores de Informacao de Grande Area (Wide Area Information Server) wais://hostport/database wais://hostport/database?search wais://hostport/database/wtype/wpath Este esquema designa um banco de dados WAIS, uma busca, ou um documento (veja IETF RFC 1625 para mais informacoes sobre WAIS). Hostport e o nome do host, opcionalmente seguido por dois-pontos e um numero de porta (o numero de porta padrao e 210). O primeiro formato designa um banco de dados WAIS para busca. O segundo formato desgina uma busca particular do banco de dados WAIS database. O terceiro formato desgina um documento particular dentro de um banco de dados WAIS a ser recuperado. wtype e a desginacao WAIS do tipo de objeto e wpath e o identificador de documento WAIS. outros esquemas Ha muitos outros esquemas URI. Muitas ferramentas que aceitam URIs suportam um conjunto de URIs internos (por exemplo, o Mozilla tem o esquema 'about:' para informacao interna, e o browser de ajuda do GNOME tem o esquema 'toc:' para varios locais de inicio). Ha muitos esquemas que foram definidos mas nao sao usados largamente na atualidade (por exemplo, prospero). O esquema 'nntp:' se tornou obsoleto em favor do esquema 'news:'. As URNs devem ser suportadas pelo esquema 'urn:', com um espaco de nomes hierarquico (por exemplo, urn:ietf:... identificaria documentos IETF); atualmente as URNs nao sao amplamente implementadas. Nem todas as ferramentas suportam todos os esquemas. Character encoding As URIs tem um numero limitado de caracteres, de forma que elas podem ser digitadas e usadas em uma variedade de situacoes. Os seguintes caracteres sao reservados, isto e, eles podem aparecer em uma URI mas seu uso se limita ao seu proposito reservado (dados conflitantes precisam usar o caractere de 'fuga' antes de formar a URI): ; / ? : @ & = + $ , Unreserved characters may be included in a URI. Unreserved characters include uppercase and lowercase Latin letters, decimal digits, and the following limited set of punctuation marks and symbols: - _ . ! ~ * ' ( ) All other characters must be escaped. An escaped octet is encoded as a character triplet, consisting of the percent character "%" followed by the two hexadecimal digits representing the octet code (you can use uppercase or lowercase letters for the hexadecimal digits). For example, a blank space must be escaped as "%20", a tab character as "%09", and the "&" as "%26". Because the percent "%" character always has the reserved purpose of being the escape indicator, it must be escaped as "%25". It is common practice to escape space characters as the plus symbol (+) in query text; this practice isn't uniformly defined in the relevant RFCs (which recommend %20 instead) but any tool accepting URIs with query text should be prepared for them. A URI is always shown in its "escaped" form. Caracteres nao-reservados podem ser do tipo de 'fuga' sem mudanca da semantica da URI, mas isto nao deve ser feito a menos que o URI esteja sendo usada em um contexto que nao permita que aparecam caracteres sem 'fuga'. Por exemplo, '%7e' e usado as vezes em lugar de '~' em um caminho de diretorio de URL do HTTP, mas os dois sao equivalentes. For URIs which must handle characters outside the US ASCII character set, the HTML 4.01 specification (section B.2) and IETF RFC 3986 (last paragraph of section 2.5) recommend the following approach: (1) traduzir a sequencia de caracteres em UTF-8 (IETF RFC 3629)--veja utf-8(7)--e entao (2) use o mecanismo de 'fuga', que e, use a codificacao %HH para os octetos 'inseguros'. Writing a URI When written, URIs should be placed inside double quotes (e.g., "http://www.kernel.org"), enclosed in angle brackets (e.g., ), or placed on a line by themselves. A warning for those who use double-quotes: never move extraneous punctuation (such as the period ending a sentence or the comma in a list) inside a URI, since this will change the value of the URI. Instead, use angle brackets instead, or switch to a quoting system that never includes extraneous characters inside quotation marks. This latter system, called the 'new' or 'logical' quoting system by "Hart's Rules" and the "Oxford Dictionary for Writers and Editors", is preferred practice in Great Britain and in various European languages. Older documents suggested inserting the prefix "URL:" just before the URI, but this form has never caught on. A sintaxe de URI foi projetada para nao ser ambigua. Porem, como as URIs se tornaram comuns, a midia tradicional (televisao, radio, jornais, revistas, etc.) tem usado cada vez mais referencias de URIs abreviadas, consistindo somente nas porcoes da autoridade e do caminho do recurso identificado (por exemplo, ). Tais referencias pretendem primariamente facilitar a interpretacao humana em lugar da maquina, assumindo que a heuristica baseada em contexto e suficiente para completar a URI (por exemplo, nomes de hosts que comecam com 'www' deveriam ter um prefixo de URI igual a 'http://', e nomes de hosts comecando com 'ftp' deveriam ter o prefixo 'ftp://'). Muitas implementacoes de clientes resolvem heuristicamente estas referencias. Tais heuristicas podem mudar com o tempo, particularmente quando novos esquemas forem introduzidos. Como URIs abreviadas tem a mesma sintaxe que um caminho de URL relativo, referencias a URIs abreviadas nao podem ser usadas onde URIs relativas sao permitidas, e so podem ser usadas quando nao ha base definida (como em caixas de dialogo). Nao use URIs abreviadas como links de hipertexto dentro de um documento; use o formato padrao descrito acima. PADROES (IETF RFC 2396) , (HTML 4.0) . NOTAS Qualquer ferramenta que aceite URIs (por exemplo, um navegador) em um sistema Linux deve ser capaz de manipular (diretamente ou indiretamente) todos os esquemas descritos aqui, incluindo os esquemas 'man:' e 'info:'. A manipulacao deles pela invocacao de algum outro programa e bom e de fato encorajado. Tecnicamente, o fragmento nao e parte da URI. Para informacoes sobre como embutir URIs (incluindo URLs) em um formato de dados, veja a documentacao naquele formato. O HTML usa o formato texto . Arquivos do texinfo usam o formato @uref{uri}. Man e mdoc tem a macro UR recem-adicionada, ou apenas incluem a URI no texto (visualizadores devem ser capazes de detectar :// como parte de uma URI). Os ambientes de desktop GNOME e KDE variam atualmente sobre as URIs que eles aceitam, em particular nos seus respectivos browsers de ajuda. Para listar paginas de manual, o GNOME usa enquanto o KDE usa , e para listar paginas 'info', o GNOME usa enquanto o KDE usa (o autor desta pagina de manual prefere a aproximacao do KDE aqui, mas um formato mais regular seria realmente melhor). Em geral, o KDE usa como um prefixo para um conjunto de arquivos gerados. O KDE prefere documentacao em HTML, acessada via . O GNOME prefere o esquema ghelp para armazenar e procurar documentacao. Nenhum browser manipula referencias 'file:' a diretorios no momento em que este texto foi escrito, tornando-se dificil referir-se a um diretorio completo com um URI compativel com um navegador. Como se nota acima, esses ambientes diferem na forma como manipulam o esquema 'info:', provavelmente a variacao mais importante. Espera-se que o GNOME e o KDE irao convergir para formatos URI comuns, e uma futura versao desta pagina de manual descrevera o resultado convergido. Esforcos para ajudar nessa convergencia sao encorajados. Security Uma URI nao posa, por si mesma, com uma ameaca a seguranca. Nao ha uma garantia geral de que uma URL, localizada em certo momento em um recurso dado, continuara ali. Nem ha qualquer garantia de que uma URL nao localizara um recurso diferente em algum lugar do passado; tal garantia so pode ser obtida da(s) pessoa(s) que controlam aquele espaco de nomes e o recurso em questao. Algumas vezes e possivel construir uma URL de forma que uma tentativa de realizar uma operacao aparentemente inofensiva, como a recuperacao de uma entidade associada ao recurso, provoque a ocorrencia de uma operacao remota possivelmente danosa. A URL insegura e construida tipicamente atraves da especificacao de um numero de porta diferente daquela reservada para o protocolo de rede em questao. O cliente inconscientemente contacta um site que esta, na verdade, rodando um protocolo diferente. O conteudo da URL contem instrucoes que, quando interpretada de acordo com este outro protocolo, causa uma operacao inesperada. Um exemplo foi o uso de uma URL gopher para produzir uma mensagem nao pretendida ou sem identificacao, que fosse enviada atraves de um servidor SMTP. Deve-se tomar cuidado no uso de qualquer URL que especifique um numero de porta diferente do padrao para o protocolo, especialmente quando e um numero do espaco reservado. Deve-se tomar cuidado para que, quando uma URI contenha delimitadores com caracteres de 'fuga' para um dado protocolo (por exemplo, caracteres CR e LF para protocolos telnet), esses nao percam os escapes antes da transmissao. Isto pode violar o protocolo, mas evita o possibilidade de que esses caracteres sejam usados para simular uma operacao extra ou parametros naquele protocolo, o que pode fazer uma operacao inesperada e possivelmente perigosa ser realizada. E claramente uma tolice usar uma URI que contem uma senha, que pretende-se que seja secreta. Em particular, o uso de uma senha dentro do componente "userinfo" de uma URI e fortemente nao recomendada, exceto naqueles casos raros em que o parametro "senha" pretende ser publica. BUGS A documentacao pode ser colocada em uma variedade de locais, tal que nao ha atualmente um bom esquema URI para documentacao online geral em formatos arbitrarios. Referencias no formato nao funcionam porque distribuicoes diferentes e requisitos de instalacao local podem colocar os arquivos em diretorios diferentes (pode ser em /usr/doc, /usr/local/doc, /usr/share, ou em qualquer outro lugar). Tambem, o diretorio ZZZ geralmente muda quando uma versao muda (apesar de que o englobamento do nome do arquivo poderia cobrir isso). Finalmente, o uso do esquema 'file:' nao da suporte facilmente as pessoas que carregam documentacao dinamicamente da Internet (em vez de carregar os arquivos para um sistema de arquivos local). Um esquema URI futuro pode ser acrescentado (por exemplo, 'userdoc:') para permitir que programas incluam referencias cruzadas a uma documentacao mais detalhada, sem ter que saber o local exato daquela documentacao. Alternativamene, uma versao futura da especificacao de sistema de arquivo pode especificar locais de arquivos suficientemente, de forma que o esquema 'file:' sera capaz de localizar documentacao. Muitos programas e formatos de arquivos nao incluem um meio de incorporar ou implementar ligacoes usando URIs. Muitos programas nao conseguem manipular todos esses diferentes formatos de URIs; deveria haver um mecanismo padrao para carregar uma URI arbitraria que detectasse automaticamente o ambiente do usuario (por exemplo, texto ou grafico, ambiente de desktop, preferencias do usuario local, e ferramentas em execucao atualmente) e invocasse a ferramenta correta para qualquer URI. VEJA TAMBEM lynx(1), man2html(1), mailaddr(7), utf-8(7) IETF RFC 2255 TRADUCAO A traducao para portugues brasileiro desta pagina man foi criada por Rubens de Jesus Nogueira e Andre Luiz Fassone Esta traducao e uma documentacao livre; leia a Licenca Publica Geral GNU Versao 3 ou posterior para as condicoes de direitos autorais. Nenhuma responsabilidade e aceita. Se voce encontrar algum erro na traducao desta pagina de manual, envie um e-mail para a lista de discussao de tradutores . Linux man-pages 6.06 31 outubro 2023 uri(7)