$ sudo ack-grep -a 'MyString' /
Я использовал для этого системные контейнеры (чтобы они могли запускаться автоматически при загрузке), но с маппируемыми UID/GIDs (пространства имен пользователей).
редактируйте /etc/subuid,subgid (я отобразил uid/gids 10M-100M в корне и использовал 100K на контейнер)
$ sudo ack-grep -aG '.*txt' MyString
для первого контейнера, используйте u/gids 10000000-10099999 в /var/lib/lxc/CTNAME/config
смонтируйте контейнерное хранилище на /var/lib/lxc/CTNAME/rootfs (или ничего не делайте, если не используете отдельный том/набор данных/что бы ни было на контейнер)
$ ack-grep --cpp 'SomeFunctionName'
chown 10000000: 10000000 /var/lib/lxc/CTNAME/rootfs
lxc-usernsexec -m b:0:10000000:100000 -- /bin/bash
Теперь вы в первом пользовательском пространстве имен контейнеров. Все то же самое, но ваш процесс считает, что uid равен 0, в то время как на самом деле в пространстве имён хоста это uid 10000000. Проверьте /proc/self/uid_map, чтобы узнать, отображен ваш uid или нет. Вы заметите, что больше не можете читать из /root и кажется, что он никому не принадлежит/nogroup.
Находясь в пространстве имён пользователей, Я rsync с оригинального хоста.
Вне пространства имен пользователей вы увидите, что файлы в /var/lib/lxc/CTNAME/rootfs теперь принадлежат не ожидаемым (таким же) uids, как в исходной установке, а скорее 10000000+remote_uid. Это то, что вам нужно.
Вот и все. Когда вы синхронизируете данные, удалите все из /etc/fstab контейнера, чтобы он не пытался монтировать вещи, и он должен запуститься. Могут быть и другие изменения, проверьте, что делает LXC-шаблон для контейнерного дистрибутива. Вы определённо можете удалить ядро, grub, ntp и любые аппаратные пакеты в контейнере (вам даже не нужно запускать его, вы можете chroot в контейнер из пользовательского пространства имен)Если у вас нет запущенной удалённой ВМ, вы также можете смонтировать оригинальное хранилище ВМ в пространстве имён хоста и rsync/SSH обратно в localhost. Эффект будет тот же самый. Если вы (как кажется) просто хотите изменить контейнер с привилегиями на непривилегированный, вы можете просто добавить отображение uid/gid, добавить отображение, как описано выше, в конфигурацию контейнера, а затем сделать что-нибудь вроде:
Это должно быть все, что нужно сделать, теперь вы должны быть в состоянии запустить контейнер без привилегий. Приведенный выше пример крайне неэффективен, uidshift, вероятно, сделает это лучше (но я его еще не использовал).
HTH.[1178541]
Пункт 1)
Запустите Okular без файла и выберите из меню, (для отображения меню вам понадобится Ctrl+M), Настройки->Настройка Okular
, затем выберите Аннотация
-
, затем выберите Замечание в режиме онлайн
и нажмите Редактирование
:
Введите изменения и Применяйте
- они должны стать вашими настройками по умолчанию. N.B. Вы можете добавить собственные стили аннотации кнопкой Add
.
Point 2) Насколько я знаю, нет.
Point 3) Чтобы переместить аннотацию, удерживайте нажатой клавишу Ctrl, наведите на нее курсор мыши, а затем начните перетаскивать левой кнопкой мыши.
В заголовке вопроса Вы можете сохранить свои аннотации для просмотра другими пользователями - для этого используйте Файл->Сохранить как
или Файл->Экспорт->Архив документов
, в противном случае Ваши аннотации будут закрытыми
Любые другие вопросы - Выполните пункт okular, затем нажмите F1 для получения руководства.