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ư me
thể tôi cần.
( Lưu ý: Tôi không có bất kỳ quyền kiểm soát nào othermachine
hoặ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, ^C
giế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 me
sau khi exit
lấ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?
sudo
tô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 me
từ specialuser
. Hoặc trong .profile
hoặc .bashrc
, nếu bạn không theo dõi sudo
với exit
, lần đầu tiên bạn exit
sẽ đư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.me
và 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 me
như :>~/.keep.me; exit
. Bây giờ exit
sẽ kết thúc phiên của bạn và me
sẽ quay trở lại phiên đăng nhập của bạn.
/bin/bash
và không đơn giản bash
vì lý do bảo mật (để tránh trojan ). Đặc biệt là nếu có sudo
trước ...
~/.profile
sau một thời gian trễ ngắn thì sao?