Не мог запустить сессию гнома без корня?

Вот как я недавно сделал это, и я вполне доволен этим подходом сейчас. Это для Ubuntu 12.04 + Gentoo, но я думаю, что любой дистрибутив, который позволяет работать UDEV и Autofs.

Предварительные условия: Вы должны установить UDEV + Autofs.

Шаг 1)

Создайте следующие файлы «/etc/udev/rules.d/90-usbd-auto.rules.d/90-usbd-auto.rules) (конечно, вы можете использовать любое имя, если он заканчивается с помощью« .Rules ») Отказ :

# Add symlink /dev/usbdisks/<label> to /dev/sd[a-z][1-9] 
# for automounter support

ACTION=="add", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660", \
    RUN+="/bin/rm /media/usb/%k", \
    RUN+="/bin/ln -sf /media/autousb/%k /media/usb/%k"

# Some FileSystems emit a "change" event when they are unmounted.
# UDEV seems to delete the device symlink in this case :-(
# So we need to re-create it here
ACTION=="change", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    SYMLINK+="usbdisks/%k", MODE:="0660"


# When device is removed, also remove /media/usb/<...>
ACTION=="remove", KERNEL=="sd*", ENV{DEVTYPE}=="partition", \
    ENV{ID_BUS}=="usb", \
    RUN+="/bin/rm /media/usb/%k"

Что это делает: он создает две симлизы, один для раздела устройства хранения USB под «/ dev / usbdisks / <...>».

Вторая SymLink будет связывать из «/ Media / USB / <...» / Media / Autousb / <...> «Это сделано для поддержки Automounter (см. Шаг 2).

Чтобы убедиться, что UDEV читает эти правила Использование

sudo udevadm control --reload-rules

Примечание: одно имя для того же USB-накопителя: возможна, но может быть, опасно: вы можете использовать, например, «$ env {id_fs_label_enc}», а не "% k" в вышеупомянутом УДЕВ Правил. Это будет использовать метку тома для создания / носителя / USB / <...>, но что произойдет, если вы подключаете два USB-палочках, и оба используете один и тот же метку громкости ...

с помощью этого файла правил UDEV. Все установлено Автоматическое изменение раздела устройства хранения USB. Обратите внимание, что сейчас устройство не будет автоматически (намеренно). Он будет автоматически, как только вы используете его с

Шаг 2)

Установка Autofs для Automount / Media / AutousB / <...>: Я добавил следующую строку в мой файл «/etc/auto.master» (для Ubuntu 12.04):

/media/autousb /etc/auto.usb --timeout=60

Это означает, что autofs будет размонтировать устройство через 60 секунд бездействия. Возможно, вы захотите использовать меньше или больше, зависит от вашего вкуса.

Для Gentoo вы должны изменить «/etc/autofs/auto.master», поэтому имеет смысл использовать

/media/autousb /etc/autofs/auto.usb --timeout=60

теперь я создал «auto.usb» со следующим контентом:

#!/bin/bash

key=${1}
fstype=$(/sbin/blkid -o value -s TYPE /dev/usbdisks/${key})
if [ "${fstype}" = "vfat" ] ; then
  echo "-fstype=vfat,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ntfs" ] ; then
  echo "-fstype=fuse.ntfs-3g,sync,uid=0,gid=plugdev,umask=007 :/dev/usbdisks/${key}"
  exit 0
fi
if [ "${fstype}" = "ext4" ] ; then
  echo "-fstype=ext4,sync,nocheck :/dev/usbdisks/${key}"
  exit 0
fi

exit 1

Это auto.usb необходимо Быть исполняемым, чтобы автозапись использует это как (Bash) сценарий. Таким образом, например

sudo chmod 0755 /etc/auto.usb

Что это делает: этот сценарий будет сообщить AutoFS (/ usr / sbin / automount), как установить раздел USB-накопителя.

Скрипт будет первым использовать «/ sbin / Blkid», чтобы узнать, какая файловая система находится на разделах.

Затем скрипт предоставит правильные варианты монтажа в зависимости от раздела устройства.

Примечание. Я включил пример код для «VFAT» (вероятно, наиболее распространенным для USB-палочек), файловых систем «NTFS» и «Ext4». Конечно, довольно легко расширить это, чтобы поддержать больше файловых систем.

Шаг 3)

Необязательно ... Чтобы «изгнать» == Размонтируйте вашу USB-накопитель (или разделы на вашу USB-накопитель), создайте скрипт / SBIN / USBEJECT:

#!/bin/bash
# make sure everything is written to USB disk(s)
sync
# sending SIUGSR1 to automount will unmount the media
killall -s SIGUSR1 /usr/sbin/automount

С помощью этого скрипта вы можете использовать «sudo Usbeject», чтобы размонтировать все установленное устройство USB. разделы (рассказывая автоусчет, чтобы размонтировать их).

Конечно, вы можете просто убедиться, что раздел не используется нигде не используется; Тогда Automounter будет размонтировать раздел после 60-секундной тайм-аута ...

Реальный хитрость здесь - использовать SymLinks от «/ Media / USB» на «/ Media / Autousb»:

  • «/ Media / USB» SymLinks будет создан UDEV, предоставляя пользователю простой обзор, какие разделы устройства для хранения USB будут там
  • autofs, будут автоматическими разбиениями по требованию, если вы используете его через / Media / USB
  • с помощью сценариев «auto.usb «Файл, который вы можете поддержать любую файловую систему и дополнительно вы также можете поддерживать любой вид схемы именования.
  • Этот подход поддерживает USB-палочки с несколькими разделами, даже если эти разделы используют разные типы файловых систем.
-121--40483-
  • R позволяет листизировать - только имена.
  • w Удаление и добавление.
  • T Предотвращает удаление - если у вас его нет.
  • x Позволяет навигацию - указание файла или каталога: чтение метаданных, чтение метаданных необходимо иметь возможность получить доступ, добавить или удалить файл в каталоге.

Если вы не можете навигаться, то вы не можете удалить, добавить или что-то еще.

0
04.11.2014, 07:34
1 ответ

Убедитесь, что у вас есть файл .xinitric . В домашнем каталоге пользователя. Кажется, у вас есть .xinitrc в корневом каталоге, а не домашний каталог пользователей. Чтобы проверить этот прогон LS -LA в домашнем каталоге пользователя. Если вы видите файл .xinitrc .

1
28.01.2020, 02:51

Теги

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