Tại sao tôi có thể bắt đầu một shell root bằng sudo ngay cả với '! 'trong mục bóng của nó?


9
$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash

$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::

Trong trường thứ hai của tệp bóng, !có nghĩa là người dùng root không thể đăng nhập nhưng tại sao tôi có thể đăng nhập vào người dùng root bằng cách sudo su?

Tại sao tôi không thể đăng nhập vào người dùng root bằng cách su roothoặc su -?


1
"Trong trường thứ hai của tệp bóng ,! Có nghĩa là người dùng root không thể đăng nhập" Không, không. Nơi mà bạn đã nghe thấy không?
Các cuộc đua nhẹ nhàng trong quỹ đạo

@LightnessRacesinOrbit, nó có nghĩa là gì?
George Udosen

@George: muru trích dẫn hướng dẫn trong câu trả lời của mình và giải thích chi tiết. Bạn nên đọc tài liệu!
Các cuộc đua nhẹ nhàng trong quỹ đạo

Câu trả lời:


15

Một !trong những shadowphương tiện trường mật khẩu mã hóa của entry mà không có mật khẩu có thể xác thực chống lại nó. Từ man shadow:

If the password field contains some string that is not a valid
result of crypt(3), for instance ! or *, the user will not be able
to use a unix password to log in (but the user may log in the
system by other means).

Như hướng dẫn nói, điều này không có nghĩa là bạn không thể đăng nhập bằng root. Điều đó chỉ có nghĩa là bạn không thể đăng nhập bằng root bằng mật khẩu cho tài khoản root. (Bạn có thể đăng nhập bằng root thông qua SSH bằng các khóa SSH, ví dụ: nếu bạn đã định cấu hình trước đó, ngay cả khi tài khoản bị khóa.)

sudothường xác thực bằng mật khẩu của bạn , không phải root. Điều này có thể được thay đổi bằng cách thiết lập một trong targetpw, rootpwhoặc runaspwsudoers. Nếu bạn đặt một trong các tùy chọn này và cố gắng sử dụng mật khẩu khi mật khẩu bị khóa, điều đó sẽ thất bại .


Tuyệt vời, điều đó có nghĩa là tôi có thể chuyển sang bất kỳ người dùng nào bằng sudo bằng mật khẩu của mình hoặc là người dùng đang hoạt động hoặc người dùng khóa, phải không?
Sinoosh

1
@Sinoosh giả sử không có hạn chế nào khác, vâng
muru

4

Bây giờ hãy xem các lệnh tương ứng:

  1. sudo su:

    • sudochạy lệnh su(người dùng thay thế) với quyền root, vì vậy ngay cả khi /etc/shadownói hoặc có, root:!:17179:0:99999:7:::nó vẫn sẽ chạy các lệnh với quyền root.
  2. su -hoặc su root:

    • Điều này thực sự chuyển sang người dùng root mà từ /etc/shadowtệp không thể đăng nhập nên sử dụng các lệnh này sẽ không hoạt động. Nếu bạn muốn chúng hoạt động thì tài khoản root phải được mở khóa bằng cách cho nó mật khẩu.

Tóm lược:

su -0r su rootchuyển sang root người dùng , không tồn tại nên không thể xảy ra, nhưng sudo suchạy lệnh switch với các rootđặc quyền, vì vậy trong trường hợp này nó sẽ hoạt động nếu bạn ở trong sudonhóm. Bạn không thực sự đăng nhập bằng root trong trường hợp này, chỉ đóng vai trò là root nên nó sẽ hoạt động.

Nguồn: Sự khác biệt giữa 'su -' và 'su root' là gì?


Cảm ơn bạn, Điều đó có nghĩa là sudo sukhông thấy các trường trong tệp bóng?
Sinoosh

1
@Sinoosh sudo sulà cách chạy sai sudo shhoặc sudo bash.
Bakuriu
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.