Як скинути дозволи для папок до своїх стандартних параметрів в Ubuntu?


19

Я нещодавно набрав команду

sudo chmod 777 -R /

після цього деякі речі люблять

sudo -i

не працюють нормально. Тож мені цікаво, чи є якийсь спосіб я міг би відновити дозволи до папки до їх початкового стану?


Я не думаю, що Linux пам’ятає попередні налаштування дозволу. Спробуйте створити новий файл і подивіться, які налаштування дозволу він отримує.
thecoshman

О, почекай, я бачу, що ти там робив. Ймовірно, це ситуація з перевстановленням. Просто створіть резервну копію своїх даних, занотуйте програми, які ви встановили. Веселіться, чому б не спробувати 10.4! (найкраще ім’я коли-небудь btw ... що означає це радіо?)
thecoshman

Я смію вас знайти одну людину, яка не зробила так точно: D це дуже хитра ситуація. ви можете виправити це, спробуйте відповідь jlovi, але це займе час і зусилля, і це засмутить. просто перевстановіть і закінчіть це. І ніколи не використовуйте sudo chmod, якщо ви не знаєте, що робите.
Джек Майерз

Відповіді:


17

З цієї безладної ситуації можна повернутися.

Я знову побіг того ж виду з питання (якась помилка в сценарії, про який я писав) і вирішив це, але вам потрібно звернутися за допомогою до експерта. Будьте дуже обережні!

По-перше, мою ситуацію було легше вирішити, оскільки у мене була подвійна система завантаження (Ubuntu та моя стара версія Fedora), але запуск ОС з CD / DVD або USB-ключа повинен робити те саме.

MPOINT=/mount/ubuntu

Спочатку я змонтував свої файлові системи на зразок цієї (не забудьте створити точки монтажу):

mount /dev/ubuntu/root $MPOINT
mount /dev/ubuntu/home $MPOINT/home

Потім я запустив таку команду (моя проблема була лише в декількох критичних - каталогів), щоб скопіювати дозволи на працюючу систему в безладний (адже в моєму випадку я встановив систему Ubuntu у Virtual Box під Fedora і отримали дозволи там):

find /etc /usr /bin /sbin -exec stat --format "chmod %a \"${MPOINT}%n\"" {} \; > /tmp/restoreperms.sh

А потім я запустив скрипт Restoperms.sh.

Мені знову вдалося завантажитися на Ubuntu.

Вміст Restoperms.sh буде приблизно таким:

(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)

Я не перевіряв його, але він також повинен працювати для власників та груп власників. Щось на зразок:

find /etc /usr /bin -exec stat --format 'chown %U:%G ${MPOINT}%n' {} \; > /tmp/restoreperms.sh^

(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)

Звичайно, ви повинні подбати про те, щоб UID та GID були однаковими для обох систем, але для користувачів і груп, пов’язаних із системою, це не повинно бути проблемою.

Редагувати:

Крім того, власник налаштування зведе нанівець прапор SGID та SUID , що спричинить дивні проблеми (Наприклад, ви не зможете виконати судо, якщо дозвіл не буде 4755). Ви повинні встановити дозволи лише після встановлення власників. ЗБЕРЕГАЙТЕ повну інформацію про дозвіл файлу разом із інформацією про власника.

Rk:

  1. Важливим для цього є збереження диска встановлення синхронізованим з використовуваною версією або принаймні робота з поточною версією ubuntu.
  2. Тепер я маю ці команди на кроні, що працює щодня (може бути тижнями), щоб зберегти цю інформацію. Це полегшить рішення наступного разу, але, звичайно, як це я маю зараз, воно більше ніколи не повториться. ;-) Щось на зразок цього:

    0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2

    0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2

Правильна (комбінована) команда більше нагадує:

`/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2`

Зауважте, що може знадобитися додаткова обережність для обліку дужок у назви файлів (наприклад, під локалями), і що хаун може беззвучно відключити встановлені та жорсткі біти, встановлені chmod. В останньому випадку, який би порушив, скажімо, / bin / su та / usr / bin / sudo, можливо, вам знадобиться поміняти порядок вищевикладених пунктів вище.


просто відмінна відповідь. Я вказав на це у Ask Ubuntu
Private

Просто ідеальне рішення для мене!

2

Після відновлення судо або вибору режиму відновлення при завантаженні

Можна відновити цілу систему за допомогою debsums, які перевіряють цілісність та дозволи файлів.

зі сторінки чоловіка:

apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)

Перевстановлюйте пакети зі зміненими файлами

або обмежено певним шляхом, наприклад /usr:

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/usr ) | cut -d : -f 1 | sort -u)

або обмежено кількома наборами шляху, наприклад: /sbin /etc /var

apt-get install --reinstall $(dpkg -S $(debsums -c | grep -e ^/etc -e ^/sbin -e ^/var  ) | cut -d : -f 1 | sort -u)

debsums дійсно перевіряє дозволи? Я намагався chmod a-x /bin/pingі debsums -cне повідомив би про цей файл.
реокс

0

Завжди дивіться, як ви біжите як судо.

Цей потік пояснює, що ви можете вручну повернути деякі дозволи назад, і сценарій там допомагає в цьому, але все-таки це велика робота. Швидше дотримуйтесь порад на протекторі, щоб зберегти встановлені пакети (маркування) та перевстановити ОС, а також застосувати розмічені збережені пакети, щоб повернути ваші програми.


0

Наскільки мені відомо, лише пакети System V та RPM пропонують команду відновити дозволи файлів. У System V (Solaris) це pkgchk, а RPM - rpm --setperms.

На жаль, не існує такої команди для пакетів Debian / Ubuntu - але я можу помилитися тут.

Але навіть за допомогою цих команд не тривіальне завдання повернути вашу систему до нормального стану, і, відремонтувавши її, ви зможете легко заподіяти нову шкоду вашій системі - якщо не будете обережні.

За винятком Йосипа, ви не перший, і ви не будете останнім, хто введе таку команду. Але сама ідея змінити дозволи файлів на 777 в системі Unix є яскравим свідченням того, що ви не дуже досвідчені з такою системою. Найкраще, що ви можете зробити в цій ситуації - це створити резервну копію того, що вам знадобиться знову (домашні каталоги, конфігураційні файли, поштові файли?) Та спробувати нову інсталяцію.

І ви повинні бути дуже, дуже обережними, коли ви відновите свої - пошкоджені - резервні файли.

Удачі!

PS: Мені просто цікаво, яку проблему ви хотіли вирішити?


0

Нічого, ти це вбив. Він мертвий! Спробуйте увійти та використовувати машину як root (оскільки ви це ввімкнули), а потім змініть групову приналежність root до користувачів. Це може бути, а може і не працювати, тому що я ніколи не пробував цього, але варто його зняти.


0

Ви не можете скасувати chmodоперацію; принаймні, не в сенсі відкочування до попередньої настройки, до чого вимагає ця ситуація. Можливо, ви можете скасувати chmodоперацію, chmodповернувши кожен файл і каталог до його початкового режиму, - але вони не однакові; визначення оригінальних режимів складне (як обговорюється в інших відповідях).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.