Kullanıcı pi sudo izinleri nasıl değiştirilir; farklı izinlere sahip başka hesaplar nasıl eklenir?


14

Pi'yi SSH üzerinden ara sıra kullandığım için SSH'nin sudo komutlarına erişmesine izin vermenin tehlikeli olduğunu öğrendim. Bu nedenle, bu izni yakın gelecekte kapatmayı planlıyorum. Ancak, paketleri yüklediğimde genellikle yeniden başlatmam gerekir. Şu anda buna yalnızca süper kullanıcı aracılığıyla izin verilmektedir.

sudo reboot

Pi kullanıcısının paketleri yeniden başlatmasına (ve yüklemesine) izin vermek için izinlerini düzenleyebilmemin herhangi bir yolu var mı?

Farklı izinlere sahip birden fazla hesabım olabilir mi?

Teşekkürler


1
Verilen cevaplardan herhangi biri yardımcı oldu mu? Aradığınız cevaplardan biri var mı? Lütfen bunu yanıt olarak işaretleyin.
Anders

Evet. Hâlâ ilgileniyorsanız, onları Haziran 2017'ye güncelledim - bu soru 4 yıl 2 ay önce soruldu ve beni bugün sorunu çözme yoluna götürdü. Aşağıdaki cevaplara göz atın:
SDsolar

Yanıtlar:


22

Biraz açıklığa kavuşturmak için: "sudo komutları" yoktur, yalnızca düzgün çalışması için kök ayrıcalıklarına ihtiyaç duyan komutlar vardır ve sudobunları tek bir komut için edinme komutudur: sudoverilen komutu root olarak çalıştırır (zorunlu olarak "sudo" ifadesini okuyun) cümle "süper kullanıcı, bir şey yap!"). Hangi kullanıcıların bunu yapabileceği ile ilgili kurallar yazılır /etc/sudoers. Varsayılan bir Raspbian kurulumunda, varsayılan "pi" kullanıcısı izinlerini şu satırdan almıştır:

pi ALL=(ALL) NOPASSWD: ALL

Bu şu anlama gelir: "TÜM ana bilgisayarlardaki 'pi' kullanıcısının TÜM kullanıcılara geçişine izin verilir ve ALL (okuma: herhangi) komutlarını kullanırken PASSWD'sini yazması gerekmez". (Satır sırasını korumak için burada çılgın dilbilgisi kullandım .. ana bilgisayarları ayırt etmenin bir yolu olduğuna dair bir not: bu şekilde, aynı sudoers dosyası bir ağdaki birden çok makineye dağıtılabilir, böylece ağ yöneticisinin daha az çalışması vardır) .

Yönetici şifresi vermeden sudo kullanarak komutları çalıştırabilmeniz, SSH üzerinden sudo kullanmanın tehlikeli olduğunu düşündüğünüz nokta olabilir (bunu yaparken genel bir sorun duymadım ... tam olarak ne demek istediğini açıkla?).

Elbette, farklı izinlere sahip birden fazla kullanıcınız olabilir. Ama korkuyorum ki sudo kullanmanın hala bu izinleri yönetmenin en iyi yolu olduğunu.

Umarım burada bu küçük tarif ihtiyacınız olan şeydir:

$ sudo adduser admin

Bu, bir kullanıcı "admin" oluşturur, şifre ister, ana dizini oluşturur vb.

$ sudo adduser admin sudo
$ sudo adduser admin adm

Bu, "admin" kullanıcısını "sudo" ve "adm" kullanıcı gruplarına koyacaktır. Ve izinler, kullanıcı gruplarına kullanıcı ekleyerek Linux'ta yönetildiğinden, "admin" kullanıcısına ihtiyaç duyduğu tüm ayrıcalıkları ve izinleri verir. /etc/sudoers"Sudo" kullanıcı grubundaki herhangi bir kullanıcının root olarak herhangi bir komutu yürütmesine izin veren bir satır vardır ; ve bu ayrıcalık bir yönetici kullanıcı için ihtiyaç duyduğumuz şeydir ("kabul etmek" e eklemek, bazı günlük dosyalarını /var/logkullanmadan sudove birkaç şey okumasına izin verir ). sudoYönetici olarak oturum açtığınızda hala kullanmanız gerekir - ancak şimdi sudo, yaklaşık beş dakika boyunca sudo kullanmadığınızda yöneticinin şifresini tekrar tekrar sorar.

Şimdi oturumu kapatın ve "admin" kullanıcısı olarak oturum açın. Kontrol edin

$ sudo apt-get update
$ sudo apt-get upgrade

İşler. Bunu yaparsa, "pi" kullanıcısının bazı ayrıcalıklarını iptal edebilirsiniz, çünkü artık yönetici kullanıcınızın doğru ayrıcalıklara sahip olduğundan emin olabilirsiniz:

$ sudo deluser pi sudo
$ sudo deluser pi adm

Bu "pi" kullanıcısını "sudo" kullanıcı grubunun dışına atar.

$ sudo visudo

Bu, düzenlemenize izin veren bir düzenleyici başlatacaktır /etc/sudoers. #"Pi" ile başlayan satırın önüne bir karma etiketi ( ) koyun , yorum yapın (veya basitçe kaldırın). Ardından düzenleyiciyi kaydedip çıkın, visudo daha sonra ayrıcalık kurallarını hemen yeniden yükleyecektir. Artık "pi" kullanıcısının sudo kullanmasına artık izin verilmiyor.

Bundan sonra, kullanıcı "pi" olarak yeniden oturum açabilirsiniz. Bazı komutlar için yöneticiye geçmek isterseniz, su("kullanıcı değiştir") kullanın:

$ su - admin

Daha fazla kullanıcı eklemek istiyorsanız: sudo adduser <name>yukarıdaki gibi kullanın , ardından "pi" kullanıcısının sahip olduğu kullanıcı gruplarının listesini kontrol edin:

$ groups pi
pi : pi dialout cdrom audio video plugdev games users netdev input

sudo adduser <username> <groupname>Ses, hızlandırılmış video kullanmasına, takılabilir aygıtlar vb. Kullanmasına olanak tanıyan bu kullanıcı gruplarının birkaçına yeni kullanıcı eklemek için kullanın . Emin değilseniz, onu bu kullanıcı gruplarının tümüne ekleyin ("sudo"!).


2
visudosudoers dosyasını düzenlemek için varsayılan düzenleyicinizi kullanacak bir komuttur. Onsuz bu dosyayı düzenleme bir ağrı olabilir ve değil önerilir. sudo update-alternatives --config editor
EarthmeLon

Ya da bunu VISUAL=vim visudosadece bu sefer deneyebilirsiniz . Ancak editör gibi varsayılan programları değiştirmenin harika bir örneği.
Anders

6

Evet, sudoyalnızca kullanıcının belirli komutları ek ayrıcalıklarla çalıştırmasına izin verecek şekilde yapılandırabilirsiniz . Bunu /etc/sudoersdosyanızda değiştirebilirsiniz , ancak bunu doğrudan yapmamanız, ancak bunun için sudo visudokomut kullanmanız önerilir .

Varsayılan sistem kurulumunda böyle bir satır bulmalısınız:

pi ALL=(ALL) NOPASSWD: ALL

sudoKullanıcının pitüm kammandoları rootkullanıcı olarak şifre bile vermeden çalıştırmasına izin vermesini söyler . ALLSonuncuyu değiştirebilir ve çalışmasına izin verilen (tam yollarıyla) virgülle ayrılmış komutlar listesini belirtebilirsiniz. Sizin durumunuzda bu satırı şu şekilde değiştirmeniz gerekir:

pi ALL=(ALL) NOPASSWD: /usr/bin/apt-get, /sbin/shutdown

Kullanıcıyı sudoersetkilemede bir satır daha olduğunu unutmayın pi:

%sudo   ALL=(ALL:ALL) ALL

Bu satır, gruptaki tüm kullanıcıların sudo( %adın önündeki karakter, kullanıcı adı yerine bir grup adı anlamına gelir) KENDİ şifrelerini bilmeleri koşuluyla TÜM şifreleri çalıştırmasına izin verir . Bu satırdan ayrılırsanız, kullanıcı diğer tüm komutları çalıştırabilir, ancak şifresini girmeniz istenir. pi

Ya bu satırı kaldırmak veya kullanıcıyı kaldırabilir size bunun olmasını engellemek istiyorsanız pidan sudogrupta.

/etc/sudoersDosyada değişiklik yaptıktan sonra , sudo -l -U pikomutu çağırarak gerçekten ne istediğinizi kontrol etmek isteyebilirsiniz .

Elbette farklı hesaplar oluşturabilir ve sudoersfarklı komutlara erişmelerini sağlayacak şekilde yapılandırabilirsiniz .


1

Mayıs 2018, Bu hala kavram olarak doğru, ancak prosedür daha sonraki sürümlerle değişti:

İlk olarak, dosyalar en sevdiğiniz metin düzenleyiciniz hangisi olursa olsun doğrudan vi veya nano veya leafpad veya emac'larda düzenlenmelidir.

Bu dosyada pi kullanıcı adı belirtilmemiş:

/etc/sudoers

ve dosyanın son satırı şudur:

#includedir /etc/sudoers.d

Bu, adlı bir dosya içeren bir dizindir

010_pi-nopasswd

bu tek satırı içeren

pi ALL=(ALL) NOPASSWD: ALL

Kullanıcı pi olarak oturum açtığım sürece herhangi bir sudo komutu istememe etkisi vardır. (sözdiziminin tam olarak bu şekilde olması gerektiğini unutmayın)

Bu harika.

Grup hattı %sudo ALL=(ALL:ALL) ALLhala orada

Sorunun ilk kısmını cevaplamak için:

/Etc/sudoers/sudoers.d/010_pi-nopasswd dosyasını, ekleme işlemini başarısız kılmak için bir dizin düzeyinde yukarı taşıdığımda, 15 dakika beklediğimde, Raspbian sistemimin sudo kullanıldığında kendi parolamı sormasına neden oldu, sadece benim Ubuntu 14.04 gibi LTS sistemimi yapardım.

Sonra ait olduğu yere geri götürdüğümde, 10 dakika sonra bile artık beni uyarmadı.

Yeniden başlatma gerekmez. Voila, sudo kullanırken şifre sormanıza gerek yok

010_pi-nopasswd dosyasının bulunmaması dışında lubuntu 14.04 LTS test sistemim aynı kuruluma sahip. lubuntu kök kullanıcı olarak pi ile kuruldu. Sudo'yu her kullandığımda beni uyardı, sonra 10 dakika boyunca bana sormadı.

Aynı dosyayı, Raspbian'ın kurulum şekli gibi Ubuntu sistemine ekledim (hala bu 10 dakikalık penceredeyken bu dosyada chmod 0440'ı unutmayın) - ve

Voila, 15 dakika sonra bile pi olarak oturum açtığımda artık kendi şifremi sormuyor.

Yine, değişiklik anında yeniden başlatma gerekmeden gerçekleşir.

Bu, kök kullanıcı pi olarak oturum açıldığında sudo komutunun kullanılmasını istemenin nasıl devre dışı bırakılacağı ve etkinleştirileceği Mayıs 2018 cevabıdır. Diğer kullanıcılar ve gruplar aynı şekilde yapılandırılabilir.

- Ubuntu 16.04 LTS için UPDATE Bu sistem de çok benzer. Bununla birlikte, en büyük fark, 16.04'ün çok daha sıkı dosya izinlerine sahip olmasıdırsu , bu nedenle çalışma modunda yapılmalıdır . Kök parolanızı unuttuysanız sudo passwd root, sukomut istemini kullanarak normal isteminizden sıfırlayabilirsiniz. Sonra komut çalışacaktır ve oradan gidebilirsiniz.


Bunu Google üzerinden buldum - bu yüzden eğer bunu takip edersem, kullanıcının sudoers grubunda olması gerekiyor, ancak /etc/sudo.d belirli bir kullanıcıdan ne sıklıkla bir şifre istenmesini denetler?
lonstar

1
Evet. Sende var. Üye olmak sudoersgenellikle kullanıcının oluşturulduğu tarihte yapılır. Kullanım Örneği: Ortak komut dizesinin sudo apt-get update && sudo apt-get upgradesudo'yu iki kez çağırdığını, ancak yükseltmeden önce durup parolayı tekrar isteyebileceğini sinir bozucu olduğunu göreceksiniz . Bu yüzden benim bir giriş adımı (pi) asla istemek için benimkini ayarlayın ve daha sonra sudo apt-get update -y && sudo apt-get upgrade -yaynı şekilde büyük değişiklikler yapmak için Tamam istemek için durmayacak şekilde kullanın . Daha Unix benzeri yapmak için. Sadece istediğimi yap, ve uzaklaşsam bile bitmesini istiyorum.
SDsolar

0

SSH üzerinden sudo erişimine izin vermek, herhangi bir kullanıcının paket yüklemesine izin vermekten daha güvenlidir. Gerçekten endişeleniyorsanız, şu satırdan değiştirin /etc/sudoers:

pi ALL=(ALL) NOPASSWD: ALL

için

pi ALL=(ALL) PASSWD: ALL

Bu, herhangi bir oturumda sudo'yu ilk kez kullandığınızda ve birkaç dakika sonra tekrar parola girmeniz gerektiği anlamına gelir. /etc/sudoersDoğrudan düzenleme yapamazsınız ; sudo visudobunu yapmak için kullanın .

Krzysztof'un tam orada bir cevapla atladığı anlaşılıyor. Her yeni paket yüklediğinizde yeniden başlatmanız gerektiğinden gerçekten emin misiniz? Yeni bir çekirdek veya bellenim yüklemezseniz, başka bir şeyin yeniden başlatılması gerekmez. Bu, burada sahip olduğumuz kaliteli bir işletim sistemi ...


3
timestampZaman aşımından bahsetmek iyi bir fikirdir. Varsayılan olarak BTW, 15 dakikadır. Not PASSWD(eğer varsayılan NOPASSWDdaha önce bu komut listesinde belirtilmedi). Ayrıca, /etc/sudoersne yaptığınızı biliyorsanız doğrudan sorunsuz olarak düzenlenebileceğini unutmayın . Kullanılması visudodosyayı önlenmesi geçici dosyada markaları değişiklikler otomatik (sözdizimi hataları ve / veya güvenlik sorunlarını tanıtmak olabilir) değişim ortasında yazılacak, birden eşzamanlı düzenlemeleri karşı bu dosyayı kilitler ve dosyayı yazmadan önce bazı sözdizimi kontrolleri yapar.
Krzysztof Adamski

Bence OP güncellemeleri nadiren her zaman yeni bir çekirdek alır ... ya da bir meslektaşım ona her seferinde yeniden başlatmasını söyledi, çünkü OP'nin güncelleme listesinde bir çekirdek paketini nasıl tespit edebileceğini açıklamak istemedi.
orithena

Bu yorum için TNX, @Krzysztof. Cevabımda düzeltmeyi yaptım. Ve düzenleme konusunda haklısınız. Aslında, 16.04 makinemde pi satırını doğrudan sudoers dosyasına koydum, çünkü sudoers.d sadece bir benioku içeriyordu. Ben sadece 'bıraktım, ama en azından pi izinleri işleniyor. (Favorit editörüm VI / VIM, btw, ancak bazen yaprak pedi veya Boşta kullanacak. Emacs üzerinde tekrar uzmanlaşmadım - 15 yıl uzun bir süre - ve vim içinde emacs'ta yapabileceğimden çok daha hızlı, daha hızlı yapabilirim , çok teşekkürler.) Tekrar teşekkür ederim.
SDsolar

0

Scruss'un söylediklerine bir alternatif, /etc/sudoers.d/010_pi-nopasswddosyayı çalıştırarak silin sudo rm /etc/sudoers.d/010_pi-nopasswd. Çok daha kolay ve daha güvenli ana sudoers dosyasını düzenlemek, sudo kırabilir.

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.