1
tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors

Мои файлы находятся в папке «Загрузки», и я запускаю установочный файл из папки «Загрузки» в папку /opt /pkg, и вот команды, которые я использовал

chmod -R 777 Downloads/*
sudo chmod -R 777 /opt/*
chmod +x petalinux-v2017.1-final-installer.run 
./petalinux-v2017.1-final-installer.run /opt/pkg

в конце установщик терпит неудачу, давая вышеупомянутые сообщения об ошибках. И я предоставляю все разрешения, необходимые для папки загрузок, а также для папки /opt/pkg .

2 ответа2

2

Вопрос: Разрешения не могут быть восстановлены для tar

Ответ: только рут может.

Ссылка: прочитайте этот информативный Q & A на askubuntu:

даже если вы используете флаг tar --same-owner , вам все равно придется извлечь файлы как root, чтобы сохранить право собственности.

Обновление: вот еще несколько подробностей о поведении tar . Допустим, мы user1 и создали архив с помощью tar cvpzf test.tar.gz . это включает в себя файлы, принадлежащие user2 . Если мы извлечем архив в каталог, принадлежащий user2 с разрешениями 777 , вот результат:

$ tar xpvzf test.tar.gz
./
./file1
./file2
tar: .: Cannot utime: Operation not permitted
tar: .: Cannot change mode to rwxrwxr-x: Operation not permitted
tar: Exiting with failure status due to previous errors

$ ls -al
drwxrwxrwx 2 user2 user2 .
-rw-rw-r-- 1 user1 user1 file1
-rw-rw-r-- 1 user1 user1 file2

tar выдает ошибку, потому что не может изменить владельца и разрешения для файлов, принадлежащих user2 . Однако файлы извлекаются, хотя и принадлежат пользователю user1 .

Вот что происходит, если извлечение выполняется в каталоге, принадлежащем user1 :

$ tar xpvzf test.tar.gz
./
./file1
./file2

$ ls -al
drwxrwxr-x 2 user1 user1 .
-rw-rw-r-- 1 user1 user1 file1
-rw-rw-r-- 1 user1 user1 file2

Разрешения восстанавливаются как для папки, так и для файлов, и не выдается никакой ошибки, даже если владение user2 не может быть восстановлено.

Судя по собственному ответу OP, кажется, что установщик проверяет код завершения tar и останавливается, если обнаружена ошибка. chown папки для текущего пользователя tar работать автоматически, поэтому программа установки может продолжить работу.

1

chmod -R 777 Downloads/* sudo chmod -R 777 /opt/* mkdir /opt/pkg cd /home/my_ubuntu/Downloads chmod +x petalinux-v2017.1-final-installer.run ./petalinux-v2017.1-final-installer.run /opt/pkg

Теперь он будет установлен, и права доступа к файлу tar будут восстановлены, когда вы создадите каталог pkg как обычный пользователь, а не как пользователь root.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .