Askıya alma durumundan uyandıktan sonra sudo'yu her zaman şifre sormaya nasıl zorlayabilirim?


15

Diyelim ki bir komut yürütüyorumsudo , o zaman sudoönümüzdeki 15/5 dakika içinde kullanırsam (beni ne kadar hatırladığını bilmiyorsam) benden şifre istemez. Sadece en azından bu kadar uzun süre kullanmadıysam beni tekrar uyarır.

Ancak, makinemi askıya alır, uyandırır ve bu süre sona ermeden giriş yaparsam, sadece bir sudokomutu tekrar yürütebilirim ve benden parolamı istemez çünkü belirli bir miktar için izin vermedim zaman.

Öyleyse, ne kadar uzun süredir kullanmadığım önemli değil sudo, tekrar giriş yaptıktan sonra askıya alındıktan sonra beni bir şifre isteyecek, hatta hala bu süre içinde olsam bile 15/5 dakika kullanmadıysanız sudohenüz geçmediniz mi?

Çalışacak en olası şey sudo, uyandırma sırasında yürütülen belirli bir komutun yürütülmesi üzerine tüm kimlik önbelleklerini kaldırmak için bir komut yürütmesini sağlamaktır.

GNOME 3.18 ile Ubuntu GNOME 15.10 kullanıyorum.


1
iyi soru, ama neden paranoyaksın? çünkü sizden başka bir kişinin giriş şifrenizi kullanması durdurulamazsasudo
Edward Torvalds

Bu terminal penceresinden yeni çıkarsanız, ne kadar hızlı yaparsanız yapın yeni bir terminal penceresi açtığınızda şifrenizi yeniden yazmanız gerekir. Terminal penceresinde bir şey çalıştırıyorsanız, şunu ekleyin; çıkın ve komut tamamlandığında pencere kapanacaktır.
Marc

@Marc: Biliyorum, ancak bir sudodahaki sefere çıkış yapmak veya manuel olarak sormak her zaman uygun değildir . Otomatik bir çözüm tercih edilecektir.

@ edwardtorvalds: Tekrar giriş yapabilir ve sonra gidebilirim (bunu çok sık yaptığım için değil), ve sonra birisi geldiğinde sadece kullanabileceklerse kötü olur sudo. Bunun kendi bilgisayarım için biraz garip geldiğini biliyorum, ancak başka bir Ubuntu bilgisayarında bazı bakım işleri yapıyordum ve daha sonra kullanıcıyı tekrar oturum açtığımda Terminal'i kapatmak zor olabilir, ama yapmıyorum sudohak sahibi olmalarını istemek .

1
Ekleniyor`; exit` (yedi tuş vuruşu) benim için oldukça kolay görünüyor. Ne tür bir bakımdan uzaklaşıyorsunuz, çünkü ortada askıya alma şansım olacağını düşünemiyorum.
Marc

Yanıtlar:


19

Gönderen man sudo:

     -K, --remove-timestamp
                 Similar to the -k option, except that it removes the user's
                 cached credentials entirely and may not be used in conjunc‐
                 tion with a command or other option.  This option does not
                 require a password.  Not all security policies support cre‐
                 dential caching.

Yani istediğiniz her şey kullanıcı sudo -Ksistem askıya her zaman çalıştırmak .

Ubuntu 15.04+ (systemd)

Bu, Ubuntu 15.04+ üzerinde bir komut dosyası yerleştirilerek yapılabilir /lib/systemd/system-sleep/.

  1. Çalıştır sudo nano /lib/systemd/system-sleep/disable_sudo_user( userkolaylık sağlamak için kullanıcı adınızla değiştirin );
  2. Aşağıdaki komut dosyasına yapıştırın ( userkullanıcı adınızla değiştirin ):
#!/bin/sh
case $1/$2 in
    pre/suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. Hit CTRL+ O, ENTERve CTRL+ X;

  2. Çalıştır sudo chmod o+x /lib/systemd/system-sleep/disable_sudo_user;


Hazırda bekletme / karma uyku için de bunu etkinleştirmek için, bunun yerine şu komut dosyasını kullanın:

#!/bin/sh
case $1 in
    pre)
        su user -c 'sudo -K'
        ;;
esac

Önceki Ubuntu sürümleri (Upstart)

Bu, önceki Ubuntu sürümlerinde bir komut dosyası yerleştirilerek yapılabilir /etc/pm/sleep.d/.

  1. Çalıştır sudo nano /etc/pm/sleep.d/disable_sudo_user( userkolaylık sağlamak için kullanıcı adınızla değiştirin );
  2. Aşağıdaki komut dosyasına yapıştırın ( userkullanıcı adınızla değiştirin ):
#!/bin/sh
case $1 in
    suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. Hit CTRL+ O, ENTERve CTRL+ X;

  2. Çalıştır sudo chmod o+x /etc/pm/sleep.d/disable_sudo_user;


Hazırda bekletme için de etkinleştirmek üzere bunun yerine şu komut dosyasını kullanın:

#!/bin/sh
case $1 in
    suspend|hybernate)
        su user -c 'sudo -K'
        ;;
esac

2
Eğer kullanırsan daha komik olurdu sudo -u user sudo -k. : D
muru

@muru Aynı şekilde düşündüm ama bir sebepten dolayı biraz saçma görünüyordu: D
kos

Maalesef, bir süredir hiç kabuk kodu yazmadım, tam olarak ne pre/*)yapıyor? :)

@ParanoidPanda Gitti, güncellemeye bakın. Buraya bakın (Açıklama, ikinci paragraf): iki argümanı geçirirken systemd-suspend.servicekomut dosyalarını çağırır /lib/systemd/system-sleep/; $1o da var preuyku öncesi etkinlikler için veya postsonrası uyku olaylar için, ve $2o da var suspend, hybernateya hybrid-sleep; pre/*tüm kombinasyonlarını yakalamak gerekiyordu pre/ve herhangi suspend, hybernateveya hybrid-sleep, fakat süspansiyon için açıkça sordum beri bunu değiştirdi pre/suspend.
kos

1
Bunu eski ubuntu'da da yapabileceğinizi belirtmek gerekir, bu sadece farklı bir mekanizma, yani /etc/pm/sleep.dkomut dosyaları kullanarak .
hobbs

3

Sadece o paranoyaksanız! -KSeçeneğini kullanabilirsiniz sudo.

-K, --reset-timestamp
       When used without a command, invalidates the user's cached credentials.  
       In other words, the next time sudo is run a password will be required.  
       This option does not require a password and was added to allow a user to revoke
       sudo permissions from a .logout file.

       When used in conjunction with a command or an option that may require a 
       password, this option will cause sudo to ignore the user's cached credentials.  
       As a result, sudo will prompt for a password (if one is required by the 
       security policy) and will not update the user's cached credentials.

       Not all security policies support credential caching.

Örneğin,

sudo -K <command>

Veya bilgisayarınızı robotlar tarafından korunan metal bir kutuda bırakabilirsiniz :)


Hmm ... Tam istediğim gibi değil, bunu otomatikleştirmenin bir yolu yok mu? Çünkü bu kesinlikle askıya almak üzereyim, bir komutun çalıştığı sudove bir yere gitmem gerektiğine işaret ettiğimi gösteriyor, bu yüzden makineyi askıya alıyorum, sonra geri döndüğümde ve makineyi askıya aldığımda beklemek zorunda kalacağım bir dahaki sefere tekrar şifre isteyebilmem için komut veya bitirme süresi için Birçok nedenden dolayı çok daha yararlı olacaktır (farklı bir çalışma seviyesinde bir GUI ile çalıştırdığımda, askıya alındıktan sonra bir parola istememesi de dahil olmak üzere) otomatikleştirilmesi.

Ayrıca, bence demek istiyorsun -Kve değil -k.

Her neyse, daha yararlı olabilir.

1

Yine başka bir yöntem

'Sudo visudo' yazın

'Defaults env_reset' yazan satıra gidin.

ve şu şekilde değiştirin:

'Varsayılanlar env_reset, timestamp_timeout = 0

Sonra dosyayı kaydedin.

Zaman aşımını 0 olarak ayarladığınızda, sistem sizden her seferinde parola ister.


Bu ise yaptığı (teknik konuşma) OP birçok durum için 's overkill, soran ne başarmak. Bununla birlikte, gerçekten paranoyaksanız (veya potansiyel olarak tehlikeli bir şey yaptığınızda her zaman duraklama ve tefekkür için ekstra bir adım istiyorsanız), bu uygun bir alternatif olabilir.
bir CVn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.