su misbehaves khi thực hiện một lệnh nhắc mật khẩu


0

Tôi có 2 người dùng trong máy chủ debian của mình, gooduserroot.

Chỉ huy my_cmd nhắc nhập mật khẩu (nó kết nối với máy chủ ssh).

Khi tôi thực thi my_cmd như gooduser, mọi thứ hoạt động như mong đợi:

gooduser@debian:/mydir$ my_cmd
someone@192.168.2.122's password: 
Permission denied, please try again.
someone@192.168.2.122's password: 
Permission denied, please try again.
someone@192.168.2.122's password: 
Permission denied (publickey,password).
fatal: The remote end hung up unexpectedly
gooduser@debian:/mydir$

Ở trên, tôi đã bỏ qua lời nhắc mật khẩu bằng cách nhấn enter ba lần. Tại sao, tôi sẽ nói với bạn sớm.

Khi tôi đăng nhập như roottuy nhiên, tôi cố gắng thực hiện my_cmd là người dùng gooduser (Tôi phải, để mọi tệp được tạo sẽ được sở hữu bởi myuser ). Tuy nhiên, nó không nhắc tôi nhập mật khẩu, dù chỉ một lần và nó hoạt động như thể tôi đã nhấn enter 3 lần, ngoại trừ tôi không (các tin nhắn "Quyền bị từ chối" giống như trên):

root@debian:/mydir# su - gooduser -c "cd $PWD; my_cmd"
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
fatal: The remote end hung up unexpectedly
root@debian:/mydir#

Lý do tại sao điều này xảy ra? Tại sao su bỏ qua lời nhắc mật khẩu? Hay chính xác hơn, tại sao nó dường như nhấn enter thay mặt tôi? Quan trọng hơn, làm thế nào tôi có thể giải quyết điều này?

(Tôi biết tôi có thể định cấu hình các khóa ssh để đăng nhập không cần mật khẩu và có thể đó là những gì tôi sẽ làm, nhưng tôi muốn biết vấn đề sâu hơn ở đây là gì).


1
$ PWD tại thời điểm thực thi là root là gì? Gooduser có quyền truy cập vào con đường đó?
Frank Thomas

Câu trả lời:


1

ssh cố gắng mở /dev/tty để lấy mật khẩu, nhưng hệ thống không cho phép người dùng khác với người dùng hiện đang đăng nhập trên thiết bị đầu cuối để làm điều đó. Bởi vì ssh này không thể đọc mật khẩu.


Tại sao vậy, tôi có thể chạy cái này với dấu nhắc tiêu chuẩn su - test -c "ssh test" ?
week

0

Tôi đã kết thúc bằng cách sử dụng sudo:

sudo -i -u gooduser -H bash -c "cd $PWD; my_cmd"

Sử dụng lệnh này, tôi đã được nhắc nhập mật khẩu của mình như mong đợi. -i là cần thiết để $PATH đã được thiết lập chính xác, nếu không lệnh của tôi thất bại.

Vì sao su thất bại, tôi vẫn không biết. Sử dụng su đã hoạt động trong Ubuntu 12.04, nhưng nó không hoạt động trong Debian (vì vậy câu hỏi của tôi), vì vậy tôi không chắc rằng giải thích của qqx được áp dụng.

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.