首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"su - username“和"sudo -u username命令”有什么不同?

"su - username“和"sudo -u username命令”有什么不同?
EN

Unix & Linux用户
提问于 2015-12-08 08:01:30
回答 1查看 914关注 0票数 0

我对unixodbc有个问题。它显示了有关Can't open lib ....的错误消息,因此,我使用ldd命令进行检查。

如果我使用su - username,结果如下:

代码语言:javascript
复制
[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库。

  • sudosu有什么不同?
  • 它如何与sudo -u一起工作呢?
EN

回答 1

Unix & Linux用户

发布于 2015-12-08 09:34:22

mysql帐户环境可能定义了LD_LIBRARY_PATH变量或类似的内容。

su -放弃了您的环境,使用了mysql的S,就像mysql登录了一样。另一方面,sudo只保留了您自己环境中的一些变量,而不是LD_LIBRARY_PATH,因为这将是一个安全问题。

如果是这样的话,这应该是可行的:

代码语言:javascript
复制
sudo -u mysql -i ldd /usr/local/oraclient112/libsqora.so.11.1

您还可以以这种方式显式地设置必需的变量:

代码语言:javascript
复制
sudo -u mysql LD_LIBRARY_PATH=/usr/local/oraclient112/:$LD_LIBRARY_PATH ldd /usr/local/oraclient112/libsqora.so.11.1
票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/248058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档