35

У меня есть скрипт резервного копирования, который загружает файлы scp на другой сервер, используя upload пользователя. Затем другой скрипт на целевом сервере передает их другому пользователю и устанавливает режим файла на 755 .

Если я затем использую SSH на целевом сервере, используя пользователя для upload , я могу удалить файлы, которые были прерваны. Разве они не должны быть только для чтения?

Вот как выглядит файл на целевом сервере, и пользователь, upload файл, может удалить его.

-rwxr-xr-x 1 maciekish maciekish 650M Nov  1 01:07 2014-11-01-data.tar.bz2

Пользовательская upload была только что добавлена с помощью useradd и не является частью группы maciekish .

При попытке удалить файл при upload через ssh у меня возникает вопрос, хочу ли я удалить «обычный файл, защищенный от записи», и могу сказать « Y и удалить его.

2 ответа2

64

Файлы только для чтения; однако удаление файла не изменяет его, а только родительский каталог (он в основном удаляет файл из списка каталогов) - и похоже, что у вас есть полные права на запись в каталог.

Вы можете установить sticky бит-ака «ограничено удаление» флаг , который будет препятствовать никому , кроме владельца от переименования или удаления файлов в этом каталоге (например , в /tmp Для этого запустите chmod o+t *directory* от имени владельца каталога.

12

В типичной файловой системе Unix любой файл может быть идентифицирован произвольным количеством записей каталога, каждая из которых содержит "жесткую ссылку".

С точки зрения реализации существует разница между удалением последней записи каталога (жесткой ссылки) для файла и простым удалением одной ссылки из многих. Однако с семантической точки зрения нет никакой разницы.

Если существует несколько жестких ссылок на файл, запись в файл с использованием любой из них изменяет файл, который видят все они. Однако использование rm для ссылки просто делает файл недоступным по этой ссылке. Другие ссылки на файл продолжают видеть тот же файл.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .