Şifre olmadan sudo yürütmek?

Bundan esinlenerek soru....

Sistemimi 12.04 ile kullanan tek kişi benim.
Ne zaman bir tane yayınlasam sudo komut; sistem kullanıcı şifresini ister (ki bu kendi yolunda iyidir).
Ancak düşünüyordum; etkinleştirmeden kök hesap; Kimlik doğrulaması için kullanıcı şifresi istemeyen sudo komutlarını nasıl çalıştırabilirim.

NOT: Şifre ile kimlik doğrulaması yapmadan sudo komutunu çalıştırmak istiyorum; sadece terminal üzerinden çalıştırıldıklarında.
Bu ekstra güvenlik katmanını 'Ubuntu yazılım merkezi' kullanırken veya sürükle-bırak ile bir bash betiği yürütürken diğer işlevlerden kaldırmak istemiyorum something.sh dosya terminale.

Yapılandırabilirsiniz sudo şifrenizi asla sormamak için.

Bir Terminal penceresi açın ve şunu yazın::

sudo visudo

Dosyanın en altına aşağıdaki satırı ekleyin:

$USER ALL=(ALL) NOPASSWD: ALL

Nerede $USER sisteminizdeki kullanıcı adınızdır.Sudoers dosyasını kaydedin ve kapatın (varsayılan terminal düzenleyicinizi değiştirmediyseniz (değiştirip değiştirmediğinizi bileceksiniz), tuşuna basın Ctl + x çıkarmak nano ve kaydetmenizi isteyecektir).

Ubuntu 19.04 itibariyle, dosya şimdi şöyle bir şeye benzemelidir

## This file MUST be edited with the 'visudo' command as root.## Please consider adding local content in /etc/sudoers.d/ instead of# directly modifying this file.## See the man page for details on how to write a sudoers file.#Defaults    env_resetDefaults    mail_badpassDefaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"# Host alias specification# User alias specification# Cmnd alias specification# User privilege specificationroot    ALL=(ALL:ALL) ALL# Members of the admin group may gain root privileges%admin ALL=(ALL) ALL# Allow members of group sudo to execute any command%sudo   ALL=(ALL:ALL) ALL# See sudoers(5) for more information on "#include" directives:#includedir /etc/sudoers.dYOUR_USERNAME_HERE ALL=(ALL) NOPASSWD: ALL

Bundan sonra yazabilirsiniz sudo <whatever you want> parola sorulmadan bir Terminal penceresinde.

Bu sadece aşağıdakileri kullanmak için geçerlidir: sudo terminalde komuta. (Örneğin) yazılım merkezi'nden bir paket yüklemeye çalışırsanız yine de şifreniz istenir

sudo -i sisteminizde (veya diğer sistemlerde) değişiklikler yaparken her 10 dakikada bir şifre yazmak istemiyorsanız ve herhangi bir sistem dosyasını değiştirmek istemiyorsanız, gitmenin yolu budur.

Bu sizin kullanarak kök geçecektir sudo konsolu kapattığınızda veya yazarken kullanıcı parolası exit normal kullanıcınıza geri döndünüz.

Tek tek (veya grup) izinleri vermek için tercih edilen yol, dosya eklemek olacaktır /etc/sudoers.d

Bu, yerel değişiklikleri varsayılan ilkeden ayırır ve dağıtım sudoers dosyasının değişmesi durumunda zaman kazandırır.

Şu anda oturum açmış olan kullanıcıyı bir sudoer yapmak ve yapmak için sudo onlara bir şifre sormayın, kullanın

echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/$USER

bu, adında bir dosya oluşturacaktır /etc/sudoers.d/$USER (nere $USER bu komutu çalıştırdığınızda oturum açtığınız kullanıcının kullanıcı adıdır), hangi kullanıcılara izin verildiğini açıkça belirtir.

Bunu farklı bir kullanıcı için yapmak istiyorsanız, her iki örneği de değiştirmeniz yeterlidir $USER yukarıdaki komutta başka bir kullanıcı adıyla.

echo "otheruser ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/otheruser

Benzer şekilde, birden çok yönergeyi yönetmek için tek bir dosya kullanılabilir:

echo "username ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/local

Görmek /etc/sudoers.d/README ve man sudoers daha fazla bilgi için.

Kök sudo zaman aşımları bunu yapmanın en kolay ve en güvenli yoludur. Tüm örnekleri vereceğim, ancak bu şekilde çok daha güvenli olmasına rağmen bunu yapmanın çok riskli olduğunu unutmayın:

sudo visudo

Bu bir editör açar ve sudoers dosyasına işaret eder - Ubuntu varsayılan olarak nano'ya, diğer sistemler Vı kullanır. Artık sisteminizdeki en önemli dosyalardan birini düzenleyen süper bir kullanıcısınız. Stres yok!

(Vı ile belirtilen özel talimatlar (IV!). Nano kullanıyorsanız bunları dikkate almayın.)

Ekranın sonuna gitmek için ok tuşlarını kullanın. Defaults sıra.

(IV!) geçerli satırın sonuna gitmek ve düzenleme moduna girmek için A (büyük harfle "a") tuşuna basın (satırdaki son karakterden sonra ekleyin).

Şimdi yazın:

,timestamp_timeout=X

burada X, dakika cinsinden zaman aşımı sona ermesidir. 0 Belirtirseniz, her zaman bir şifre sorulur. Negatif bir değer belirtirseniz, zaman aşımı hiçbir zaman sona ermez. Örneğin Defaults env_reset,timestamp_timeout=5.

(IV!) komut moduna dönmek için Escape tuşuna basın. Şimdi, düzenlemenizden memnunsanız, yazın :w Enter dosyayı yazmak ve :q Enter vı'dan çıkmak için. Bir hata yaptıysanız, belki de en kolay yol, kaydetmeden çıkmak (vurmak) için baştan yeniden yapmaktır Escape komut moduna girmek için) ve sonra şunu yazın: q! Enter.

Vurma Ctrl+X, sonraları Y, sonraları Enter dosyanızı kaydetmek ve nano'dan çıkmak için.

Daha fazla bilgi için sudoers ve vı kılavuz sayfalarını okumak isteyebilirsiniz.

man sudoersman vi

Kullanarak zaman aşımı değerini sıfırla:

sudo -k

Bu yönergeler, sudo komutunu kullanırken parola istemini kaldırmaktır. Yine de kök erişimi için sudo komutunun kullanılması gerekecektir.

Sudoers dosyasını düzenleme

Bir Terminal penceresi açın. Yazmak sudo visudo. Dosyanın sonuna aşağıdaki satırı ekleyin (sonunda değilse, daha sonraki girişler tarafından geçersiz kılınabilir):

<username> ALL=NOPASSWD: ALL

Yerini almak <username> kullanıcı adınızla (kullanıcı adı olmadan) <>). Bu, Ubuntu'nun tipik olan kullanıcı adınızla aynı ada sahip bir grup oluşturduğunu varsayıyor. Alternatif olarak grup kullanıcılarını veya içinde bulunduğunuz diğer benzer grupları kullanabilirsiniz. Sadece o grupta olduğundan emin ol. Bu, Sistem -> Yönetim -> Kullanıcılar ve Gruplar'a giderek kontrol edilebilir.

Örnek:

michael ALL=NOPASSWD: ALL

^X yazın (Ctrl+X) çıkarmak. Bu, dosyayı kaydetmek için bir seçenek sormalı, kaydetmek için Y yazın.

Oturumu kapatın ve sonra yeniden oturum açın. Bu, şimdi parola sorulmadan sudo komutunu çalıştırmanıza izin vermelidir.

Kök hesabı

Kök hesabı etkinleştirme

Kök hesabın etkinleştirilmesi nadiren gereklidir. Bir Ubuntu sisteminin yöneticisi olarak yapmanız gereken hemen hemen her şey sudo veya gksudo aracılığıyla yapılabilir. Kalıcı bir kök oturum açma işlemine gerçekten ihtiyacınız varsa, en iyi alternatif aşağıdaki komutu kullanarak bir Kök oturum açma kabuğunu simüle etmektir:

sudo -i

Ancak, eğer zorunlu kök oturum açmalarını etkinleştir, bunu şu şekilde yapabilirsiniz:

sudo passwd root

Kök hesabınızı yeniden devre dışı bırakma

Herhangi bir nedenle kök hesabınızı etkinleştirdiyseniz ve tekrar devre dışı bırakmak istiyorsanız, terminalde aşağıdaki komutu kullanın:

sudo passwd -dl root

Sistem genelinde grup sudo

root$ echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Oturumu kapatıp tekrar girin.

Sudo zaman aşımını sıfırla

Sudo'nun bir dahaki sefere çalıştırarak şifre sorduğundan emin olabilirsiniz:

sudo -k

Elbette yapmak istediğin şey tavsiye edilmez. Bir süre sonra içeri girse de sudo o kadar otomatik hale gelir ki kullanışlılığı azalır.

Başka bir yaklaşım, sudoers dosyanızı olduğu gibi bırakmak ve yüz sunucunuz için karmaşık bir şey yaparken girmektir sudo bash . Bu, siz çıkana kadar root olarak kimliği doğrulanacak bir kabuk verecektir.

Geçerli kullanıcı için sudo istemlerini kaldırmak için güzel bir astar

sudo bash -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" | (EDITOR="tee -a" visudo)'

Bu, dosya izinlerini de belirtildiği gibi değiştiren tek satırlı bir çözümdür. /etc/sudoers.d/README:

sudo sh -c 'echo "$(logname) ALL=(ALL:ALL) NOPASSWD: ALL" > /etc/sudoers.d/$(logname)' && sudo chmod 440 /etc/sudoers.d/$(logname)

Bir astar

sudo sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g'

-den Süper Kullanıcı iyi bir cevap geliyor:

Şifreyi stdın'den okuyan -S anahtarını kullanın:

echo <password> | sudo -S <command>

Yerini almak <password> şifrenle.

  • @Upteryx fikrini genişletmek.

  • Bir CICD boru hattında kullanılmak üzere geçici bir Docker Görüntüsünde root olmayan, şifresiz kullanıcıyı bu şekilde uyguladım:

RUN \    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \    echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \    echo "Customized the sudoers file for passwordless access to the foo user!" && \    echo "foo user:";  su - foo -c id

yani sadece terminalde ve başka şeyler için değil, ya da başka bir şekilde şifre sorulmasını mı istiyorsunuz?! her iki açıdan da, bunun yüksek bir güvenlik ihlali olduğunu düşünüyorum

Elbette zaman aşımını uzatabilirsin. Ayrıca, sık sık yeni sunucu kurulumları yapıyorsanız, işlemi otomatikleştirmeyi düşünmelisiniz. Yazmak için para almıyorsunuz, sorunları çözmek ve halletmek için para alıyorsunuz.

Bu sistemin sadece terminaldeyken şifre sormamasını istiyorum… başka herhangi bir amaç için sistem bir şifre sormalıdır.

Bu gereksinim yalnızca geçicidir ve yapılandırılırken ve yeni sunucular yüklenirken kullanılmalıdır… yeni sunucu kurulumları sırasında, sudo komutlarıyla gerçekten saatlerce yapılandırma gerekir… her 15 dakikada bir şifre verilir. baş ağrısıdır. Root hesabı kullanmak istemiyorum.

Tartışmayı şu adreste okumanız gerekir: root - What are the benefits of sudo over su? - Ask Ubuntu

İlgili: [Şifre olmadan sudo komutu nasıl çalıştırılır?] (aws - How to run sudo command with no password? - Ask Ubuntu )