Этот сценарий должен направить вас в правильном направлении.
#!/bin/bash
read -p "Enter number of days back to begin count > " days
echo "Calculated date is "
date -d 'now - '"$days"' days'
find /creation/directory/filename -daystart -mtime +"$days" -exec mv "{}" /destination/directory \;
вы уже ответили на свой вопрос...
ls -l показывает root :root и вы написали chown -R rslsync :rslsync .
Это означает, что, по крайней мере, если ваш пользователь rslsync не входит в корневую группу, вы не можете писать в этот каталог.
Я не понимаю, почему ваш пользователь liam
создает папки как root:root
, но это другая проблема.
не могли бы вы показать результат groups
от вашего пользователя?
Новые каталоги и файлы, созданные по умолчанию, наследуют пользователя и группу создавшего процесса. Процесс может явно установить его в какую-то другую группу (, процесс является членом )или если для каталога установлен бит setuid/setgid , владелец/группа устанавливаются в соответствии с каталогом.
Права доступа к файлам по умолчанию определяются процессом' umask . Обычные значения umask(022
и027
)не делают файлы и каталоги доступными для записи всем пользователям.
Поскольку владельцем и группой вашего каталога являются root:root
, вы не можете писать в него. Также по вашему описанию кажется, что вы создали файл как root(с помощью sudo? )вместо пользователя liam .
Также обратите внимание, что проверки прав доступа к файлам в Linux выполняются для полного пути, начиная с текущего каталога. Если каталог в пределах пути не имеет разрешения на выполнение (+x )для пользователя/группы процесса, доступ будет запрещен.
Другим способом установки прав доступа к файлам являются списки контроля доступа POSIX, семантика которых объясняется вman 5 acl
. Поддержка ACL зависит от используемой вами файловой системы, и для включения может потребоваться флаг монтирования.
В Linux владение и разрешения для каждого файла или папки обрабатываются отдельно от всех других папок и файлов -независимо от состояния родительских каталогов. Когда вы создаете новую папку (в любом месте ), она получает право собственности на пользователя, который ее создал. Это хорошо и важно для модели безопасности Linux.
Когда команда ls
дает вам «root :root», значит, root создал файл/папку (или кто-то сделал chown root:root
. Но видимо пользователь rslsync (или liam )не (и не должен )принадлежать к группе "root". Вот почему они не получают разрешения, указанные в поле «группа» флагов разрешений. Вместо этого они получают разрешения, указанные в поле «другие». А стандартные разрешения для этих полей вообще никакие разрешения...