sudo -i bir hata döndürür


11

Kullanarak sudo -iroot'a geçmeye çalıştığımda hatayı alıyorum /var/tmp/sclDvf3Vx: line 8: -i: command not found... Ancak, su -kullanmaya devam edeceğim işler. Hiçbir şekilde linux sistem yöneticisi değilim, bu yüzden çevre hala benim için oldukça sisli. Sorularım sanırım:

  1. Hata neden atılıyor?
  2. İki komut arasındaki fark nedir?
  3. Neden birini diğerinin üzerinde kullanasın ki?

Güncelleme:

CentOS sürümünü kullanıyorum: CentOS release 6.6 (Final)

İşte, aşağıdaki yorumlarda, çalıştırmam istendiğim bazı komutların çıktısı.

  • 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

Güncelleme:

Bu benim kök olmayan kullanıcının ~ / .bashrc bir süre önce eklendi çünkü ben C ++ 11 desteği gerekiyordu. Ne zaman yorum, yeniden ssh, sudo-i herhangi bir hata olmadan gayet iyi çalıştırabilirsiniz.

if [ "$(gcc -dumpversion)" != "4.7.2" ]; then 
  scl enable devtoolset-1.1 bash
fi

-Gerçekten bir (ASCII) olduğundan emin misiniz -?
steeldriver

1
Kimse aliassizin sudokomutunuz için bir yarattı ?
15:50

2
Tamam, sudonormal sudo komutu olmayan yerel bir komutunuz var . Sudo'nun seçeneklerini anlamadığı göz önüne alındığında, standart bir şey değil. Ya /usr/bin/sudoyerel yöneticilerinizi kullanın ya da sorun (sudo yetkileri verdiklerinde size bunu gerçekten anlatmış olmalılar).
Gilles 'SO- kötü olmayı kes'

4
Bu soruyu konu dışı olarak kapatmak için oy kullanıyorum çünkü internetin yardım edemeyeceği bazı bilinmeyen, muhtemelen evde yetiştirilen bir programla ilgili.
Gilles 'SO- kötü olmayı kes'

3
Bunun evde yetiştirildiğini sanmıyorum, CentOS'un RH Geliştirici Araç Seti sürümü : people.centos.org/tru/devtools-1.1 . Tahminen birisi internette bu konuda biliyor.
Michael Homer

Yanıtlar:


6

Yorumlar ve diğer araştırmalar devtoolset değiştiriyor gibi görünüyor PATH. Ne yazık ki bu eski veya bozuk bir sudo komutu gibi görünen şeyleri içerir.

Bu şekilde dahil edilen devtoolset'i değiştirmeye .bashrcve ardından tekrar giriş yapmaya değer :

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

2

SCL'nin kırık sudo sarıcısı etrafında çalışmak yerine, sadece devre dışı bıraktım.

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

Dosyanın sonuna yeni satır eklemek, sonraki Yum güncellemelerinin üzerine yazılmamasını sağlar ve sonra sadece çalıştırılamaz hale getiririm.

RHEL 6'da gcc ve c ++ 'ın modern sürümlerini almak için dev araç setini yükledim ve karışımdaki sahte sudo olmadan kod derleme konusunda sorun yaşamadım.


1

sudo -EDevtoolset-4 kullandıktan sonra bayrakla benzer sorunlar yaşadım. Bu -Edurumda bayrak eklememelisiniz , çünkü /opt/rh/devtoolset-4/root/usr/bin/sudosarmalayıcı komut dosyasına eklenir , işte içeriği:

#! /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"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.