sudo -i trả về một lỗi


11

Khi tôi cố gắng chuyển sang root bằng cách sử dụng, sudo -itôi gặp lỗi /var/tmp/sclDvf3Vx: line 8: -i: command not found... Tuy nhiên, su -công việc mà tôi sẽ tiếp tục sử dụng. Tôi không có nghĩa là một quản trị viên hệ thống linux nên môi trường vẫn còn khá mù mờ đối với tôi. Tôi đoán câu hỏi của tôi là:

  1. Tại sao lỗi bị ném?
  2. Sự khác biệt giữa hai lệnh là gì?
  3. Tại sao bạn sẽ sử dụng cái này hơn cái kia?

Cập nhật:

Tôi đang sử dụng phiên bản CentOS: CentOS phát hành 6.6 (Cuối cùng)

Đây là đầu ra từ một số lệnh tôi được yêu cầu chạy, trong các bình luận bên dưới.

  • 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

Cập nhật:

Điều này đã được thêm vào người dùng không phải root của tôi ~ / .bashrc một thời gian trước vì tôi cần hỗ trợ C ++ 11. Khi tôi nhận xét nó, đăng nhập lại, tôi có thể chạy sudo -i tốt mà không có lỗi.

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

Bạn có chắc chắn đó -thực sự là một (ASCII) -?
Steeldo

1
Có ai đã tạo một lệnh cho lệnh aliascủa bạn sudochưa?
garethTheRed

2
Ok, vậy là bạn có một lệnh cục bộ được gọi sudokhông phải là lệnh sudo bình thường. Cho rằng nó không hiểu các tùy chọn của sudo, rõ ràng đó không phải là một điều tiêu chuẩn. Sử dụng /usr/bin/sudohoặc hỏi quản trị viên địa phương của bạn (người thực sự nên nói với bạn về điều này khi họ trao cho bạn quyền hạn sudo).
Gilles 'SO- ngừng trở nên xấu xa'

4
Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó liên quan đến một số chương trình không rõ ràng, có thể được trồng tại nhà, mà internet không thể giúp được.
Gilles 'SO- ngừng trở nên xấu xa'

3
Tôi không nghĩ đây là loại cây được trồng tại nhà, đây là phiên bản của Bộ công cụ dành cho nhà phát triển RH của CentOS : people.centos.org/tru/devtools-1.1 . Có lẽ ai đó trên internet biết về nó.
Michael Homer

Câu trả lời:


6

Từ các bình luận và các nghiên cứu sâu hơn của bạn, có vẻ như devtoolset của bạn đang sửa đổi PATH. Thật không may, bao gồm những gì dường như là một lệnh sudo cũ hoặc bị hỏng.

Sẽ rất đáng để thử sửa đổi devtoolset bao gồm trong .bashrcnhư thế này và sau đó đăng nhập lại:

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

2

Thay vì làm việc xung quanh trình bao bọc sudo bị hỏng của SCL, tôi chỉ vô hiệu hóa nó.

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

Thêm một dòng mới vào cuối tệp để đảm bảo nó sẽ không bị ghi đè bởi các bản cập nhật Yum tiếp theo, và sau đó tôi chỉ làm cho nó không thể thực thi được.

Tôi đã cài đặt bộ công cụ dev để có được các phiên bản hiện đại của gcc và c ++ trên RHEL 6 và không gặp vấn đề gì khi biên dịch mã mà không có sudo giả trong hỗn hợp.


1

Tôi gặp vấn đề tương tự với sudo -Ecờ sau khi sử dụng devtoolset-4. Bạn không nên thêm -Ecờ trong trường hợp đó, vì nó được thêm vào trong /opt/rh/devtoolset-4/root/usr/bin/sudotập lệnh bao bọc, đây là nội dung của nó:

#! /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"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.