Làm thế nào để được cảnh báo nếu thiết bị đầu cuối có đặc quyền sudo và cũng cho thấy thời gian còn lại là bao nhiêu?


10

Làm thế nào để xem trong thiết bị đầu cuối mà bạn có đặc quyền sudo? (vì vậy biết rằng tôi có những đặc quyền này, tôi chỉ có thể gõ sudo -k) Sẽ tốt hơn nếu không thêm quá nhiều thông tin vào thiết bị đầu cuối, chỉ một số loại cảnh báo đơn giản và nhỏ!

THỜI GIAN TUYỆT VỜI LÀ TUYỆT VỜI, phải không?

Ngoài ra, làm thế nào để xem tôi còn bao nhiêu thời gian với những đặc quyền đó trên thiết bị đầu cuối cụ thể đó? (vì vậy tôi chỉ có thể để nó kết thúc thay vì gõ sudo -k). Tôi nghĩ rằng thời gian còn lại có thể hiển thị mỗi khi tôi nhấn phím Enter.

EDIT: Tôi đã nghiên cứu thêm và thấy rằng /var/lib/sudo/$USER/$nPts(trong đó $ nPts là thiết bị đầu cuối hiện tại kể từ đó ps -p $$) có dấu thời gian được cập nhật mỗi khi lệnh sudo được phát ra và nó chỉ có thể truy cập được nếu bạn sử dụng lệnh sudo, vì vậy thời gian còn lại sẽ luôn là cấu hình một ...

PS.: Ngoài ra, tôi đã thử alias sudo='sudo -k'nhưng tôi không thích phải nhập mật khẩu cho mỗi lệnh ... Và cũng vậy, điều này alias sudos='sudo -k'(hoặc alias ssudo='sudo -k', tốt nếu bạn gõ một dòng dài, chỉ cần nhấn Home và gõ 's') hoạt động nếu bạn chỉ muốn đưa ra một lệnh bằng cách gõ sudos. Nhưng tôi vẫn nhớ khi tôi có đặc quyền sudo bình thường để biết tôi cần phải hành động ...


2
Tại sao điều này đã bỏ phiếu? Mặc dù đây không phải là bài viết rõ ràng nhất, nhưng câu hỏi tiêu đề vẫn có vẻ là một câu hỏi hợp lệ đối với tôi (và một câu hỏi khá hữu ích, lúc đó)
DaimyoKirby

bạn có thể nói những gì có thể được làm rõ? bài đăng ban đầu chưa được chỉnh sửa của tôi lớn hơn 3 lần và tôi đã xóa nó rất nhiều để làm cho nó ngắn gọn hơn :)
Sức mạnh của Bảo Bình

Tôi nghĩ rằng nó chỉ là muộn - tôi đã đọc lại nó, và nó có ý nghĩa hơn.
DaimyoKirby

Câu trả lời:


5

[Tôi vẫn muốn biết nếu có câu trả lời tốt hơn.]

Tôi đã tìm thấy một cách hoạt động và lời nhắc sẽ được giữ trên một dòng duy nhất:

vào cuối của bạn ~/.bashrcthêm này:

function FUNCsudoOn() { 
    if sudo -n uptime 2>/dev/null 1>/dev/null; then 
        echo -ne "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"; 
        #echo #without newline, the terminal seems to bugout with lines that are too big... discomment this if you find any problems...
    fi; 
}
function FUNCpromptCommand () { 
    FUNCsudoOn
}
export PROMPT_COMMAND=FUNCpromptCommand
#export PS1="\`FUNCsudoOn\`$PS1" #this also works, use instead of PROMPT_COMMAND

EDIT: Tôi thấy rằng sudo -n uptimesẽ cập nhật thời gian chờ sudo, vì vậy mỗi khi bạn nhấn phím Enter, thời gian sudo đó sẽ được cập nhật ... Điều đó làm cho việc biết thời gian còn lại là vô ích, vì nó sẽ luôn là cấu hình, mặc định là 15 phút .. .

và để tìm định dạng màu tốt nhất cho bạn thích, bạn có thể sử dụng ScriptEchoColor với --escapedcharstùy chọn như:

echoc --escapedchars "@{nRlyo} SUDO " #that outputs below...
echo -e "\E[0m\E[93m\E[41m\E[1m\E[5m SUDO \E[0m"

chỉ dừng lại nhấp nháy loại bỏ \E[5mnhư trong\E[0m\E[93m\E[41m\E[1m SUDO \E[0m


4

Thiết bị đầu cuối của bạn không "có đặc quyền sudo", trừ khi bạn làm điều gì đó ngớ ngẩn như sudo bash KHÔNG LÀM NÀY!

Tất cả những gì bạn phải làm để "có đặc quyền sudo bình thường" là không được gõ sudotrước lệnh.

/usr/bin/idlà một cách tốt để xem những gì sudolàm. Ví dụ:

id -a        # returns my UID info
sudo id -a   # returns root's info
id -a        # me again
sudo id -a   # root again

Các sudotrang người đàn ông nói: "Chính sách sudoers lưu trữ thông tin trong vòng 15 phút, trừ khi ghi đè trong sudoers (5)". Điều này có nghĩa là, theo mặc định, nếu bạn phát sudolệnh (và nhập mật khẩu của bạn), sau đó đợi 14,9 phút trước khi ban hành sudolệnh thứ hai , bạn sẽ không phải nhập lại mật khẩu. Nếu bạn đợi 15,1 phút, bạn sẽ phải nhập lại mật khẩu. sudo -kchỉ cần hết thời gian 15 phút ngay lập tức. Việc sử dụng duy nhất tôi có thể thấy sudo -klà nếu bạn sắp giao thiết bị đầu cuối đã mở khóa của mình cho người mà bạn không tin tưởng UID 0.


Bạn nói "không được gõ sudotrước lệnh". Nhưng nếu tôi muốn kiểm tra các quy tắc tường lửa của mình iptables -Lthì nó sẽ không hoạt động trừ khi tôi gõ sudo iptables -L. Quan điểm của tôi là, làm thế nào chúng ta thực sự có thể tránh sử dụng sudo?
Sức mạnh Bảo Bình

Ngoài ra, về khoảng thời gian còn lại, tôi muốn biết thời gian còn lại mỗi lần tôi nhấn phím Enter trên thiết bị đầu cuối. Về sudo -k, tôi lo lắng về việc các cracker cố gắng truy cập từ xa vào máy của tôi (tôi thực sự không biết liệu họ có thể làm điều đó không ...), hoặc trong trường hợp tôi để máy mở mà không bị khóa trong vài giây ... tốt, vấn đề thực sự là: tôi muốn làm theo cách này! Tôi không quan tâm phải gõ sudo -kvà nhập lại mật khẩu của mình sau nhiều lần tôi cần, tôi cảm thấy tốt khi tôi làm theo cách này! :)
Sức mạnh Bảo Bình

"Tránh sử dụng sudo"? Sudo là giải pháp để phân phối mật khẩu gốc, tạo nhị phân setuid hoặc sử dụng /bin/su. Bạn có chắc chắn muốn loại bỏ nó? "Truy cập từ xa vào máy của tôi ..." và, tôi cho rằng, tiếp quản /proc/YourPID/fd/{0,1,2}. Không. Nếu máy của bạn được truy cập từ xa, Bad Guy có các cách dễ dàng hơn để UID 0. Bạn nên tăng Linux-foo trước mức độ quan tâm này.
ví von

Xin lỗi vì đã nói, có vẻ như bạn nên alias k=/usr/bin/sudo -kthay thế sudolệnh bằng hàm bí danh hoặc hàm bash kết thúc cuộc gọi /usr/bin/sudovới /usr/bin/touch $HOME/tmp/$$/sudotimevà cuối cùng, thêm một cái gì đó để in $ {{time (now) - time ($ HOME / tmp / $ $ / sudotime))) trong dấu nhắc Bash của bạn. Không tầm thường, nhưng nếu nó sẽ làm cho bạn cảm thấy tốt, hãy đi cho nó.
ví von

Điều đó thật thú vị, tôi cũng sẽ đăng nhập khi nỗ lực xảy ra, hoặc thậm chí tốt hơn, tắt mọi liên lạc mạng, tuyệt vời! nhưng ngay cả khi tôi ẩn sudovới bí danh cho bất kỳ từ ngẫu nhiên nào, họ vẫn có thể gõ /usr/bin/sudothay vì sudovà nó vẫn hoạt động như sudo :(. Dù sao tôi cũng thích ý tưởng đó .. Tôi tự hỏi nếu tôi thay đổi thực tế /usr/bin/sudothì nó sẽ phá vỡ thứ gì đó ngoài tất cả các tập lệnh của tôi sử dụng nó .. ngay cả khi tôi làm như vậy, họ có thể, bằng cách đọc các tập lệnh, đoán xem sudo đã trở thành gì ..
Sức mạnh của Bảo Bình
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.