Tüm kullanıcılar için kapatma komutu devre dışı bırakılsın, hatta kök sonuçları?


11

shutdownBir Ubuntu Sunucusu kurulumunda tüm kullanıcılar, hatta root için komutu devre dışı bırakmak istiyorum .

Bunu yapmak istememin sebebi, makineyi bu şekilde kapatma alışkanlığına girmemeyi sağlamaktır, çünkü SSH, bununla aynı anda birçok üretim makinesine giriyorum ve komutu yanlış pencereye yazarak diğer makinelerden birini yanlışlıkla kapatmak istersiniz.

Kapatma devre dışı bırakmak istediğim sunucu sadece Windows masaüstümde VirtualBox içinde çalışıyor ve komut satırından kapatamıyorsam sadece yerel testler için kullanıyorum.

VirtualBox görüntüsünde farklı bir parolamın olmasını sağlayarak sorunu zaten hafiflettim, ancak açıkçası sudoüretim makinelerinden birinde 'pencere' içindeysem, hala yanlışlıkla kapatabilirim.

Sorularım:

  1. Kapatma komutunu nasıl devre dışı bırakabilirim?
  2. Kapatma komutunu devre dışı bırakırsam, bilmem gereken herhangi bir sonuç var mı? Özellikle, fiziksel bir makinede güç düğmesine basmaya eşdeğer olan ACPI kapatma desteğini devre dışı bırakacak mı? Diğer jenerik uygulamaları etkileyebilir mi?

Bilgi için, sadece bu VirtualBox görüntüsünü kabuk komut dosyalarını denemek, Tomcat ve Java'yı çalıştırmak ve bu tür şeyler için kullanıyorum.


2
Bence insan hatasını önlemek için sistemin böyle bir temel davranışını değiştirmek kötü bir fikirdir. Uzun vadede çözdüğünden daha fazla sorun getirmesi muhtemeldir. Her sistem için farklı bir kullanıcı şifresi tutarsanız, riski en aza indirirsiniz (sudo gerektirdiği için). Belirli bir sistem değişikliğine bağlı olmayan iyi alışkanlıklar geliştirmelisiniz, çok daha sık kullanılan rm / cp / chmod ile çok daha ciddi felaketlere neden oluyor ve sanırım bunları devre dışı bırakmayacaksınız.
João Pinto

Buna katılıyorum ve kesinlikle bir şeyler yapmanın doğru yolu olsa da, bu, risk almadan şeyleri denememe izin vermek için masaüstümde bulunan resmi olmayan bir Ubuntu görüntüsü olan küçük bir durumdan kaçınmaktır. benim işverenin makineleri :)
Rich

Yanıtlar:


3

Komutu genellikle sudo shutdownyerine olarak çalıştırırsanız, sudo /sbin/shutdownbunun yerine terminale bir mesaj göndermek için "kapatma" için genel bir kabuk takma adı oluşturabilirsiniz. Gerçek yürütülebilir dosya diğer tüm amaçlar için hala orada olacaktır.


Bu sadece bir alışkanlığı kesmeye çalışıyorsanız gitmenin en iyi yolu gibi görünüyor.
ændrük

2
Ancak bir kabuk takma adı ( alias shutdown=sl) oluşturmanın bariz yolunun sudo argümanları üzerinde herhangi bir etkisi olmayacağını unutmayın. Zsh'de argümanlarla eşleşen takma adları tanımlayabilirsiniz, ancak bence bash değil. sudoİlk argüman ise herhangi bir şey yapmayı reddeden bir kabuk komut dosyası için diğer ad kullanabilirsiniz shutdown.
poolie

2
Başka bir deyişle, bu aslında işe yaramaz.
poolie

14

Bu sorunun çok daha iyi bir yaklaşım yüklemektir molly-guard programı sen kutuları yok doğrusu kendini kapatma çalıştırmak asla yetiştirmek için çalışmak yerine, kapatma istiyorum.

molly-guard makinelerin yanlışlıkla kapatılmasını veya yeniden başlatılmasını önlemeye çalışır. Bunu mevcut komutlardan önce birkaç kontrol enjekte ederek yapar: durdurma, yeniden başlatma, kapatma ve kapatma.

Tipik yapılandırma, gerçekten doğru olanı onaylamak için makinenin ana bilgisayar adını yazmanızı istemesidir.

Yeni komut dosyaları eklemek mümkündür /etc/molly-guard/run.d(kılavuzda belgelendiği gibi , komut dosyalarının beklediği adlara uyması gerekir run-parts.

Gerçekten devre dışı bırakmak istiyorsanız shutdown(ve bu çok tuhaf bir fikir),

chmod 0 /sbin/shutdown

kullanmanız gerekirse, 0755'e geri getirin.


Harika bir fikir ama ne yazık ki mümkün değil çünkü kendi yazılımımı kurabilmek için sistemler üzerinde yeterli kontrole sahip değilim. Ne yazık ki onları kapatmak için yeterli kontrole sahibim!
Zengin

4
Ciddi misin? Bu çok garip. Sadece sudo erişimine erişiminiz varsa, belki de insanları büyük bir bilgi istemi için sudo'yu değiştirmeye ya da her zaman bir parola istemeye ikna edebilirsiniz. Yanlışlıkla onları kapatma riski varsa, molly-guard kurmak yöneticilerin çıkarlarına olacaktır.
poolie

1

Kapatma komutunu devre dışı bırakmak için sadece ikili olmayan çalıştırılabilir hale getirin. sudo chmod a-x /sbin/shutdown Ayrıca kapatma için man girişi söylediği için diğer kapatma yöntemlerini de etkileyeceğini düşünmüyorum

shutdown, sistemi uygun çalışma düzeyine getirmek için init arka plan programına bir istek gönderir

Bu nedenle, başka herhangi bir komut / komut dosyası, kapatma komutunu devre dışı bıraktıktan sonra bile bunu yapabilir, örneğin GNOME menüsünden kapanmayı kullanarak sistemimi hala kapatabilirim. Ayrıca, reboot komutunu kullanarak bilgisayarınızı komut satırından yeniden başlatabilirsiniz.


1

shutdownKomut içindedir /sbin/shutdown. Bunu yaparak devre dışı bırakabilirsiniz:

sudo mv /sbin/shutdown /sbin/really-do-shutdown

Ancak : Bu, sistemi kapatma yöntemlerinin neredeyse hiçbirinin artık çalışmadığı anlamına gelir. Bu cevap için test makinemdeki gnome'u kapatmak, sadece oturumunuzu kapatıp GDM'ye geri göndermesine neden olur.

Daha sonra sisteminizi kapatmak istiyorsanız,

sudo init 0

Kapatmayı "devre dışı bırakmak", komutu herhangi bir şey için kullanan her uygulamayı etkiler. Yana init 0bir sistem kapatma tavsiye edilen bir yol değildir, sahip tüm programlar sistem kullanımını kapatmaya shutdownartık çalışmaz bunun için.

  • Uygulamalar ayrıca eksik dosya veya dosyanın çalıştırılamıyor olması nedeniyle istisnalar atabilir ve bu da bir kapatma gerekli olmasa bile çökmelerine neden olabilir. Bu, bazı ikili, ideal olarak yürütülebilir bir dosyayı (kabuk komut dosyası değil - işe yaramayacak) yerine taşıyarak çalışabileceğiniz bir uç durumdur. Örneğin:

    sudo cp /bin/ps /sbin/shutdown
    

    Bu, orijinali güvenli bir şekilde çıkardıktan sonra olur .

Şimdi, tüm bunlar oldukça çirkin ve João Pinto'nun yorumunda özetlenen nedenlerle buna karşı öneriyorum . Ama bunu yapmanı engellemeyeceğim. :-)

/ Sbin / shutdown komutunun yedeğini almakla kalmayın, ayrıca herhangi bir soruna neden olması durumunda bir kurtarma planı hazırlayın . Örneğin, bunu alamadığınız bir sunucuda yapmayın. Ve sistemin hiç önyükleme yapmadığını varsayarak kurtarma planınızı önceden test edin (elbette önyükleme yapacak - test ettim - ama lütfen güvenli tarafta olun).


0

Başka bir çözüm olması gerektiğini düşünüyorum, Sunucular kapatma devre dışı bırakmak için ssh politikası olmalı ve ssh üzerinde 0 init, ya da "neden" ve özel "kapatma şifresi" girmek için Windows gibi konsolda görüntülenen özel bir iletişim kutusu olmalıdır . Bunun için güç düğmesi Sunucu kullanımında parola korumalı olmalıdır.

Şu anda Basmalı Düğme yerine "fiziksel anahtar anahtarı = 4Euros" kullanıyoruz.


0

shutdownKomutu devre dışı bırakmak istiyorum .

cp / sbin / shutdown / sbin / shutdown-backup

rm / sbin / kapatma

çünkü bir kişi bu komutu zorla kullanmaya çalışırsa,

Artık kimse kapatma komutunu kullanamayacak.

yüklemek için bir mesaj komutu bulunamadı görüntüler.

vim /etc/bash.bashrc

Bash.bashrc dosyasının sonuna satır ekle

alias shutdown = "echo 'Bu komutu kullanmanıza izin verilmiyor'"

geri istiyorsanız (etkin). sadece geri kopyala

cp / sbin / shutdown-backup / sbin / shutdown

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.