5

Я не могу понять следующее поведение:
У меня есть файл с именем someFile в /opt/com/internal/someFile
Если я сделаю ls -all /opt/com/internal/someFile то у меня будет 700 прав доступа 700 user:userGroup

Я root и делаю cp /root/folder/someFile /opt/com/internal/someFile

  1. Я не получаю приглашение перезаписать. Почему бы и нет?

  2. Разрешения не изменены. Но если я делаю cp /root/folder/someFile /opt/com/internal/someFile и файл someFile не существует, он принадлежит пользователю root а не user . Зачем?

2 ответа2

10

Я не получаю приглашение перезаписать. Почему бы и нет?

Потому что ты должен знать, что ты делаешь. Особенно в качестве root, вы можете переписать почти все, так что обратите на это внимание.

Используйте параметр -i для cp чтобы получить приглашение перед перезаписью существующих файлов. Если вы всегда хотите напомнить об этом, подумайте о создании псевдонима для cp cp -i .

Разрешения не изменены. Но если файл […] someFile не существует, он принадлежит пользователю root а не user . Зачем?

Потому что файл, в который вы копируете, уже существует. Это не удалено и переписано. Это все еще принадлежит user .

Однако, проверьте опцию cp 's -p . Он сохранит атрибуты исходного файла, а именно режим, владельца и метки времени. В противном случае атрибуты режима и владельца целевого файла останутся (за исключением отметок времени, которые будут указывать на изменение).

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

2

1) cp не будет запрашивать перезапись, если не используется аргумент -i , это было поведение по умолчанию со времени первого unix

2)из википедии: перезапись файла в существующем файле выполняется путем открытия существующего файла в режиме обновления, тем самым сохраняя файл inode, что требует доступа к записи и приводит к тому, что целевой файл сохраняет права, которые он имел изначально.

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