sudo -i mengembalikan kesalahan

11

Ketika saya mencoba untuk beralih ke root menggunakan sudo -isaya mendapatkan kesalahan /var/tmp/sclDvf3Vx: line 8: -i: command not found... Namun, su -berfungsi yang saya akan terus menggunakan. Saya sama sekali bukan administrator sistem linux sehingga lingkungan masih cukup berkabut bagi saya. Saya kira pertanyaan saya adalah:

  1. Mengapa kesalahan itu dilemparkan?
  2. Apa perbedaan antara kedua perintah?
  3. Mengapa Anda menggunakan salah satunya?

Memperbarui:

Saya menggunakan versi CentOS: CentOS rilis 6.6 (Final)

Ini adalah output dari beberapa perintah yang saya diminta untuk menjalankan, dalam komentar di bawah ini.

  • type sudo : sudo is /opt/centos/devtoolset-1.1/root/usr/bin/sudo
  • sudo -V : /var/tmp/sclIU7gkA: line 8: -V: command not found
  • grep'^root:' /etc/passwd : root:x:0:0:root:/root:/bin/bash

Memperbarui:

Ini ditambahkan ke pengguna non-root saya ~ / .bashrc beberapa waktu lalu karena saya membutuhkan dukungan C ++ 11. Ketika saya berkomentar, re-ssh in, saya dapat menjalankan sudo -i baik-baik saja tanpa kesalahan.

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
fi
th3v0id
sumber
Apakah Anda yakin -itu benar-benar (ASCII) -?
steeldriver
1
Adakah yang membuat perintah aliasuntuk Anda sudo?
garethTheRed
2
Ok, jadi Anda memiliki perintah lokal yang disebut sudoyang bukan perintah sudo normal. Mengingat tidak mengerti opsi sudo, itu jelas bukan hal standar. Baik gunakan /usr/bin/sudoatau tanyakan administrator lokal Anda (yang seharusnya benar-benar memberi tahu Anda tentang ini ketika mereka memberi Anda kekuatan sudo).
Gilles 'SO- berhenti bersikap jahat'
4
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena menyangkut beberapa program yang tidak diketahui, yang mungkin ditanam di rumah, yang tidak dapat dibantu oleh internet.
Gilles 'SANGAT berhenti menjadi jahat'
3
Saya kira ini sama sekali bukan buatan rumahan, ini adalah versi CentOS dari Tool Developer RH : people.centos.org/tru/devtools-1.1 . Mungkin seseorang di internet tahu tentang itu.
Michael Homer

Jawaban:

6

Dari komentar dan penyelidikan lebih lanjut Anda sepertinya devtoolset Anda sedang memodifikasi PATH. Sayangnya itu termasuk apa yang tampak sebagai perintah sudo yang lama atau rusak.

Ada baiknya mencoba memodifikasi devtoolset termasuk dalam Anda .bashrcseperti ini, dan kemudian masuk kembali:

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
  PATH=/usr/bin:$PATH    # We need a working sudo
fi
roaima
sumber
2

Daripada bekerja di sekitar pembungkus sudo rusak SCL, saya hanya menonaktifkannya.

echo >> /opt/rh/devtoolset-2/root/usr/bin/sudo
chmod -x /opt/rh/devtoolset-2/root/usr/bin/sudo

Menambahkan baris baru ke akhir file memastikan tidak akan ditimpa oleh pembaruan Yum berikutnya, dan kemudian saya membuatnya tidak dapat dieksekusi.

Saya menginstal toolset dev untuk mendapatkan versi modern gcc dan c ++ di RHEL 6, dan tidak memiliki masalah mengkompilasi kode tanpa sudo palsu dalam campuran.

miken32
sumber
1

Saya memiliki masalah serupa dengan sudo -Eflag setelah menggunakan devtoolset-4. Anda tidak boleh menambahkan -Eflag dalam kasus itu, karena ditambahkan dalam /opt/rh/devtoolset-4/root/usr/bin/sudoskrip wrapper, berikut isinya:

#! /bin/sh
# TODO: parse & pass-through sudo options from $@
sudo_options="-E"

for arg in "$@"
do
   case "$arg" in
    *\'*)
      arg= ;;
   esac
   cmd_options="$cmd_options '$arg'" 
done
exec /usr/bin/sudo $sudo_options LD_LIBRARY_PATH=$LD_LIBRARY_PATH PATH=$PATH scl enable devtoolset-4 "$cmd_options"
Vadim Kotov
sumber