Почему владелец папки не может писать в папку, созданную другим пользователем

Этот сценарий должен направить вас в правильном направлении.

#!/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 \;
2
27.08.2017, 12:00
3 ответа

вы уже ответили на свой вопрос...

ls -l показывает root :root и вы написали chown -R rslsync :rslsync .

Это означает, что, по крайней мере, если ваш пользователь rslsync не входит в корневую группу, вы не можете писать в этот каталог.

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

не могли бы вы показать результат groupsот вашего пользователя?

0
27.01.2020, 21:58

Новые каталоги и файлы, созданные по умолчанию, наследуют пользователя и группу создавшего процесса. Процесс может явно установить его в какую-то другую группу (, процесс является членом )или если для каталога установлен бит setuid/setgid , владелец/группа устанавливаются в соответствии с каталогом.

Права доступа к файлам по умолчанию определяются процессом' umask . Обычные значения umask(022и027)не делают файлы и каталоги доступными для записи всем пользователям.

Поскольку владельцем и группой вашего каталога являются root:root, вы не можете писать в него. Также по вашему описанию кажется, что вы создали файл как root(с помощью sudo? )вместо пользователя liam .

Также обратите внимание, что проверки прав доступа к файлам в Linux выполняются для полного пути, начиная с текущего каталога. Если каталог в пределах пути не имеет разрешения на выполнение (+x )для пользователя/группы процесса, доступ будет запрещен.

Другим способом установки прав доступа к файлам являются списки контроля доступа POSIX, семантика которых объясняется вman 5 acl. Поддержка ACL зависит от используемой вами файловой системы, и для включения может потребоваться флаг монтирования.

4
27.01.2020, 21:58
  1. В Linux владение и разрешения для каждого файла или папки обрабатываются отдельно от всех других папок и файлов -независимо от состояния родительских каталогов. Когда вы создаете новую папку (в любом месте ), она получает право собственности на пользователя, который ее создал. Это хорошо и важно для модели безопасности Linux.

  2. Когда команда lsдает вам «root :root», значит, root создал файл/папку (или кто-то сделал chown root:root. Но видимо пользователь rslsync (или liam )не (и не должен )принадлежать к группе "root". Вот почему они не получают разрешения, указанные в поле «группа» флагов разрешений. Вместо этого они получают разрешения, указанные в поле «другие». А стандартные разрешения для этих полей вообще никакие разрешения...

1
27.01.2020, 21:58

Теги

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