"su -username" 명령과 "sudo -u 사용자 이름 명령"의 차이점은 무엇입니까?

"su -username" 명령과 "sudo -u 사용자 이름 명령"의 차이점은 무엇입니까?

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

관련 정보