問題
root ユーザーとして curl コマンドを実行すると、「非匿名セッションは暗号化を使用する必要があります」というメッセージが表示されます:
# curl -v -k --ftp-ssl --ftp-pasv ftp://192.168.X.X:990/ --user hcpa:XXX * About to connect() to 192.168.X.X port 990 (#0) * Trying 192.168.X.X... connected * Connected to 192.168.X.X (192.168.X.X) port 990 (#0) < 220 FTP SERVER INFOVALMER. > USER hcpa < 530 Non-anonymous sessions must use encryption. * Access denied: 530 * Closing connection #0 curl: (67) Access denied: 530
ただし、root 以外のユーザーとして同じ curl コマンドを実行すると機能します:
# exit logout
# su - testuser $ curl -v -k --ftp-ssl --ftp-pasv ftp://192.168.X.X:990/ --user hcpa:XXX * About to connect() to 192.168.10.1 port 990 (#0) * Trying 192.168.X.X... connected * Connected to 192.168.X.X (192.168.X.X) port 990 (#0) < 220 FTP SERVER INFOVALMER. > AUTH SSL < 234 Proceed with negotiation. * Initializing NSS with certpath: /etc/pki/nssdb * warning: ignoring value of ssl.verifyhost * skipping SSL peer certificate verification * NSS: client certificate not found (nickname not specified) * SSL connection using SSL_RSA_WITH_3DES_EDE_CBC_SHA * Server certificate: * subject: ,CN=ftp-infovalmer,OU=VALORADOR,O=INFOVALMER,L=BOGOTA,ST=CUNDINAMARCA,C=CO * start date: sep 10 22:11:55 2015 GMT * expire date: sep 09 22:11:55 2018 GMT * common name: ftp-infovalmer * issuer: @ ,CN=ftp-infovalmer,OU=VALORADOR,O=INFOVALMER,L=BOGOTA,ST=CUNDINAMARCA,C=CO > USER hcpa < 331 Please specify the password. > PASS XXX < 230 Login successful.
解決策
$LD_LIBRARY_PATH を追加 /root/.bash_profile の環境変数 .
/usr/bin/curl は、ライブラリ libcurl.so.4 を検索するときに、ディレクトリ /apps/MATLAB/v81/bin/glnxa64/ を探します:
# ldd /usr/bin/curl linux-vdso.so.1 => (0x00007fffc9f7d000) libcurl.so.4 => /apps/MATLAB/v81/bin/glnxa64/libcurl.so.4 (0x00007f291de7b000) <----- libidn.so.11 => /lib64/libidn.so.11 (0x0000003201600000) libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00000033afc00000) librt.so.1 => /lib64/librt.so.1 (0x00000033ab400000) libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00000032bba00000) libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00000032bc200000)
通常、/usr/bin/curl はライブラリ libcurl.so.4 を検索するときにディレクトリ /usr/lib64/ を検索することになっています:
# ldd /usr/bin/curl linux-vdso.so.1 => (0x00007fff8dbe1000) libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00000033ac400000) <----- libidn.so.11 => /lib64/libidn.so.11 (0x0000003201600000) libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00000033afc00000) librt.so.1 => /lib64/librt.so.1 (0x00000033ab400000) libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00000032bba00000) libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00000032bc200000)
1. /root/.bash_profile に $LD_LIBRARY_PATH 環境変数を追加すると、root ユーザーとして実行されているすべてのアプリケーションに影響するため、最初に /root/.bash_profile の LD_LIBRARY_PATH を削除してください。
2. 次に、matlab アプリケーションをコンパイルするときにランタイム検索パスを指定します。アプリケーション ベンダーの matlab に相談し、これを実現する方法がないかどうかを確認してください。
または
プログラムの実行時に LD_LIBRARY_PATH を設定します。例:
# LD_LIBRARY_PATH=./app_test
"LD_LIBRARY_PATH=[PATH]b" は、上記のコマンドを実行した場合にのみ有効です。他のアプリケーションには影響しません。