Sudo service ne yapıyor?


17

Bildiğim kadarıyla ve diğer insanların aynı görüşe sahip olduğu anlaşılıyor ki sudo, idari ayrıcalıklara sahip bir şey yürüten bir emirdir.

Ancak çalıştırdığımda rcconfbu satırı görebilirsiniz:

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

Peki bu hizmetin anlamı nedir? Yoksa bu bir hizmet mi?


Google-> Sudo
adi

"Bu, sudo'nun devreye girdiği yerdir - yetkili kullanıcıların (normalde" Yönetici "kullanıcılara izin verir; daha fazla bilgi için lütfen AddUsersHowto'ya bakın) kök parolayı bilmek zorunda kalmadan belirli programları Kök olarak çalıştırma." - Sorumda tam olarak bunu söyledim.
s3v3n

3
Soru hizmetle ilgili, komut değil
s3v3n

Yanıtlar:


22

Kısa cevap

Yeniden başlatma sırasında kullanıcıların 'önbelleğe alınmış' kimlik doğrulama eylemlerini iptal etmek için. Bu bir arka plan programı değil, sadece açılışta çalıştırılan bir betik.


Kapsamlı cevap

/etc/init.d/sudo'Hizmeti başlatan' init dosyasını inceleyerek ne yaptığını kolayca görebilirsiniz:

case "$1" 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, temel olarak, /var/lib/sudoçok eski bir değişiklik zaman damgası olması için sistemin başlangıcında bazı dosyalara dokunur . Sonuç olarak, 'önbelleğe alınan' verilen kimlik doğrulama işlemleri hizmetin başlangıcında (önyüklemede gerçekleşir) iptal edilir.

/var/lib/sudoDizin ve bu zaman damgaları hakkında biraz daha ayrıntı , lütfen? Eh, şu haritadan sudo(8):

[...]
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

Perfect answer :)
s3v3n

12

sudoServis dosya kesin olarak adlandırılan ayrıcalıkları başlatmanın ardından kalmaz emin olmak için vardır. Temel olarak, yeniden başlattıktan sonra, kök izinlerini çağıran 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 daha sonra hizmet klasöründeki sudo dosyasının orada ne yaptığını açıklamaktır.

Ubuntu veya root olmak ile "root like" ayrıcalıkları (Yönetici veya süper kullanıcı Ayrıcalıkları) kazanmak için kullanılan bir kullanıcı olmak sudoarasındaki farkı kullanan başka bir dağıtım yüklediğinizde :sudo

Kök olarak

  • Bir oturumda çalıştırdığınız komutların her biri veya tümü için bir parola istenmez
  • Yürüttüğünüz tüm komutlar varsayılan olarak günlüğe kaydedilmez
  • Sistem ne yaptığınızı bildiğinizi varsayar (Her komut çalıştırdığınızda parola istememesinin nedeni)
  • Hata yaparsanız ikinci bir şans veya son dakika seçeneği yoktur

Sudo olarak

  • Bir oturumda çalıştırdığınız komutların her biri veya tümü için bir parola girmeniz istenir. Örneğin, bir terminal açar ve yönetici ayrıcalıkları gerektiren bir komutu yürütürseniz, siz terminali kapatana veya oturumu kapatana kadar bu oturum için bir kez parola soracaktır. Bu, hangi komutu ve nerede kullandığınıza bağlı olarak değişir. Bir veya birden çok kez sorabilir.
  • Süper kullanıcı ayrıcalıklı bir komut kullanmak için gerçekten izin istediğiniz için yürüttüğünüz tüm komutlar günlüğe kaydedilir.
  • Sistem geçici olarak izin istediğinizi varsayar ve idari hak geçici olarak ödünç verilir (Oturumu kapatıncaya kadar terminal kapatılır, vb.)
  • Herhangi bir hatayı düzeltmek için son dakika seçeneğiniz vardır. Bu, sizden şifre istendiğinde yapılır.

SUDO neden yaratıldı

SUDO'nun yaratılması yapıldı, çünkü geçmişte kök kullanmak çözümlerden daha fazla sorun yarattı. Kullanıcılar tüm bunlar bazı bahar temizliği yaptı ve tam anlamıyla sildiyse anlamına geliyordu haklarını vardı /usr, /libve /bin.. ne olacağını tahmin etmek (onlar onlara ihtiyacı yoktu düşündüğü için) klasörler. Geçmişteki birçok sorun, kullanıcıların root kullanırken sahip oldukları gücü bilmemeleriydi. Temelde kökleri vardı ama Linux'u, dosya sistemi hiyerarşisini, hangi dosyaların önemli olduğunu vb. Anlamadılar. (Bir ferrariye sahip olmak ve nasıl sürüleceğini bilmemek gibi bir şey ... bir otoyolda!)

SUDO , bir şey yapmak için geçici yönetici ayrıcalıklarına ihtiyaç duyduklarında GUI uygulamaları (Güncelleme Yöneticisi gibi) tarafından da kullanılır. Sadece belirli bir sayıda komut için ihtiyaç duyarlar (Tipik olarak 1) ve daha sonra kullanıcı seviyesi ayrıcalığına geri dönerler. Bu, kök ayrıcalıklarına her zaman 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, kök kullanıcı varsayılan olarak devre dışı bırakıldığı için daha iyi bir güvenlik sağlar.

Son olarak, bir Masaüstü Bilgisayarınız veya Sunucunuz varsa, herkesin root olmasını veya tüm yönetici ayrıcalıklarına sahip olmasını istemezsiniz. Kız kardeşiniz veya küçük kardeşleriniz anahtarla /bootkarşılaşırsa ne olacağını merak etmeye başlarsa çok kötü bir fikir DEL. Burası sudokötü bir şey olma şansını azaltmak için devreye giriyor.

Ne gelmez belirli kullanıcıların sınırlı süper kullanıcı yetkileri sağlayın demek?

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. Dosya /etc/sudoers, bir sudo kullanıcısını sınırlamak veya erişim sağlamak için tüm bilgilere sahiptir. Varsayılan olarak her şeye erişim ile birlikte gelir, ancak bunu istediğiniz gibi yapılandırabilir veya sınırlandırabilirsiniz.

man sudoersBir terminalde sudoers dosya türünün nasıl kullanılacağı hakkında bilgi için . Örneğin, normal biçim:

KULLANICI EVİ = KOMUTLAR

Örneğin cyrex server1 = /bin/ls, ana sunucudaki kullanıcı cyrex'e ls komutunu çalıştırmak için erişim sağlar.

Örneğin cyrex server1 (root) = /bin/ls, ana sunucudaki kullanıcı cyrex'e ls komutunu root olarak çalıştırmak için erişim verir.

Örneğin cyrex ALL = /bin/ls, tüm ana bilgisayarlardaki cyrex kullanıcısına ls komutunu çalıştırmak için erişim sağlar.

Örneğin cyrex ALL = ALL, tüm ana bilgisayarlardaki cyrex kullanıcısına tüm komutları çalıştırmak için erişim sağlar.

Örneğin luis ALL=(root) NOPASSWD: /bin/kill, /usr/bin/killall, sudo killve killallkomutları için bir şifre sormadan root olarak çalıştırmamı sağlayacak .

resim açıklamasını buraya girin


2
Sudo komutunun ne yaptığını biliyor. Soru sudo için bir sistem hizmeti hakkında.
gertvdijk

1
@gertvdijk - İlk önce temelleri açıklamak zorunda kaldım, çünkü sadece bu soruya bakmayacak. Son bölüm, sudo dosyası için hizmet klasöründe gördüğüm tek nedeni içerir.
Luis Alvarado

Teşekkürler Luis Alvarado - Böyle kapsamlı bir bilgi için Wolver ve !!bang bang operatörüne atıfta bulunan komik modifiye xkcd için teşekkürler , ancak hizmet (komut değil) ne sudoyapıyor? Soruyu gerçekten cevaplamak için cevabınızı güncelleyebilmeniz harika olurdu.
s3v3n

1
Sonunda sadece bir cümle için tüm bunları açıklayan biraz aşırıya kaçma, ama soruma cevap veriyor;)
s3v3n

1
@ LuisAlvarado-TheWolverine Haha, haklısın. Bana cevap vermen iyi oldu , ben yaptım .. Teşekkürler
Lucio
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.