sudo hizmeti ne yapar?

17

Bildiğim kadarıyla ve diğer insanların aynı fikir sudo , yönetici ayrıcalıklarına sahip bir şeyi yürüten bir komuttur.

Ancak, rcconf çalıştırdığımda bu satırı görebilirim:

[*] sudo    Provide limited super user privileges to specific users

Peki bu servisin amacı nedir? Yoksa bu bir hizmet mi?

    
sordu s3v3n 12.12.2012 14:21

2 cevap

21

Kısa cevap

Yeniden başlatmadaki kullanıcıların "önbelleğe alınmış" kimlik doğrulama işlemlerini iptal etmek. Bu sadece bir betik değil, sadece açılış zamanındaki bir betik.

Kapsamlı cevap

Init dosyasının% 'sini hizmete başlatan co_de%' yi inceleyerek, ne yaptığını kolayca görebilirsiniz:

case "" in
  start)
        # make sure privileges don't persist across reboots
        if [ -d /var/lib/sudo ]
        then
                find /var/lib/sudo -exec touch -t 198501010000 '{}' \;
        fi
        ;;
  stop|reload|restart|force-reload)
        ;;
  *)
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac

Yani, temelde, eski bir değişiklik zaman damgası olması için sistemin başında /etc/init.d/sudo dosyasındaki bazı dosyalara değiniyor. Sonuç olarak, "önbelleğe alınmış" kimlik doğrulama eylemleri hizmetin başlangıcında (önyükleme sırasında gerçekleşir) iptal edilir.

/var/lib/sudo dizininde ve bu zaman damgalarında daha fazla ayrıntı var, lütfen? Peki, /var/lib/sudo haritasından:

[...]
Once a user has been authenticated, a time stamp is updated and the
user may then use sudo without a password for a short period of time
(15 minutes unless overridden in sudoers).
[...]
Since time stamp files live in the file system, they can outlive a
user's login session.  As a result, a user may be able to login, run a
command with sudo after authenticating, logout, login again, and run
sudo without authenticating so long as the time stamp file's
modification time is within 15 minutes (or whatever the timeout is set
to in sudoers).
[...]
/var/lib/sudo           Directory containing time stamps
    
verilen cevap gertvdijk 12.12.2012 15:35
12

Yeniden adlandırmanın ardından çağrılan ayrıcalıkların kalmadığından emin olmak için sudo hizmet dosyası bulunmaktadır. Temel olarak, yeniden başlatma sonrasında kök izinleri için çağrılan normal kullanıcıların normal kullanıcı olarak kalacağını garanti eder.

Sudo hakkında ayrıntılı bir açıklama

Aşağıdaki tüm açıklamalar, bu soruyu okuyan herkes için tüm bilgileri almak ve servis klasöründeki sudo dosyasının orada ne yaptığını açıklamaktır.

Ubuntu'yu veya sudo 'yi kullanan başka bir dağıtımı yüklediğinizde, root olmanın farkı ve "root like" ayrıcalıkları kazanmak için sudo kullanan bir kullanıcı olmanız (Yönetimsel veya süper kullanıcı Ayrıcalıkları) ) aşağıdaki gibidir:

Kök olarak

  • Bir oturumda çalıştırdığınız komutların her biri için bir parola istemezsiniz
  • Yürütülecek tüm komutlar varsayılan olarak kaydedilmez
  • Sistem, ne yaptığınızı bildiğinizi varsayar (Komutu her çalıştırdığınızda neden şifre sormadığı sorusu)
  • Hata yaparsanız ikinci bir şans veya son dakika seçeneği yoktur

Sudo olarak

  • Bir oturumda çalıştırdığınız her komut için bir parola istenir. Örneğin, bir terminali açar ve yönetimsel ayrıcalıklara ihtiyaç duyan bir komut yürütürseniz, terminali kapatıp oturumu kapatana kadar bu oturum için şifreyi bir kez sorar. Bu, hangi komutu kullandığınıza ve nerede bulunduğunuza bağlı olarak değişir. Bir veya birkaç kez sorabilir.
  • Gerçekleştirdiğiniz tüm komutlar, süper kullanıcı ayrıcalıklı bir komut kullanmanız için izin istediğinden beri günlüğe kaydedilir.
  • Sistem, sizden geçici olarak izin istemenizi ve yönetim hakkının geçici olarak verileceğini varsayar (Oturum kapanıncaya kadar, terminali kapatın, vb.).
  • Herhangi bir hatayı düzeltmek için son dakika seçeneğiniz var. Bu, şifre sorduğunuz anda yapılır.

SUDO neden oluşturuldu

SUDO 'nun oluşturulması, geçmişte kök kullanılarak çözümlerden daha fazla sorun yarattığı için yapıldı. Kullanıcıların tüm hakları vardı, yani bir bahar temizliği yaptılarsa ve /usr , /lib ve /bin klasörlerini gerçekten sildiyselerdi (çünkü bunlara ihtiyaç duymadıklarını düşündüler). Geçmişte birçok sorun, kullanıcıların root kullanırken sahip oldukları gücü bilmemeleriydi. Temel olarak kökleri vardı ama Linux'u, dosya sistemi hiyerarşisini, hangi dosyaların önemli olduğunu vs. anlamadılar. (Bir ferrari gibi ve bir otoyolda nasıl sürüleceğini bilmemek gibi bir şey!)

SUDO , bir şeyleri yapmak için geçici yönetim ayrıcalıklarına ihtiyaç duyduklarında GUI uygulamaları (Güncelleme Yöneticisi gibi) tarafından da kullanılır. Sadece belirli bir miktarda komut için gerekirler (Tipik olarak 1) ve sonra kullanıcı seviyesi ayrıcalığına geri dönerler. Bu, kullanıcı her zaman kök ayrıcalıklarına sahip olmaktan kaçınmak ve kullanıcı, sistemin önemli bir bölümünü kaldırmaya karar verirse hata yapmaktan kaçınmaktır.

Ayrıca, root kullanıcısı varsayılan olarak devre dışı bırakıldığından daha iyi bir güvenlik sağlar.

Son olarak, eğer bir Masaüstü PC'niz veya Sunucunuz varsa, herkesin root olmasını ve tüm yönetici ayrıcalıklarının olmasını istemiyorsunuz. Eğer küçük kız kardeşiniz ya da küçük kardeşleriniz, /boot DEL anahtarıyla karşılaşırsa ne olacağını merak etmeye başlarsa çok kötü bir fikir. Bu, sudo 'nin, kötü bir şeylerin meydana gelme olasılığını azaltmak için devreye girdiği yerdir.

Belirli kullanıcılara sınırlı süper kullanıcı ayrıcalıkları sağlamalı ne demektir?

sudo kullanıcısı veya sudoers aslında, belirli bir kullanıcı için sudo komutunun ne kadar sınırlı olduğunu veya açıldığını söyleyen bir yapılandırma dosyasına sahiptir. % Co_de% dosyası, sudo kullanıcısına erişimi sınırlayacak veya erişim sağlayacak tüm bilgilere sahiptir. Varsayılan olarak her şeye erişebilirsiniz, ancak bunu istediğiniz gibi yapılandırabilir veya sınırlandırabilirsiniz.

Sudoers dosya türünün bir terminalde /etc/sudoers nasıl kullanılacağı hakkında bilgi için. Örneğin normal biçim:

USER HOST = COMMANDS

Örneğin, man sudoers kullanıcısı, ls komutunu çalıştırmak için ana sunucu1 erişimi kullanıcı cyrex verir.

Örneğin, cyrex server1 = /bin/ls , kullanıcı komut dosyasını root olarak ls komutunu çalıştırmak için ana sunucu1 erişimi verir.

Örneğin, cyrex server1 (root) = /bin/ls , tüm ana bilgisayarlarda kullanıcı ls komutunu ls komutunu çalıştırmak için kullanacaktır.

Örneğin, cyrex ALL = /bin/ls , tüm komutları çalıştırmak için tüm ana bilgisayarlara kullanıcı cyrex'i verecektir.

Örneğin, cyrex ALL = ALL , parola sormadan luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall ve kill komutları için root olarak sudo çalıştırmama izin verecektir.

    
verilen cevap Luis Alvarado 12.12.2012 14:58

Etiketlerdeki diğer soruları oku