Предоставление VirtualBox только определенным пользователям

В скрипте rhythmbox-banshee-import будет мигрировать подсчеты и рейтинги. Благодаря @xiphosurus. Тем не менее, для работы скрипта вам нужно указать, где находятся базы данных banshee и rhythmbox.

Подготовка скрипта

Найдите файлы ритм-бокса и banshee db. Расположение по умолчанию будет:

/home/YOUR_USERNAME/.local/share/rhythmbox/rhythmdb.xml
/home/YOUR_USERNAME/.config/banshee-1/banshee.db

подсчеты воспроизведения Я скажу это снова. Сделайте резервную копию.

Теперь скопируйте файл banshee.db в ту же папку, что и скрипт rhythmbox-banshee-import. Затем измените скрипт rhythmbox-banshee-import, где строка говорит:

RB_DB = 'rhythmdb.xml'

вставить файл path / to / your / rhythmboxdb.xml, например:

RB_DB = '/home/YOUR_USERNAME/.local/share/rhythmbox/rhythmdb.xml'

Now (! d10)

Устранение неполадок

Нет модуля с именем lxml Если вы получили сообщение об ошибке ... ImportError: No module named lxml ..., вам нужно установить Python Xml Parsers:
sudo apt-get install python-lxml
Permission denied Если вы получили «Permission denied», это либо потому, что у вас недостаточно прав для доступа к файлу в каталоге других пользователей, либо потому, что файл не является исполняемым. Чтобы сделать его исполняемым, запустите:
chmod +x /path/to/your/rhythmbox-banshee-import-script

Приложение

rhythmbox-banshee-import Script
#!/usr/bin/python

"""
Copyright (c) 2009 Wolfgang Steitz

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301  USA

"""

import sys
import sqlite3
from lxml import etree

RB_DB = 'rhythmdb.xml'
BA_DB = 'banshee.db'

class banshee_db():
    def __init__(self, file):
        self.con = sqlite3.connect(file)

    def get_song_info(self, url):
        try:
            res = self.con.execute('select Rating, Playcount from CoreTracks where uri = ?', (url,) ).fetchone()
            if res is None:
                return None, None
            else:
                return res
        except:
            return None, None


banshee = banshee_db(BA_DB)

tree = etree.parse(RB_DB)
root = tree.getroot()
for song in root:
    if song.get("type") == 'song':
        rating = None
        playcount = None
        for attr in song:
            if attr.tag == 'location':
                location = attr.text
            if attr.tag == 'rating':
                rating = attr.text
            if attr.tag == 'play-count':
                playcount = int(attr.text)
                song.remove(attr)

        rating_banshee, playcount_banshee = banshee.get_song_info(location)
        if rating is None:# noch kein rating in db
            if not (rating_banshee == 0 or rating_banshee is None):
                rating = rating_banshee

        if not (playcount_banshee == 0 or playcount_banshee is None):
            if playcount is None:
                playcount = playcount_banshee
            else:
                playcount += playcount_banshee

        #insert rating into rb db
        if rating is not None:
            element = etree.Element('rating')
            element.text = str(rating)
            song.append( element)
        #update playcount
        if playcount is not None:
            element = etree.Element('play-count')
            element.text = str(playcount)
            song.append( element)


tree.write(RB_DB)

1
задан 21 January 2018 в 19:28

2 ответа

В Ubuntu только суперпользователь и члены vboxusers могут использовать Vbox по умолчанию. Вы можете добавить пользователей в группу vboxusers со следующей командой:

sudo usermod -a -G vboxusers username

Это даст этому пользователю разрешение на запуск машин VirtualBox.

7
ответ дан 17 July 2018 в 22:32

В Ubuntu только суперпользователь и члены vboxusers могут использовать Vbox по умолчанию. Вы можете добавить пользователей в группу vboxusers со следующей командой:

sudo usermod -a -G vboxusers username

Это даст этому пользователю разрешение на запуск машин VirtualBox.

7
ответ дан 23 July 2018 в 23:11
  • 1
    Ницца интересовалась, как это можно сделать! – George Udosen 21 January 2018 в 19:03
  • 2
    Вероятно, это имеет значение /dev/vboxdrv, поскольку это дает доступ к модулям ядра. Этот файл доступен для групп и, вероятно, принадлежит root.vboxusers или тому подобное. – vidarlo 21 January 2018 в 19:05
  • 3
    Я попробовал sudo usermod -a -G vboxusers ram, но он не работает. От пользователей root от Ubuntu я установил ubuntu внутри виртуального бокса, но когда я выхожу из системы и авторизуюсь, чтобы запустить пользователя и попробовать открыть виртуальный бокс ... он не показывает ubunut, который устанавливается в виртуальном боксе – BSAI Techno Sales 21 January 2018 в 19:32
  • 4
    Итак, у вас есть машина, созданная и принадлежащая root, к которой должен иметь доступ пользователь ram? В этом случае это дубликат askubuntu.com/questions/455389/… – vidarlo 21 January 2018 в 19:34
  • 5
    URL-адрес, который вы мне отправили, не работает – BSAI Techno Sales 23 January 2018 в 10:35

Другие вопросы по тегам:

Похожие вопросы: