Я думаю, что Ваша проблема в конечном счете из-за этих полномочий на том каталоге:
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
Я бы хотел использовать для этого приложение. Вот два способа, которые я использовал в прошлом в Fedora и CentOS, но я предполагаю, что оба эти подхода будут работать и для Arch.
- это апплет, который запускается на панели задач GNOME.
Вот сценарий 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 .
Доступно здесь . Не пробовал, но предполагается, что он работает на GNOME 2 и 3
. Хороший обзор Wallch здесь .
С помощью любого из этих подходов вы можете просто указать их в синхронизированной папке DropBox, где хранятся изображения. Я использую нечто подобное с помощью SparkleShare для синхронизации изображений обоев в разных системах.
Да, я согласен, что это на удивление сложно сделать. Я выяснил, что правильный способ сделать это - добавить файл XML в ~ / .local / share / gnome-background-properties /
. Этот XML должен содержать ссылки на все ваши обои.
Вероятно, вы можете найти файл с примером в / usr / share / gnome-background-properties
.
Я знаю, что это не совсем ответ на ваш вопрос, но это может помочь вам начать. Я получил большую часть этого из здесь