Eu só preciso incluir um arquivo .netrc para que o UNIX o pegue?

3

Eu tenho um .netrc com o seguinte formato em um diretório usando um terminal bash no OSX:

machine m...
    login l...
    password p...

Eu tenho chowned e cmoded o arquivo como este, como sugerido em este arquivo de ajuda

$ chown myusername .netrc
$ chmod +600 .netrc

Quando estou no diretório, emita o seguinte comando:

$ftp m...

Baseado no este tutorial (veja a seção "uso do .netrc") parece que o unix deve automaticamente detectar que existe um arquivo .netrc no diretório quando digito ftp m.. , veja que o .netrc fornece credenciais para a máquina. e passá-los ao ftp.

Isso não está acontecendo. Em vez disso, vejo essa saída

Connected to server.domain.com
220 Microsoft FTP Service
Name (file.server.domain.com:My_OSX_Username): #I would expect it would pull my username off the .netrc file

Estou usando o arquivo .netrc incorretamente?

    
por bernie2436 12.02.2014 / 01:29

1 resposta

2

Sim, em geral, o arquivo .netrc deve funcionar como você descreveu. Ele pode estar sendo bloqueado pelo seu cliente de FTP não suportado (talvez tenha sido explicitamente construído sem esse recurso ativado). Isso provavelmente seria feito já que esse método de armazenar nomes de usuário / senhas é inerentemente inseguro e provavelmente não deveria ser usado.

Verificação com strace

Você sempre pode confirmar o que um aplicativo está fazendo rastreando-o usando a ferramenta de linha de comando, strace .

$ strace -s 2000 -o ftp.log ftp m

Depois de fazer isso, você pode analisar o arquivo de log, ftp.log , para ver se o seu ftp client está tentando ler o arquivo .netrc . Se estiver funcionando corretamente, você verá esse tipo de saída no log.

setsockopt(3, SOL_SOCKET, SO_OOBINLINE, [1], 4) = 0
open("/home/saml/.netrc", O_RDONLY)     = 4
uname({sys="Linux", node="greeneggs.bubba.net", ...}) = 0
fstat(4, {st_mode=S_IFREG|0600, st_size=47, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4898b85000
read(4, "machine ftp.somedom.org\n\tlogin sam\n\tpassword blah\n", 4096) = 47
fstat(4, {st_mode=S_IFREG|0600, st_size=47, ...}) = 0
read(4, "", 4096)                       = 0
close(4)                                = 0

OBSERVAÇÃO: No exemplo acima, estou conectando a ftp.somedom.org como usuário "sam" usando a senha "blah". Você pode ver que leu meu arquivo .netrc .

página man do ftp

Se você der uma olhada na página ftp man, há essa opção mencionada na minha versão:

 -n    Restrains ftp from attempting “auto-login” upon initial connection.  
       If auto-login is enabled, ftp will check the .netrc (see netrc(5)) 
       file in the user's home directory for an entry describing an account 
       on the remote machine.  If no entry exists, ftp will prompt for the 
       remote machine login name (default is the user identity on the local 
       machine), and, if necessary, prompt for a password and an account 
       with which to login.

 open host [port]
       Establish a connection to the specified host FTP server.  An optional 
       port number may be supplied, in which case, ftp will attempt to 
       contact an FTP server at that port.  If the auto-login option is on 
       (default), ftp will also attempt to automatically log the user in to 
       the FTP server (see below).

Eu estou no Fedora 19:

$ rpm -qi ftp
Name        : ftp
Version     : 0.17
Release     : 64.fc19
Architecture: x86_64
    
por 12.02.2014 / 01:37

Tags