Я хочу обезопасить свой каталог Dropbox от непреднамеренных изменений. Поэтому я сделал для своего каталога и файлов следующие действия:
chown -R dropbox:dropbox Dropbox
Идея состоит в том, что я работаю под обычным пользователем, назовем его USER. И я запускаю dropbox от имени пользователя dropbox:
sudo -u dropbox dropbox start
Но есть ошибка, и я не знаю, как с ней справиться:
Unable to access the X Display, is $DISPLAY set properly?
Как правильно создать нового пользователя? таким образом, чтобы достичь этой цели? В настоящее время единственные файлы конфигурации в каталоге /home/dropbox
находятся в каталоге /etc/skel/
.
ОБНОВЛЕНИЕ По предложению Элии Кагана:
Я не могу запустить Dropbox с gksu, когда я пытаюсь сделать это, я получаю это:
gksu -u dropbox dropbox start -i
gksu: option requires an argument -- 'i'
Под выпадающим пользователем:
dropbox start -i
Starting Dropbox...No protocol specified
No protocol specified
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
/usr/bin/dropbox:406: Warning: invalid (NULL) pointer instance
title = "Dropbox Installation")
/usr/bin/dropbox:406: Warning: g_signal_connect_data: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
title = "Dropbox Installation")
/usr/bin/dropbox:414: GtkWarning: IA__gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
self.ok = ok = gtk.Button(stock=gtk.STOCK_OK)
/usr/bin/dropbox:414: Warning: g_object_get: assertion `G_IS_OBJECT (object)' failed
self.ok = ok = gtk.Button(stock=gtk.STOCK_OK)
/usr/bin/dropbox:414: Warning: value "TRUE" of type `gboolean' is invalid or out of range for property `visible' of type `gboolean'
self.ok = ok = gtk.Button(stock=gtk.STOCK_OK)
/usr/bin/dropbox:419: GtkWarning: IA__gtk_settings_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
/usr/bin/dropbox:419: Warning: g_object_get: assertion `G_IS_OBJECT (object)' failed
cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
/usr/bin/dropbox:419: Warning: value "TRUE" of type `gboolean' is invalid or out of range for property `visible' of type `gboolean'
cancel = gtk.Button(stock=gtk.STOCK_CANCEL)
/usr/bin/dropbox:486: GtkWarning: Screen for GtkWindow not set; you must always set
a screen for a GtkWindow before using the window
dialog.show()
/usr/bin/dropbox:486: GtkWarning: IA__gdk_pango_context_get_for_screen: assertion `GDK_IS_SCREEN (screen)' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_context_set_font_description: assertion `context != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_context_set_base_dir: assertion `context != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_context_set_language: assertion `context != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_new: assertion `context != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_set_text: assertion `layout != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_set_attributes: assertion `layout != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_set_alignment: assertion `layout != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_set_ellipsize: assertion `PANGO_IS_LAYOUT (layout)' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_set_single_paragraph_mode: assertion `PANGO_IS_LAYOUT (layout)' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_set_width: assertion `layout != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_get_extents: assertion `layout != NULL' failed
dialog.show()
/usr/bin/dropbox:486: PangoWarning: pango_layout_set_wrap: assertion `PANGO_IS_LAYOUT (layout)' failed
dialog.show()
/usr/bin/dropbox:486: GtkWarning: IA__gdk_screen_get_default_colormap: assertion `GDK_IS_SCREEN (screen)' failed
dialog.show()
/usr/bin/dropbox:486: GtkWarning: IA__gdk_colormap_get_visual: assertion `GDK_IS_COLORMAP (colormap)' failed
dialog.show()
/usr/bin/dropbox:486: GtkWarning: IA__gdk_screen_get_root_window: assertion `GDK_IS_SCREEN (screen)' failed
dialog.show()
/usr/bin/dropbox:486: GtkWarning: IA__gdk_window_new: assertion `GDK_IS_WINDOW (parent)' failed
dialog.show()
Segmentation fault
Эти ошибки говорят о том, что что-то не так с конфигурацией графической среды пользователя.
Используемому клиенту Dropbox требуется доступ к сеансу X, которого нет у вашего пользователя. Существует официальный CLI Dropbox , который может помочь вам, но пробег может отличаться.
Как сказал Брайан Эйджи, dropbox
является графической программой, поэтому вам не следует использовать sudo
напрямую для запуска его от имени root.
Тем не менее, у вас не должно возникнуть проблем с графическим запуском программ другим пользователем, при условии, что вы делаете это правильно:
gksu -u dropbox dropbox start
Для ясности, это должно работать , где sudo -u ...
нет. (Предотвращение создания root
-собственных или, в данном случае, dropbox
-собственных) файлов конфигурации в вашей домашней директории не единственное отличие между gksu
/ gksudo
и sudo
; первый также правильно обрабатывает .Xauthority
, что, вероятно, мешает вам «получить доступ к X Display».)