Какая-то дичь произошла с моей системой:
~ $ sudo layman -l
usage: layman [-h] [--indent INDENT] [-v] FILE1 FILE2
layman: error: the following arguments are required: FILE1, FILE2
~ $ sudo emerge -av layman
usage: emerge [-h] [--indent INDENT] [-v] FILE1 FILE2
emerge: error: argument FILE1: can't open 'layman': [Errno 2] No such file or directory: 'layman'
~ $ sudo layman -h
usage: layman [-h] [--indent INDENT] [-v] FILE1 FILE2
Diff two JSON files
positional arguments:
FILE1
FILE2
optional arguments:
-h, --help show this help message and exit
--indent INDENT Indent output by n spaces
-v, --version show program's version number and exit
Что вообще произошло и как это можно вылечить? Я даже пакеты одноимённые не ставил, откуда такая напасть?
Сергей Клюйков wrote:
Какая-то дичь произошла с моей системой:
[…]
Что вообще произошло и как это можно вылечить? Я даже пакеты одноимённые не ставил, откуда такая напасть?
Для полноты печальности картины:
~ $ sudo ebuild /usr/portage/app-portage/layman/layman-2.4.2.ebuild merge
usage: ebuild [-h] [--indent INDENT] [-v] FILE1 FILE2
ebuild: error: argument FILE2: can't open 'merge': [Errno 2] No such file or directory: 'merge'
~ $ ls -la /usr/bin/layman
lrwxrwxrwx 1 root root 31 фев 16 01:52 /usr/bin/layman -> ../lib/python-exec/python-exec2
~ $ ls -la /usr/bin/emerge
lrwxrwxrwx 1 root root 31 май 2 09:35 /usr/bin/emerge -> ../lib/python-exec/python-exec2
Это что-то новенькое.
Итог расследования:
Кто-то пакетом или скриптом или фиг знает чем подменяет /usr/lib/python-exec/python-exec2
и вставляет какую-то ерунду.
Починить можно:
sudo /usr/lib/python-exec/python2.7/emerge -av python-exec
Так проявилась какая-то очень неоднозначная уязвимость.
Кто-то пакетом или скриптом или фиг знает чем подменяет /usr/lib/python-exec/python-exec2 и вставляет какую-то ерунду.
а не подскажете, что за “ерунда” вместо python-exec2
-а была?
ну и чтоб понять это пакет какой-то поставил, или злобный хакер:
/bin/grep -E '/usr/\S*/python-exec2' /var/db/pkg/*/*/CONTENTS
и вообще, какой-либо бэкап поломавшейся системы вы, случайно, не сделали для дальнейших разбирательств?
У меня тоже подменилось, только у меня генту и систему я уже давненько не обновлял. При попытке запуска утулит emerge, equery и т.п. вызывается youtube-dl.
/bin/grep -E ‘/usr/\S*/python-exec2’ /var/db/pkg/*/*/CONTENTS
/var/db/pkg/dev-lang/python-exec-2.4.4/CONTENTS:obj /usr/lib/python-exec/python-exec2 7157717ea4b74eedcebcf2d33869972a 1486315446
/var/db/pkg/dev-lang/python-exec-2.4.4/CONTENTS:obj /usr/bin/python-exec2c ae4bcabc3190d5f962d35c6c03f069b1 1486315446
Владислав Хороший wrote:
У меня тоже подменилось, только у меня генту и систему я уже давненько не обновлял. При попытке запуска утулит emerge, equery и т.п. вызывается youtube-dl.
/bin/grep -E ‘/usr/S*/python-exec2’ /var/db/pkg/*/*/CONTENTS
/var/db/pkg/dev-lang/python-exec-2.4.4/CONTENTS:obj /usr/lib/python-exec/python-exec2 7157717ea4b74eedcebcf2d33869972a 1486315446
/var/db/pkg/dev-lang/python-exec-2.4.4/CONTENTS:obj /usr/bin/python-exec2c ae4bcabc3190d5f962d35c6c03f069b1 1486315446
Нее, у меня подменилось на какой-то просмотрщик файлов с сравнением. Тоже странно конечно.
Эпопея продолжается, но это уже в другой ветке. Я не обновлялся, кстати, всего неделю.
Михаил Гагауз wrote:
Кто-то пакетом или скриптом или фиг знает чем подменяет /usr/lib/python-exec/python-exec2 и вставляет какую-то ерунду.
а не подскажете, что за “ерунда” вместо python-exec2
-а была?
ну и чтоб понять это пакет какой-то поставил, или злобный хакер:
/bin/grep -E '/usr/S*/python-exec2' /var/db/pkg/*/*/CONTENTS
и вообще, какой-либо бэкап поломавшейся системы вы, случайно, не сделали для дальнейших разбирательств?
А вот знаете, подскажу:
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
from __future__ import print_function
import sys
import os.path
import json
import jsonpatch
import argparse
parser = argparse.ArgumentParser(description='Diff two JSON files')
parser.add_argument('FILE1', type=argparse.FileType('r'))
parser.add_argument('FILE2', type=argparse.FileType('r'))
parser.add_argument('--indent', type=int, default=None,
help='Indent output by n spaces')
parser.add_argument('-v', '--version', action='version',
version='%(prog)s ' + jsonpatch.__version__)
def main():
try:
diff_files()
except KeyboardInterrupt:
sys.exit(1)
def diff_files():
""" Diffs two JSON files and prints a patch """
args = parser.parse_args()
doc1 = json.load(args.FILE1)
doc2 = json.load(args.FILE2)
patch = jsonpatch.make_patch(doc1, doc2)
if patch.patch:
print(json.dumps(patch.patch, indent=args.indent))
sys.exit(1)
if __name__ == "__main__":
main()
Случился рецидив. Вот как отследить, что за пакет портит всё?
После последнего обновления:
$ sudo pip2 install -r requirements.txt
ERROR: (Gentoo) Please run pip with the --user option to avoid breaking python-exec
Gentoo - молодцы!
mavriq
June 9, 2017, 6:15pm
10
<code>$ sudo pip2 install -r requirements.txt
...
</code>
а вот и причину, кажется, нашли.
из-под root
а выполнять pip install ...
мягко говоря… неправильно
советую вам посмотреть в сторону dev-python/virtualenv
и/или dev-python/virtualenvwrapper
и кастомные пакеты ставить из-под пользователя с урезанными привилегиями (кстати, для разработки - самое то)
Михаил Гагауз wrote:
[…]
а вот и причину, кажется, нашли.
из-под root
а выполнять pip install ...
мягко говоря… неправильно
советую вам посмотреть в сторону dev-python/virtualenv
и/или dev-python/virtualenvwrapper
и кастомные пакеты ставить из-под пользователя с урезанными привилегиями (кстати, для разработки - самое то)
Вообще для разработки так и используем;)
Это набор пакетов для системы: ansible и openstack клиентские пакеты. Так что от рута им самое оно.
Вообще это системные утилиты бы в virtualenv какой-нибудь отправлять… Было бы безопаснее.