Tôi có một số máy tôi thường xuyên sử dụng chỉ với mục đích sử dụng sudo suđể dành phần còn lại của phiên đăng nhập với tư cách là một người dùng có mục đích đặc biệt. Quy trình công việc chung là:
mymachine:~ me$ ssh me@othermachine
othermachine:~ me$ sudo su - specialuser # note: no password needed
othermachine:~ specialuser$ # do stuff
Tôi muốn đưa cái này xuống một lớp lót mà tôi có thể đặt bí danh, vì vậy tôi chỉ có thể thiết lập bí danh cho mỗi máy và đến nơi tôi cần ở trong một lệnh, mà không cần phải nhập bảng điều khiển sudo su - specialuser. Tôi có thể có thể thiết lập me@othermachineđể sudo suđăng nhập, nhưng tôi muốn giữ sự linh hoạt để hoạt động như methể tôi cần.
( Lưu ý: Tôi không có bất kỳ quyền kiểm soát nào othermachinehoặc cách thức thiết lập; đây là quy trình công việc được thiết lập mà tôi đã tham gia khi tôi được thuê.)
Suy nghĩ đầu tiên của tôi chỉ là
ssh me@othermachine "sudo su - specialuser"
và loại công việc này, nhưng nó không cho tôi kịp thời, ^Cgiết chết nó và đăng xuất tôi, và tôi cho rằng nhiều thứ khác cũng có thể sai.
Sau khi đọc lệnh Run Remote ssh với Full Đăng nhập Shell, tôi đã thử một vài thứ kỳ lạ hơn như
ssh me@othermachine 'bash -l -c "sudo su - specialuser"'
và
ssh me@othermachine 'bash -l -c "sudo su - specialuser"; bash'
- không phải trong số đó tôi dự kiến sẽ làm việc, và họ đã không làm, nhưng tôi nghĩ tôi nên thử chúng cho đầy đủ (và để tránh trùng lặp); họ đã tạo ra cùng một vỏ không có dấu nhắc (cái thứ hai có vỏ không có dấu nhắc thêm được thêm vào mesau khi exitlấy từ vỏ cho specialuser). Và tôi đã thử
ssh me@othermachine "sudo su - specialuser -c bash -l"
nhưng nó đã giúp tôi
sudo: no tty present and no askpass program specified
Ý tưởng tốt hơn?
sudotôi nên đánh ^C? Nếu tôi không thể nghĩ ra thứ gì tốt hơn tôi có thể thử nó.
su metừ specialuser. Hoặc trong .profilehoặc .bashrc, nếu bạn không theo dõi sudovới exit, lần đầu tiên bạn exitsẽ đưa bạn trở lại me, với một giây để kết thúc phiên. Hoặc thậm chí sử dụng một tệp cờ, do đó sudođược đi trước [ -f ~/.keep.me ] && del ~/.keep.mevà theo sau [ \! -f ~/.keep.me ] && exit: bạn chỉ cần một tập lệnh hoặc bí danh cho một lệnh menhư :>~/.keep.me; exit. Bây giờ exitsẽ kết thúc phiên của bạn và mesẽ quay trở lại phiên đăng nhập của bạn.
/bin/bashvà không đơn giản bashvì lý do bảo mật (để tránh trojan ). Đặc biệt là nếu có sudotrước ...
~/.profilesau một thời gian trễ ngắn thì sao?