як попередити, якщо термінал має привілеї sudo, а також показати скільки часу залишилось?


10

Як у терміналі побачити, що у вас є привілеї sudo? (тому знаючи, що у мене є ці привілеї, я можу просто набрати sudo -k) Було б краще також не додавати занадто багато інформації в термінал, просто якесь просте і невелике попередження!

ВІДПОВІДНИЙ ЧАС НЕМОВИЙ, правда?

Крім того, як побачити, скільки часу я ще маю з цими привілеями на конкретному терміналі? (тому я можу просто дозволити це закінчитися, а не набирати текст sudo -k). Я думаю, що час, що залишився, може з’являтися кожного разу, коли я натискаю клавішу Enter.

EDIT: Я /var/lib/sudo/$USER/$nPtsвивчив більше, і виявив, що (де $ nPts є поточним термінальним pts станом на час ps -p $$), її часова марка оновлюється щоразу, коли видається команда sudo, і вона доступна лише за умови використання команди sudo, тому решта часу завжди буде налаштовано один ...

PS: Крім того, я намагався, alias sudo='sudo -k'але мені не подобається вводити пароль для кожної команди ... І також, це alias sudos='sudo -k'(або alias ssudo='sudo -k', добре, якщо ви ввели довгий рядок, просто натисніть Home і введіть 's) працює, якщо ви потрібно лише видати одну команду, ввівши sudos. Але я все одно сумую, коли у мене є нормальні привілеї для судо, щоб знати, що мені потрібно діяти ...


2
Чому це було знято? Незважаючи на те, що це не найяскравіший пост, заголовок питання все ще здається для мене правильним питанням (і досить корисним питанням у цьому випадку)
DaimyoKirby

ви можете сказати, що можна було б уточнити? мій нередагований початковий пост був у 3 рази більшим, і я його чистив багато, щоб зробити його більш лаконічним :)
Сила Водолія

Я думаю, що було просто пізно - я його перечитав, і це має більше сенсу.
DaimyoKirby

Відповіді:


5

[Я все ще хотів би знати, чи є кращий одяг.]

Я знайшов спосіб, і підказки будуть зберігатися в одному рядку:

наприкінці ~/.bashrcдодайте це:

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: Я виявив, що sudo -n uptimeоновить час очікування sudo, тому кожен раз, коли ви натискаєте клавішу Enter, час sudo буде оновлюватися ... Це знає, що залишився час марно, оскільки він буде завжди налаштований, дефолт - 15 хв .. .

і щоб знайти найкраще для форматування кольорів на ваш смак, ви можете використовувати ScriptEchoColor з такою--escapedchars опцією, як:

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

щоб просто зупинити моргання видалити, \E[5mяк в\E[0m\E[93m\E[41m\E[1m SUDO \E[0m


4

Ваш термінал не має "привілеїв судо", якщо ви не зробите щось нерозумно, як sudo bash НЕ РОБИТИ ЦЕ!

Все, що вам потрібно зробити, щоб "мати нормальні привілеї sudo" - це утриматися від набору тексту sudoперед командою.

/usr/bin/idце хороший спосіб побачити, що sudoробить. Наприклад:

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

На sudoсторінці чоловіка написано: "Політика судерів кешує облікові дані протягом 15 хвилин, якщо тільки це не буде відмінено в судорах (5)". Це означає, що за замовчуванням, якщо ви видаєте sudoкоманду (і введете свій пароль), а потім зачекайте 14,9 хвилин, перш ніж видавати другу sudoкоманду, вам більше не доведеться вводити свій пароль. Якщо ви зачекаєте 15,1 хвилини, вам доведеться знову ввести пароль. sudo -kпросто закінчується 15-хвилинний таймер негайно. Єдине використання, яке я можу побачити, - sudo -kце якщо ви збираєтеся віддавати розблокований термінал тому, кому ви не довіряєте UID 0.


Ви сказали, "утримуйтесь від набору тексту sudoперед командою". Але якщо я хочу перевірити свої правила брандмауера, iptables -Lвін не працюватиме, якщо я не набираю sudo iptables -L. Моя думка, як ми можемо насправді уникнути використання судо?
Сила Водолія

Також про час, що залишився, я хочу знати, скільки часу залишається щоразу, коли натискаю клавішу Enter на терміналі. О sudo -k, я переживаю за сухариків, які намагаються віддалено отримати доступ до моєї машини (я не знаю, чи зможуть вони це зробити все-таки ...), або якщо я залишу свою машину відкритою, не замикаючи її на кілька моментів ... ну, справжній сенс полягає в тому, що: я хочу це зробити так! Мені все одно, що потрібно вводити sudo -kі пароль знову пізніше, скільки разів мені потрібно, я почуваю себе добре, коли роблю це таким чином! :)
Водолій Сила

"Уникати використання судо"? Судо було рішенням для розповсюдження кореневого пароля, встановлення бінарних файлів або використання /bin/su. Ви впевнені, що хочете відмовитися від нього? "Віддалений доступ до моєї машини ..." і, я думаю, перейміть на себе /proc/YourPID/fd/{0,1,2}. Ні. Якщо доступ до комп'ютера доступний віддалено, Bad Guy має простіші способи UID 0. Вам слід збільшити Linux-foo до цього рівня занепокоєння.
waltinator

Вибачте за гучні слова, це звучить , як ви повинні alias k=/usr/bin/sudo -kзамінити sudoкоманду з псевдонімом або Баш функції , яка обертає виклик /usr/bin/sudoз /usr/bin/touch $HOME/tmp/$$/sudotime, і , нарешті, додати що - то , щоб надрукувати $ {{час (зараз) - час ($ HOME / TMP / $ $ / sudotime))) у вашому запиті Bash. Не банально, але якщо це змусить вас почувати себе добре, продовжуйте це робити.
waltinator

що цікаво, я б також увійшов, коли сталася спроба, а ще краще, відключення будь-якого мережевого зв’язку, класно! але навіть якщо я ховаюсь sudoпсевдонімом до будь-якого випадкового слова, вони все одно можуть набрати /usr/bin/sudoзамість цього, sudoі все одно він буде працювати як судо :(. Інакше мені подобається ідея .. Цікаво, якщо я зміню справжнє, /usr/bin/sudoвоно зламає щось інше, ніж всі мої скрипти , які використовують це .. навіть якщо я роблю так, що вони могли, читаючи сценарії, здогадатися , що Судо став ..
Водолій Потужність
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.