Я даю лише дозвіл усім робити що-небудь, але чому система виходить з ладу, даючи лише дозволи? Я лише змінюю дозвіл, не змінюючи файли.
/var/log/syslog
, ви навіть зрозуміли причину.
Я даю лише дозвіл усім робити що-небудь, але чому система виходить з ладу, даючи лише дозволи? Я лише змінюю дозвіл, не змінюючи файли.
/var/log/syslog
, ви навіть зрозуміли причину.
Відповіді:
Причин є кілька.
По-перше, крім звичайних дозволів на читання / запис / виконання / є деякі інші біти, які містять дозволи файлів. Найбільше setuid
і setgid
. Коли програма з одним із цих бітів дозволу запускається, вона отримує "ефективний UID" та / або "ефективний GID" власника програми, а не користувача, який її запускав. Це дозволяє програмам запускатися з більшою кількістю дозволів, ніж користувач, який ними керував. Він використовується багатьма ключовими утилітами, включаючи su
та sudo
. Ваша chmod
команда очищає ці біти, залишаючи утиліти непридатними.
По-друге, деякі програми (зокрема ssh
) перевіряють дозволу на файли та відмовляються використовувати файли з дозволами, які вони вважають небезпечними. Це знижує ризик необережних адміністраторів випадково залишити отвори у безпеці, але це робить ще більш болючим справу зі знищеними дозволами на файли.
Коротка відповідь.
Система Linux вимагає конкретних дозволів для певних програм, наприклад sudo
тощо.
Під час запуску chmod 777 -R /
ви стираєте всі дозволи та заміняєте їх 777
. Це робить систему непридатною, якщо ви вручну не відновите всі дозволи.
На практиці це набагато швидше і простіше перевстановити.
Проблема полягає в тому, що багато системних програм розроблені таким чином, що вони не запускаються, якщо вони "не люблять" дозволи. Це зроблено з міркувань безпеки.
Я вважаю, що важливіше пояснити, як поводитися з дизайном системи в парактисі, ніж пояснювати, чому кожна програма не працює з неправильними дозволами.
Якщо ви дійсно хочете, щоб усі користувачі мали необмежені дозволи в Ubuntu, ви можете додати всіх користувачів до sudo
групи замість зміни дозволів на файли та каталоги. Це матиме такий же ефект, але не зіпсує систему.
Інший спосіб (дуже поганий) - активувати кореневий рахунок і дозволити всім входити як root.
chmod
має тонкі нюанси.
chmod 0777
поводиться інакше, ніж chmod u+rwx,g+rwx,o+rwx
у тому, що setuid та setgid нулюються першими та зберігаються останніми.
Ось чому система стала непридатною. Ви видалили необхідні налаштування з кількох програм.
Ось список встановлених або встановлених файлів на моєму ноутбуці Linux Fedora 23:
[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]#
Я видалив десятки записів шуму в кешах і журналах.
chmod
робиться, та навести приклади доказів, чого деінде дуже бракує.
chmod u+rwx,g+rwx,o+rwx -R /
не порушить систему?
На додаток до інших відповідей: ви також видалили "клейкий біт" /tmp
(який зазвичай має дозволи 1777), і це може спричинити інші несподівані проблеми, оскільки програми зможуть записувати або видаляти тимчасові файли один одного.
Клейкий біт - це спеціальний дозвіл, який, хоча дозволяє кожному створювати файли /tmp
, дозволяє особі, яка його створила, лише переміщати чи видаляти.