LINUX.ORG.RU

tar и права при распаковке

 , , , ,


0

2

Случайно заметил следующее

dell nk-mint # ls -l .fluxbox* -d
drwxr-xr-x 3 nk nk 4096 апр.  24 20:25 .fluxbox
drwxr-xr-x 3 nk nk 4096 сент.  3 23:25 .fluxbox_
dell nk-mint # tar Jcfv /tmp/test.tar.xz
dell nk-mint # mkdir /tmp/test
dell nk-mint # tar -xvf /tmp/test.tar.xz -p -C /tmp/test/
dell nk-mint # ls -ld /tmp/test/.fluxbox*
drwxr-xr-x 3 nk   nk   280 апр.  24 20:25 /tmp/test/.fluxbox
drwxr-xr-x 2 root root  60 сент.  3 23:29 /tmp/test/.fluxbox_

Можно конечно распаковывать и запаковывать под пользователем, но вроде как и насколько я знаю tar умеет сохранять права, но тут такая ситуация почему-то и именно когда от рута распаковываю. Смотрел еще здесь https://help.ubuntu.com/community/BackupYourSystem/TAR

tar -xvpzf /path/to/backup.tar.gz -C /media/whatever --numeric-owner
так же получил где-то рута, где-то от юзера http://tau.rghost.ru/7HXv57XMS/image.png

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

Схема проверки такая: бэкаплю tar под рутом систему и под пользователем конкретные каталоги и файлы в хом, гружусь в ливсиди и там когда расТАРил систему переключаюсь на хом и от рута архив хома распаковываю, зная что тар помнит мои права, но почему-то как оказывается он их заменяет (что ли).

★★★★★

Последнее исправление: NK (всего исправлений: 4)

Не наблюдал такого поведения у tar'а, возможно, у вас что-то не так с tar'ом. Посмотрите содержимое архива ″tar -tvf /tmp/test.tar.xz″.

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

наблюдаю такое аж в 2 дистрах, mint-17.2 и slackware-14.1

содержимое архива

dell nk-mint # tar -tvf /tmp/test.tar.xz 
drwxr-xr-x nk/nk             0 2015-04-24 20:25 .fluxbox/
-rw-r--r-- nk/nk          1741 2015-03-21 16:59 .fluxbox/menuconfig
-rw-r--r-- nk/nk          3011 2015-04-23 17:55 .fluxbox/init
-rw-r--r-- nk/nk            12 2015-04-25 11:25 .fluxbox/slitlist
-rw-r--r-- nk/nk           184 2015-04-24 20:25 .fluxbox/lastwallpaper
-rw-r--r-- nk/nk          8371 2015-04-22 07:15 .fluxbox/keys
-rw-r--r-- nk/nk          3005 2015-04-23 19:15 .fluxbox/apps
-rw-r--r-- nk/nk          5724 2015-04-23 19:12 .fluxbox/menu
-rw-r--r-- nk/nk            89 2015-03-20 19:24 .fluxbox/overlay
-rw-r--r-- nk/nk           985 2015-04-17 08:05 .fluxbox/windowmenu
-rw-r--r-- nk/nk           856 2015-04-22 23:05 .fluxbox/startup
drwxr-xr-x nk/nk             0 2015-09-03 23:28 .fluxbox/styles/
-rw-r--r-- nk/nk            38 2015-04-08 22:34 .fluxbox/fbrun_history
-rw-r--r-- nk/nk          3005 2015-04-23 19:15 .fluxbox_/apps
NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)

23:25 .fluxbox_

23:29 /tmp/test/.fluxbox_

четвёртая цифра намекает, что что-то ещё происходит позади текущего окна.

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

обнови tar до 1.28 и IMHO проблема уйдет. В слаке tar-1.26 - у него гарантированные проблемы при распаковке с "-C ..." и с распаковкой инкрементальных архивов.

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

Это весь вывод или вы часть обрезали? Есть запись для каталога ″.flubox″, но нет записи для ″.fluxbox_″.

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

не-не, это я пример привел, если не весь каталог бэкапить, а только часть содержимого в данном случае .fluxbox_/apps

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

В слаке tar-1.26

да, именно такой: tar-1.26-i486-1

обнови tar до 1.28

ну вот сейчас в виртуалке у меня manjaro смотрю

[nk@vbox Desktop]$ pacman -Q tar
tar 1.28-1
[nk@vbox ~]$ cp -a .local .local_
[nk@vbox ~]$ ls -ld .local*
drwxr-xr-x 3 nk users 4096 14.12.2014 13:55 .local/
drwxr-xr-x 3 nk users 4096 14.12.2014 13:55 .local_/
[nk@vbox ~]$ tar Jcfv /tmp/test-m.tar.xz .local .local_/share/psi+/
[nk@vbox ~]$ mkdir /tmp/test-m
[nk@vbox ~]$ sudo su
[sudo] пароль для nk: 
[root@vbox nk]# tar -xvf /tmp/test-m.tar.xz -p -C /tmp/test-m
[root@vbox nk]# ls -l /tmp/test-m -a
итого 0
drwxr-xr-x  4 nk   users  80 04.09.2015 12:06 ./
drwxrwxrwt 10 root root  300 04.09.2015 12:03 ../
drwxr-xr-x  3 nk   users  60 14.12.2014 13:55 .local/
drwxr-xr-x  3 root root   60 04.09.2015 12:06 .local_/

и как видно проблема присутствует, в то время как везде user , как владелец, ну и его группа

[root@vbox nk]# tar -tvf /tmp/test-m.tar.xz 
drwxr-xr-x nk/users          0 2014-12-14 13:55 .local/
drwx------ nk/users          0 2015-09-04 11:57 .local/share/
drwx------ nk/users          0 2015-09-04 11:58 .local/share/gvfs-metadata/
-rw-r--r-- nk/users      32768 2015-09-04 11:58 .local/share/gvfs-metadata/home-f4322b16.log
-rw------- nk/users         56 2015-09-04 11:58 .local/share/gvfs-metadata/home
drwxr-xr-x nk/users          0 2015-01-07 04:53 .local/share/qpdfview/
drwxr-xr-x nk/users          0 2015-01-07 04:53 .local/share/qpdfview/qpdfview/
-rw-r--r-- nk/users       5120 2015-01-07 04:53 .local/share/qpdfview/qpdfview/database
drwx------ nk/users          0 2014-12-14 11:21 .local/share/keyrings/
drwxr-xr-x nk/users          0 2015-05-09 09:24 .local/share/psi+/
drwxr-xr-x nk/users          0 2015-05-09 09:24 .local/share/psi+/profiles/
drwxr-xr-x nk/users          0 2015-05-09 09:25 .local/share/psi+/profiles/default/
drwxr-xr-x nk/users          0 2015-05-09 09:24 .local/share/psi+/profiles/default/history/
drwxr-xr-x nk/users          0 2015-05-09 09:25 .local/share/psi+/profiles/default/pictures/
-rw------- nk/users        860 2015-06-16 00:56 .local/share/recently-used.xbel
drwx------ nk/users          0 2015-09-04 11:57 .local/share/Trash/
drwx------ nk/users          0 2015-09-04 11:57 .local/share/Trash/files/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/qpdfview/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/qpdfview/qpdfview/
-rw-r--r-- nk/users       5120 2015-01-07 04:53 .local/share/Trash/files/.local (1-я копия)/share/qpdfview/qpdfview/database
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/keyrings/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/psi+/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/psi+/profiles/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/psi+/profiles/default/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/psi+/profiles/default/history/
drwxr-xr-x nk/users          0 2015-09-04 11:57 .local/share/Trash/files/.local (1-я копия)/share/psi+/profiles/default/pictures/
-rw------- nk/users        860 2015-06-16 00:56 .local/share/Trash/files/.local (1-я копия)/share/recently-used.xbel
drwx------ nk/users          0 2015-09-04 11:57 .local/share/Trash/info/
-rw-r--r-- nk/users        117 2015-09-04 11:57 .local/share/Trash/info/.local (1-я копия).trashinfo
drwxr-xr-x nk/users          0 2015-05-09 09:24 .local_/share/psi+/
drwxr-xr-x nk/users          0 2015-05-09 09:24 .local_/share/psi+/profiles/
drwxr-xr-x nk/users          0 2015-05-09 09:25 .local_/share/psi+/profiles/default/
drwxr-xr-x nk/users          0 2015-05-09 09:24 .local_/share/psi+/profiles/default/history/
drwxr-xr-x nk/users          0 2015-05-09 09:25 .local_/share/psi+/profiles/default/pictures/

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от vel

cd /tmp/test-m && tar -xvf /tmp/test-m.tar.xz -p

неа, аналогично. /tmp/test-m удалил и сделал, как Вы писали:

[nk@vbox ~]$ mkdir /tmp/test-m
[nk@vbox ~]$ sudo su -
[sudo] пароль для nk: 
[root@vbox ~]# cd /tmp/test-m && tar -xvf /tmp/test-m.tar.xz -p
[root@vbox test-m]# ls -l /tmp/test-m -a
итого 0
drwxr-xr-x  4 nk   users  80 04.09.2015 12:32 ./
drwxrwxrwt 10 root root  300 04.09.2015 12:32 ../
drwxr-xr-x  3 nk   users  60 14.12.2014 13:55 .local/
drwxr-xr-x  3 root root   60 04.09.2015 12:32 .local_/
[root@vbox test-m]# ls -l /tmp/test-m/.local_/
итого 0
drwxr-xr-x 3 root root 60 04.09.2015 12:32 share/
[root@vbox test-m]# ls -l /tmp/test-m/.local_/share/
итого 0
drwxr-xr-x 3 nk users 60 09.05.2015 09:24 psi+/
т.е. права сохранились только на .local_/share/psi+/ , а все что выше тут уже под кем будем распаковывать, то и будет. Это нормальное поведение или что-то не так делаю?

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Ответ на: комментарий от DonkeyHot

что-то ещё происходит

да, вижу

drwxr-xr-x 3 nk nk 4096 сент.  3 23:25 .fluxbox_
drwxr-xr-x 2 root root  60 сент.  3 23:29 /tmp/test/.fluxbox_
в то время как, до и после распаковки всего каталога
drwxr-xr-x 3 nk nk 4096 апр.  24 20:25 .fluxbox
drwxr-xr-x 3 nk   nk   280 апр.  24 20:25 /tmp/test/.fluxbox

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

У ТС'а, похоже, не баг, а фича. Когда в tar создаётся архив с указанием файлов с путями, типа

tar -c -f test.tar DIR0 DIR1/DIR2/file1 DIR3/file2

то в архив не попадают атрибуты каталогов DIR1, DIR2, DIR3, а DIR0 попадают, потому что явно указано, что DIR0 нужно в архив.

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

tar-1.28

lve@hdd:~$ pwd
/home/lve
lve@hdd:~$ ls -alR
.:
total 28
drwxr-xr-x 4 lve  lve  4096 сент.  4 16:58 ./
drwxr-xr-x 6 root root 4096 сент.  4 16:52 ../
drwxr-xr-x 2 lve  lve  4096 сент.  4 16:52 dir1/
drwxr-xr-x 2 lve  lve  4096 сент.  4 16:52 dir2/

./dir1:
total 12
drwxr-xr-x 2 lve lve 4096 сент.  4 16:52 ./
drwxr-xr-x 4 lve lve 4096 сент.  4 16:58 ../
-rw-r--r-- 1 lve lve    3 сент.  4 16:52 aa

./dir2:
total 12
drwxr-xr-x 2 lve lve 4096 сент.  4 16:52 ./
drwxr-xr-x 4 lve lve 4096 сент.  4 16:58 ../
-rw-r--r-- 1 lve lve    3 сент.  4 16:52 bb
...
root@hdd:/home/lve# tar cf /tmp/zzz.tar ./dir1 ./dir2
root@hdd:/home/lve# mkdir /tmp/zzztest
root@hdd:/home/lve# tar -C /tmp/zzztest -xf /tmp/zzz.tar
root@hdd:/home/lve# ls -alR /tmp/zzztest/

/tmp/zzztest/:
total 24
drwxr-xr-x  4 root root  4096 сент.  4 17:01 ./
drwxrwxrwt 62 root root 12288 сент.  4 17:00 ../
drwxr-xr-x  2 lve lve 4096 сент.  4 16:52 dir1/
drwxr-xr-x  2 lve lve 4096 сент.  4 16:52 dir2/

/tmp/zzztest/dir1:
total 12
-rw-r--r-- 1 lve lve 3 сент.  4 16:52 aa

/tmp/zzztest/dir2:
total 12
-rw-r--r-- 1 lve lve 3 сент.  4 16:52 bb
IMHO нет роблемы.

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

root@hdd:/home/lve# tar cf /tmp/zzz.tar ./dir1 ./dir2

сделай(те) # tar cf /tmp/zzz.tar ./dir1 ./dir2/bb

и посмотри права на ./dir2 и./dir2/bb

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

mky правильно сказал - путь создается от владельца да еще с текущей umask

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

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

У меня аналогично.

Я обычно tar'ил каталоги целиком, каждый в отдельный архив, чтобы было легче чистить бекапы. А потом использовал ″--exclude-tag-all= ″, отмечая ненужные для бекапа каталоги. Поэтому не сразу понял, про какой способ создания архива вы пишите.

Вам, наверное, нужно давать tar'у сформированный список файлов и их родительских катлогов и указывать ″--no-recursion″.

mky ★★★★★
()

При создании архива не используешь

-p
аргумент, а только при распаковке.

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

При создании архива не используешь -p

так я так и делал, логи выше:

# tar Jcfv /tmp/test.tar.xz

аргумент, а только при распаковке.

# tar -xvf /tmp/test.tar.xz -p -C /tmp/test/

NK ★★★★★
() автор топика
Последнее исправление: NK (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.