Ftp

我只需要包含一個 .netrc 文件就可以讓 UNIX 拾取它嗎?

  • February 12, 2014

我在 OSX 上使用 bash 終端的目錄中有一個具有以下格式的 .netrc:

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

按照此幫助文件中的建議,我已經像這樣對文件進行了chown和cmoded

$ chown myusername .netrc
$ chmod +600 .netrc

當我在目錄中時,我發出以下命令:

$ftp m...

根據教程(請參閱“.netrc 的使用”部分),似乎 unix 應該在我鍵入時自動檢測目錄中是否存在 .netrc 文件ftp m..,請參閱 .netrc 為 machine 提供憑據。並將它們傳遞給ftp。

這沒有發生。相反,我看到了這個輸出

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

我是否錯誤地使用了 .netrc 文件?

是的,通常該.netrc文件應該按照您的描述工作。它可能被不支持它的 FTP 客戶端阻止(也許它是在未啟用此功能的情況下顯式建構的)。這很可能會完成,因為這種儲存使用者名/密碼的方法本質上是不安全的,可能不應該使用。

使用 strace 檢查

您始終可以通過使用命令行工具跟踪應用程序來確認應用程序正在做什麼,strace.

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

完成此操作後,您可以分析日誌文件,ftp.log以查看您的ftp客戶端是否正在嘗試讀取該文件.netrc。如果它工作正常,您將在日誌中看到這種類型的輸出。

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

**注意:**在上面我ftp.somedom.org使用密碼“blah”連接到使用者“sam”。你可以看到它是從我的.netrc文件中讀取的。

ftp 手冊頁

如果你看一下ftp手冊頁,我的版本中提到了這個開關:

-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).

我在 Fedora 19 上:

$ rpm -qi ftp
Name        : ftp
Version     : 0.17
Release     : 64.fc19
Architecture: x86_64

引用自:https://unix.stackexchange.com/questions/114805