Как иметь пользовательский каталог для обоев GNOME

Фон

Я думаю, что Ваша проблема в конечном счете из-за этих полномочий на том каталоге:

drwxr-x--x 16 www-data root 12288 Oct 10 17:08 .

Заметьте что владелец (www-data) и группа (root) иметь rwx и r-x соответственно. Однако заметьте, что другие полномочия установлены на просто --x.

Это означает, что можно выполнить команды в этом каталоге, но Вы не можете прочитать или выполнить списки содержания этого каталога.

Ваш сценарий

Вы - некоторый другой пользователь (нет www-data), когда Вы работаете sudo управляйте в то время как в этом каталоге. Давайте позвоним этому пользователю, UserX.

Когда оболочка вызывает эту команду как UserX:

$ sudo ls *.*

и возвраты это:

ls: cannot access *.*: No such file or directory

Оболочка UserX пыталась расшириться *.* в любые файлы, но потому что UserX не может считать ни одно содержание этого каталога, он ничего не возвращает. Вы затем отправляете литерал *.* к sudo ls *.* которому не удается соответствовать любым литеральным названным файлам *.*.

Та же проблема происходит, когда Вы пытаетесь выполнить grep команда также. Снова UserX не может считать ни один из файлов и таким образом, Вы сообщаете grep искать литеральный файл, *.*, и это не находит файлов тем именем. Следовательно сообщения:

не может получить доступ.: Никакой такой файл или каталог

и

.: Никакой такой файл или каталог

Пример

Скажите, что у нас есть следующая установка, как Ваш.

$ sudo chown nginx.root /tmp/afolder
$ sudo chmod 751 /tmp/afolder/
$ sudo ls -ld /tmp/afolder/
drwxr-x--x 2 nginx root 4096 Nov 23 04:10 /tmp/afolder/
$ sudo touch /tmp/afolder/fakefile.txt

Теперь давайте станем "UserX", в моем случае это saml:

$ id
uid=500(saml) gid=501(saml) groups=501(saml)

Я могу CD в каталог:

$ pwd
/tmp/afolder

Но когда я пытаюсь перечислить файлы в этом каталоге:

$ ls *
ls: cannot access *: No such file or directory

Те же проблемы с sudo:

$ sudo ls -l *.*
ls: cannot access *.*: No such file or directory

Вызов оболочки и защита расширения * с одинарными кавычками может получить то, что Вы хотите:

$ sudo bash -c 'ls -l *.*'
-rw-r--r-- 1 root root 0 Nov 23 04:14 fakefile.txt
3
02.06.2014, 20:35
2 ответа

Я бы хотел использовать для этого приложение. Вот два способа, которые я использовал в прошлом в Fedora и CentOS, но я предполагаю, что оба эти подхода будут работать и для Arch.

Wallpapoz

- это апплет, который запускается на панели задач GNOME.

  • Вы можете загрузить RPM с здесь для различных версий Fedora / CentOS.
  • Главный сайт для этого находится здесь .
  • Основное дерево github находится здесь .

ss of wallpapoz

Сценарий оболочки

Вот сценарий bash, который циклически просматривает список изображений.

#!/bin/bash
#Default values
pictdir="$HOME/Pictures"
time=1h

#Wallpaper names
fnme=('wp1.jpg' 'wp2.jpg' 'wp3.jpg')

fin=${#fnme[@]}
let bck=$fin-1

#Exit if the script is already running, just in case
#Got this part of script somewhere in this forum
if pidof -x $(basename $0) > /dev/null; then
  for p in $(pidof -x $(basename $0)); do
    if [ $p -ne $$ ]; then
      echo "Script $0 is already running: exiting"
      exit
    fi
  done
fi

#This is where the desktop wallpaper changes
for (( i=0;i<$fin;i++ )); do
    sleep $time #wait for $time second(s)
    gconftool-2 --type string --set /desktop/gnome/background/picture_filename $pictdir/${fnme[${i}]}
    if [ $i -eq $bck ]; then
         let i=-1
    fi
done

Он использует gconftool-2 . Я еще не пробовал это в CentOS 6.x , поэтому может потребоваться некоторая настройка, но я использовал его в Fedora и CentOS 5.x . Скрипт любезно предоставлен этой веткой linuxquestions .

Wallch

Доступно здесь . Не пробовал, но предполагается, что он работает на GNOME 2 и 3 . Хороший обзор Wallch здесь .

ss wallch

Dropbox

С помощью любого из этих подходов вы можете просто указать их в синхронизированной папке DropBox, где хранятся изображения. Я использую нечто подобное с помощью SparkleShare для синхронизации изображений обоев в разных системах.

1
27.01.2020, 21:23

Да, я согласен, что это на удивление сложно сделать. Я выяснил, что правильный способ сделать это - добавить файл XML в ~ / .local / share / gnome-background-properties / . Этот XML должен содержать ссылки на все ваши обои. Вероятно, вы можете найти файл с примером в / usr / share / gnome-background-properties .

Я знаю, что это не совсем ответ на ваш вопрос, но это может помочь вам начать. Я получил большую часть этого из здесь

2
27.01.2020, 21:23

Теги

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