Neden chmod 777 -R / sistemi kullanılamıyor?


52

Herkese bir şey yapması için izin veriyorum, ancak sistem neden yalnızca izin vererek çöküyor? Dosyaları değiştirmeme sadece izinleri değiştiriyorum.



2
Bence, çökme değil, sadece bir noktada önyükleme işlemini iptal et. Bakmak isterseniz /var/log/syslog, hatta nedenini anlamaya istiyorum.
Hi-Angel,

7
Bunun bir şeyleri bozmasa bile, "herkese bir şey yapma izni vermeyeceğini " bilmek önemlidir . Sadece "kök" (daha doğrusu, etkili UID sıfır olan bir işlem) yapabileceği çok sayıda eylem olacaktır.
zwol

6
@ "İlişkili" derken, "neden siteler arasında dupe olarak işaretleyebileceğimizi gösteren kesin kopyayı" kastediyorsanız, kesin! harika bağlantı. ;)
underscore_d

4
Bu soruyu sormak için geldiğin hikayeyi duymayı çok seviyorum.
Dewi Morgan

Yanıtlar:


104

Bunun birkaç nedeni var.

İlk önce normal okuma / yazma / yürütme izinlerine ek olarak, dosya izinlerinin içerdiği başka bitler de vardır. En önemlisi setuidve setgid. Bu izin bitlerinden birine sahip bir program çalıştırıldığında, onu çalıştıran kullanıcı yerine programın sahibinin "etkin UID'si" ve / veya "etkin GID'si" alır. Bu, programların, bunları koşturan kullanıcıdan daha fazla izinle çalıştırılmasını sağlar. suVe de dahil olmak üzere çok önemli sistem yardımcı programları tarafından kullanılır sudo. Sizin chmodkomut kullanılamaz araçları bırakarak bu bitleri temizler.

İkincisi, bazı programlar (özellikle ssh) dosya izinlerini kontrol eder ve güvensiz olarak gördükleri izinlere sahip dosyaları kullanmayı reddeder. Bu, dikkatsiz yöneticilerin yanlışlıkla güvenlik delikleri bırakma riskini azaltır, ancak silinen dosya izinleriyle uğraşmayı daha da acı verici hale getirir.


41

Kısa bir cevap.

Linux sistemi gibi bazı programlar için özel izinler gerektirir sudo.

Çalıştırdığınızda chmod 777 -R /tüm izinleri silin ve bunları ile değiştirin 777. Bu, tüm izinleri manuel olarak geri yüklemediğiniz sürece sistemi kullanılamaz hale getirir.

Uygulamada yeniden kurmak çok daha hızlı ve kolaydır.

Sorun, pek çok sistem programının izinleri "beğenmedikleri" durumunda başlamayacakları şekilde tasarlanmış olmalarıdır. Bu güvenlik nedeniyle yapılır.

Her bir programın neden yanlış izinlerle çalışılamadığını açıklamak yerine, sistem tasarımını paragraf olarak nasıl kullanacağını açıklamanın daha önemli olduğunu düşünüyorum.

Ubuntu'da tüm kullanıcıların gerçekten sınırsız izinleri olmasını istiyorsanız, sudodosya ve dizin izinlerini değiştirmek yerine tüm kullanıcıları gruba ekleyebilirsiniz . Bu aynı etkiye sahip olacak, ancak sistemi mahvetmeyecek.

Başka bir yol (çok kötü bir hesap) root hesabını aktif hale getirmek ve herkesin root olarak giriş yapmasını sağlamak.


11
Belki birileri zaman alacak ve ayrıntılı bir cevap verecektir ;-)
Pilot6 20

1
Herkesin bu sistemde her şeyi yapmasına izin vermenin daha iyi bir yolunu gösterebilirim - ancak her ikilinin neden özel izinlere, ayarlara ve bayraklara ihtiyaç duyduğu konusunda çok derin bir makale yazmak imho. ;-)
Phillip -Zyan K Lee- Stockmann

4
Linux sistemleri, herkesin her şeyi yapmasına izin verecek şekilde tasarlanmamıştır. Kök hesabını etkinleştirebilir ve herkes bunun için kök olarak giriş yapabilir. Aptalca, ama bu böyle.
Pilot6,

9
Yani Pilot6 , sistem programlarının, izinler yanlış giderse düzgün çalışmasına izin vermeyecek şekilde tasarlandığını mı demek istiyorsunuz? Ve lütfen Pilot6 mümkünse, örnekler ve neden bazı uygulamaların sınırlı izinler gerektirdiğini açıklama konusunda daha derin bir cevap veriniz. Teşekkürler.
Brij Raj Kishore

13
Kilitlenme @Goldname olan hata - bu söyleyerek programlar bir bütün rakamdır "Ben bu durumda sistem ile kritik işlevleri gerçekleştiremez, bu yüzden iptal ediyorum"
shadur

32

chmod ince nüanslara sahiptir.

chmod 0777farklı davranır chmod u+rwx,g+rwx,o+rwxki setuid ve Setgid , ilk olarak sıfırlama işlemi ve bunun tarafından korunur.

Bu yüzden sistem kullanılamaz hale geldi. Gerekli setuid'i birkaç programdan kaldırdınız .

İşte Linux Fedora 23 dizüstü bilgisayarımdaki setuid veya setgid dosyalarının listesi:

[root@fedora23lnvr61]# find / -perm /g+s,u+s
/var/log/journal
/var/log/journal/75e870eb13c74fbf97556a32ecf80ea2
/opt/google/chrome/chrome-sandbox
/usr/bin/rogue
/usr/bin/gnuchess
/usr/bin/locate
/usr/bin/umount
/usr/bin/lbrickbuster2
/usr/bin/gpasswd
/usr/bin/crontab
/usr/bin/fusermount
/usr/bin/su
/usr/bin/at
/usr/bin/newuidmap
/usr/bin/sudo
/usr/bin/pkexec
/usr/bin/mount
/usr/bin/chsh
/usr/bin/newgrp
/usr/bin/passwd
/usr/bin/chage
/usr/bin/chfn
/usr/bin/write
/usr/bin/newgidmap
/usr/sbin/mount.nfs
/usr/sbin/lockdev
/usr/sbin/netreport
/usr/sbin/userhelper
/usr/sbin/usernetctl
/usr/sbin/unix_chkpwd
/usr/sbin/pam_timestamp_check
/usr/libexec/kde4/kdesud
/usr/libexec/kde4/kpac_dhcp_helper
/usr/libexec/dbus-1/dbus-daemon-launch-helper
/usr/libexec/qemu-bridge-helper
/usr/libexec/openssh/ssh-keysign
/usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper
/usr/libexec/utempter/utempter
/usr/libexec/abrt-action-install-debuginfo-to-abrt-cache
/usr/libexec/Xorg.wrap
/usr/lib/polkit-1/polkit-agent-helper-1
/usr/lib64/vte-2.90/gnome-pty-helper
/usr/lib64/virtualbox/VBoxSDL
/usr/lib64/virtualbox/VirtualBox
/usr/lib64/virtualbox/VBoxNetNAT
/usr/lib64/virtualbox/VBoxHeadless
/usr/lib64/virtualbox/VBoxNetDHCP
/usr/lib64/virtualbox/VBoxNetAdpCtl
/usr/lib64/virtualbox/VBoxVolInfo
/usr/lib64/vte/gnome-pty-helper
[root@fedora23lnvr61]# 

Önbellek ve kayıtlardaki düzinelerce gürültü girişini kaldırdım.


3
Acaba neden gnuchess ve haydut bu listede?
WiseOldDuck

2
@WiseOldDuck: Oyunların biraz bitmesini bekliyorum, böylece "yüksek puanlı" dosyalarını güncelleyebilirler, ancak imtiyazsız kullanıcıların bunu yapmasına izin vermezler.
wallyk,

3
@WiseOldDuck Wallyk’in dediği gibi, setuid’in mutlaka kök kullanmak zorunda olmadığını unutmayın (ve afaik setgid root için gerçekten kullanışlı değil)
StarWeaver

5
Ne chmodyaptığını açıklamak ve başka yerlerde çok eksik olan bir şey için örnek kanıt sağlamak için uğraşıyordu .
underscore_d

1
Bu chmod u+rwx,g+rwx,o+rwx -R /, sistemi bozmayacağı anlamına mı geliyor ?
Dennis Jaheruddin

15

Diğer yanıtlara ek olarak: "yapışkan bit" i de kaldırdınız /tmp(genellikle 1777'ye sahip) ve bu programlar diğerlerinin geçici dosyalarına yazabilecek veya silebileceklerinden diğer beklenmeyen sorunlara neden olabilir.

Yapışkan bit, herhangi birinin dosya oluşturmasına izin verirken /tmp, yalnızca onu oluşturan kişinin taşınmasına veya kaldırmasına izin veren özel bir izindir .


4
"ve bu sistem root / tmp dizinini kullanmadan başkasını engellerdi." - Bu doğru görünmüyor. Hala herkesin system / tmp dizinini kullanmasına izin verir. Kullanıcı, grup ve diğerlerinin hepsinin hakları varsa, yapışkan bit gerekmez. Ancak, herkesin başkalarının dosyalarını kaldırmasına izin verir.
hvd

1
Öyleyse Ben Ben chmod 1777 -R / o zaman çalıştırırsam, yapışkan bit temizlemiyorum çünkü sorun olmamalı? -
Brij Raj Kishore,

Thanks @hvd - haklısın ve ben de yazıyı biraz yansıtacak şekilde değiştirdim.
Ben XO,

@BrijRajKishore'da, bunu neden en başta yaptığınızla ilgili soru var. Ubuntu ve onu oluşturan programlar, birçok nedenden dolayı "izinsiz" çalıştırılmak üzere tasarlanmamıştır. Bunun yerine kök "su" yapmak daha mantıklı olur.
Ben XO,

1
Kazaya yol açıp açmayacağı bilinmiyor. Bunu yapmak tamamen mümkün, çünkü aniden uygulamalar birbirlerinin geçici dosyalarına - belki de yanlışlıkla - bir şeyler yapabilirler ve bu bir çökmeye neden olabilir. Ubuntu hiç bu şekilde test edilmediğinden, muhtemelen ilk öğrenen siz olacaksınız. :-) Öte yandan, yapışkan parçayı sistemdeki her bir klasöre ayarlamak, klasördeki grup izinleri nedeniyle programları değiştirmeyi bekleyen uygulamalarda (yani, 2777 izinli klasörler) birçok soruna neden olabilir.
Ben XO,
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.