Запись файлов в среду chroot - PullRequest
       4

Запись файлов в среду chroot

0 голосов
/ 02 февраля 2011

Я пытаюсь записать данные в файлы в среде chroot. Поскольку я не являюсь пользователем root, я могу общаться с chroot только с помощью команды schroot.

В настоящее время я использую следующий трюк для записи данных.

$ schroot -c chroot_session -r -d /tmp -- bash -c "echo \"$text\" > file.txt"

Но я уверен, что это принесет мне много горя, если в тексте есть какие-то специальные символы, кавычки и т. Д. Итак, как лучше отправить $ text в chroot. Скорее всего, я буду использовать вышеупомянутую команду через скрипт Python. Есть ли более простой способ?

Ответы [ 2 ]

1 голос
/ 02 февраля 2011

Вроде хак, но…

c = ConfigParser.RawConfigParser()
c.readfp(open(os.path.join('/var/lib/schroot/session', chroot_session), 'r'))
chroot_basedir = c.get(chroot_session, 'mount-location')
with open(os.path.join(chroot_basedir, '/tmp/file.txt'), 'w') as fp:
    fp.write(text)

Хорошо, поэтому привилегии не позволяют вам войти любым другим способом, кроме schroot, да?

p = subprocess.Popen(['schroot', '-c', name, '-r', 'tee', '/tmp/file.txt'],
                     stdin=subprocess.PIPE,
                     stdout=open('/dev/null', 'w'),
                     stderr=sys.stderr)
p.stdin.write(text)
p.stdin.close()
rc = p.wait()
assert rc == 0
0 голосов
/ 02 февраля 2011

вы можете использовать python для записи $ text в файл (python имеет право на запись),
затем скопируйте этот файл в файл file.txt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...