Почему chmod 777 -R / оставляет систему непригодной для использования?

52

Я только предоставляю разрешение всем делать что-либо, но почему система сбой, предоставляя только разрешения? Я только изменяю разрешение, не изменяя файлы.

    
задан Brij Raj Kishore 17.07.2016 в 22:48
источник

4 ответа

103

Есть несколько причин.

Сначала в дополнение к обычным разрешениям на чтение / запись / выполнение есть некоторые другие биты, которые содержат разрешения на файл. Наиболее заметно setuid и setgid . Когда задана программа с одним из этих битов разрешения, она получает «эффективный UID» и / или «эффективный GID» владельца программы, а не пользователь, который ее запускал. Это позволяет программам работать с большим количеством разрешений, чем пользователь, который их запускал. Он используется многими важными системными утилитами, включая su и sudo . Ваша команда chmod очищает эти биты, оставляя утилиты непригодными.

Во-вторых, некоторые программы (в частности, ssh ) выполняют проверку работоспособности на правах доступа к файлам и отказываются использовать файлы с разрешениями, которые они считают небезопасными. Это снижает риск того, что небрежные администраторы случайно оставят дыры в безопасности, но это еще более болезненно относится к разрешенным разрешениям на файлы.     

ответ дан Peter Green 18.07.2016 в 04:37
источник
39

Короткий ответ.

Система Linux требует определенных разрешений для определенных программ, таких как sudo и т. д.

При запуске chmod 777 -R / вы удалите все разрешения и замените их 777 . Это делает систему непригодной для использования, если вы не вручную восстановите все разрешения.

На практике это намного быстрее и проще для переустановки.

Проблема в том, что многие системные программы разработаны так, что они не запускаются, если они «не нравятся» разрешениям. Это сделано по соображениям безопасности.

Я думаю, что более важно объяснить, как обрабатывать дизайн системы в парактике, чем объяснять, почему каждая программа не работает с неправильными разрешениями.

Если вы действительно хотите, чтобы все пользователи имели неограниченные разрешения в Ubuntu, вы можете добавить всех пользователей в группу sudo вместо изменения прав на файлы и каталоги. Это будет иметь тот же эффект, но не разрушит систему.

Другой способ (очень плохой) - активировать учетную запись root и разрешить всем пользователям входить в систему как пользователь root.

    
ответ дан Pilot6 17.07.2016 в 22:54
32

chmod имеет тонкие нюансы.

chmod 0777 ведет себя иначе, чем chmod u+rwx,g+rwx,o+rwx , в том, что setuid и setgid обнуляются первым и сохраняются последним.

Вот почему система стала непригодной для использования. Вы удалили нужную setuid из нескольких программ.

Вот список файлов setuid или setgid на моем ноутбуке Linux Fedora 23:

[[email protected]]# 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
[[email protected]]# 

Я удалил десятки записей шума в кешках и журналах.

    
ответ дан wallyk 18.07.2016 в 19:21
15

Дополнительно к другим ответам: вы также удалили «липкий бит» из /tmp (который обычно имеет разрешения 1777), и это может вызвать другие непредвиденные проблемы, поскольку программы смогут писать или удалять друг друга 'временные файлы.

Липкий бит - это специальное разрешение, позволяющее кому-либо создавать файлы в /tmp , только позволяет человеку, который его создал, переместить или удалить.

    
ответ дан Ben XO 19.07.2016 в 15:01