LINUX.ORG.RU

tar не запоминает ничего кроме users:group и rwx?

 


0

1

чтобы проверить как взлетит бекап, сделал собсна бекап системы, ОТФОРМАТИРОВАЛ ДИСК ЦЭ, и восстановил из бекапа все как было. система завелась, но только позже я заметил, что что-то не так.

# tar --create --xz --file /tmp/rootfs.txz --one-file-system --exclude=/lost+found /

таким вот образом делался бекап.

# tar --extract --file rootfs.txz --directory /mnt
# chroot /mnt /bin/bash
# lilo
# reboot

но сейчас перестала работать львинная доля системы. перестал работать su из под юзера. то есть, как root я могу залогиниться, а вот сделать su под пользователем - не могу. chmod +s /bin/su решил проблему.

еще пользователи теперь не могут пинговать.

ping: icmp open socket: Operation not permitted

и снова, chmod +s /bin/ping решил проблему.

блин! tar не запоминает никакие дополнительные биты, кроме rwx? и как теперь починить систему. :(

★★★★★

Ответ на: комментарий от LongLiveUbuntu

ко.

а теперь похоже, придется пересобирать мир, чем разбираться с каждым бинарем какие биты у него стояли.

Spoofing ★★★★★
() автор топика

tar не запоминает никакие дополнительные биты, кроме rwx?

По идее должен запоминать. (Хотя может для некоторых версий нужно -o .)

Тут интереснее вопрос про `capabilities' (setcap), хотя вроде не очень широко используется.

tar xvpJf

Какая гадость, когда есть -a.

anonymous
()
Ответ на: комментарий от Spoofing

а теперь похоже, придется пересобирать мир, чем разбираться с каждым бинарем какие биты у него стояли.

Так ведь в архиве, я так понимаю, все данные есть, надо только заново распаковать с нужными опциями. Или ты его уже удалил?

proud_anon ★★★★★
()
Ответ на: комментарий от anonymous

Какая гадость, когда есть -a.

Один хер надо формат указывать

LongLiveUbuntu ★★★★★
()

Либо руки не оттуда, либо tar не GNU. Ни разу не терялись права при архивации системы.

Gotf ★★★
()

Тар сохраняет права, если и запаковка и распаковка производятся от рута. Какой дистрибутив? Возможно вместо suid используются file capabilities. Например в сиде дебиана это так.

at ★★
()
Ответ на: комментарий от at

Например в сиде дебиана это так.

Да ну? У меня, правда, тестинг, но я там ничего такого не наблюдаю (на примере /bin/su).

Gotf ★★★
()
Ответ на: комментарий от Suiseiseki

Сама пошутила, сама посмеялась. Дурнушка.

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от Gotf

На /bin/su у меня тоже нет, но я не знаю какой дистр у ТС. Возможно там так сделали. Теперь получается, что восстановление из архива не всегда гарантирует работоспособность системы.

at ★★
()

на другой системе сделал:

# find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -print
/usr/lib/pppd/2.4.6/pppoatm.so
/usr/lib/pppd/2.4.6/rp-pppoe.so
/usr/lib/ssh/ssh-keysign
/usr/bin/newgidmap
/usr/bin/chfn
/usr/bin/wall
/usr/bin/write
/usr/bin/crontab
/usr/bin/traceroute
/usr/bin/newgrp
/usr/bin/su
/usr/bin/chage
/usr/bin/newuidmap
/usr/bin/expiry
/usr/bin/passwd
/usr/bin/chsh
/usr/sbin/traceroute6
/bin/ping
/bin/ping6
/bin/umount
/bin/mount

теперь знаю что нужно чинить. =)

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от LongLiveUbuntu

Опция -р не спасёт, ещё нужна опция --numeric-owner

Allakka ★★★★
()
Ответ на: комментарий от at

Я на /bin/ping проверял :)

Теперь получается, что восстановление из архива не всегда гарантирует работоспособность системы.

Оно вроде в расширенных атрибутах лежит, tar их умеет, хотя и не любой (pax вроде не умеет, bsdtar тоже, скорее всего).

Gotf ★★★
()
Ответ на: комментарий от at

Собственно, у меня из-за tar скорее всего и потерялись атрибуты. Переустановил iputils-ping, и всё стало как надо.

Gotf ★★★
()

алсо, как тогда пакетные менеджеры из архивов ставят пакеты, что аттрибуты есть?

Spoofing ★★★★★
() автор топика
Ответ на: комментарий от Spoofing
#!/bin/sh

set -e

if [ "$1" = configure ]; then
    # If we have setcap is installed, try setting cap_net_raw+ep,
    # which allows us to install our binaries without the setuid
    # bit.
    if command -v setcap > /dev/null; then
        if setcap cap_net_raw+ep /bin/ping cap_net_raw+ep /bin/ping6; then
            echo "Setcap worked! Ping(6) is not suid!"
        else
            echo "Setcap failed on /bin/ping, falling back to setuid" >&2
            chmod u+s /bin/ping /bin/ping6
        fi
    else
        echo "Setcap is not installed, falling back to setuid" >&2
        chmod u+s /bin/ping /bin/ping6
    fi
fi



exit 0

# Local variables:
# mode: shell-script
# tab-width: 4
# indent-tabs-mode: nil
# end:
Gotf ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.