unixodbcについて質問があります。対応するエラーメッセージが表示され、命令をCan't open lib ....
利用してldd
確認しました。
を使用すると、su - username
結果は次のようになります。
[root@ostest ~]# su - mysql
[mysql@ostest ~]$ ldd /usr/local/oraclient112/libsqora.so.11.1
linux-vdso.so.1 => (0x00007fff6c11d000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fb08a932000)
libm.so.6 => /lib64/libm.so.6 (0x00007fb08a6ad000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb08a490000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fb08a277000)
libclntsh.so.11.1 => /usr/local/oraclient112/libclntsh.so.11.1(0x00007fb087d46000)
libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007fb087b35000)
libc.so.6 => /lib64/libc.so.6 (0x00007fb0877a1000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b02000000)
libnnz11.so => /usr/local/oraclient112/libnnz11.so (0x00007fb0873d8000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007fb0871d7000)
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007fb086fce000)
[root@ostest ~]# sudo -u mysql ldd /usr/local/oraclient112/libsqora.so.11.1
linux-vdso.so.1 => (0x00007fff3d5ff000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f8eaec7a000)
libm.so.6 => /lib64/libm.so.6 (0x00007f8eae9f5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8eae7d8000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f8eae5bf000)
libclntsh.so.11.1 => not found
libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007f8eae3ad000)
libc.so.6 => /lib64/libc.so.6 (0x00007f8eae019000)
/lib64/ld-linux-x86-64.so.2 (0x0000003b02000000)
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f8eade0f000)
を使用すると、ライブラリがsudo -u username
見つかりませんlibodbcinst.so.1
。
sudo
これらとの違いは何ですかsu
?- ではどのように機能しますか
sudo -u
?
答え1
アカウント環境は変数などをmysql
定義できます。LD_LIBRARY_PATH
su -
環境を削除し、ログインしたかのmysql
ように環境を使用します。mysql
一方、自分の環境でいくつかの変数を維持することは確かにセキュリティ上の問題ではsudo
ありません。LD_LIBRARY_PATH
もしそうなら、次はうまくいきます。
sudo -u mysql -i ldd /usr/local/oraclient112/libsqora.so.11.1
次のように必須変数を明示的に設定することもできます。
sudo -u mysql LD_LIBRARY_PATH=/usr/local/oraclient112/:$LD_LIBRARY_PATH ldd /usr/local/oraclient112/libsqora.so.11.1