разрешение 'CP', отклоненное, когда копируют файл, принадлежит 'корню'

Существует версия жемчуга scriptreplay это находится в общественном достоянии, обеспеченном Joey Hess: scriptreplay.

Можно адаптироваться, это для добавления запускает/заканчивает функции (автор поместил ту реализацию в общественное достояние).

Вот быстрая и грязная модификация того кода, который берет два дополнительных параметра - время начала (в секундах от запуска, значение по умолчанию 0), и время окончания (дополнительный, выполнения до конца если не указанный). Адаптируйтесь для удовлетворения потребностям:

#!/usr/bin/perl -w
use strict;
$|=1;
open (TIMING, shift)
        or die "cannot read timing info: $!";
open (TYPESCRIPT, shift || 'typescript')
        or die "cannot read typescript: $!";
my $divisor=shift || 1;
my $start_sec=shift || 0;
my $end_sec=shift;
# Read starting timestamp line and ignore.
;
my $printing = ($start_sec > 0 ? 0 : 1);
my $elapsed = 0;
my $block;
my $oldblock='';
while () {
        my ($delay, $blocksize)=split ' ', $_, 2;
        if ($printing && ($delay / $divisor > 0.0001)) {
                select(undef, undef, undef, $delay / $divisor - 0.0001);
        }
        read(TYPESCRIPT, $block, $blocksize) or die "read failure: $!";
        print $oldblock if ($printing);

        $elapsed += $delay;
        exit if ((defined $end_sec) && ($elapsed > $end_sec));
        $printing = ($elapsed > $start_sec);

        $oldblock=$block;
}
print $oldblock;

6
06.06.2013, 15:37
4 ответа

Ну,

Это было бы то, потому что способ, которым установлены Ваши текущие полномочия, никто не может переместить тот файл. (Кроме корня, потому что корень не следует тем же правилам.)

Вы должны были бы или изменить владельца файла (показанного) ИЛИ добавить другого пользователя к группе 'корень' и chmod это так, группа может выполниться на каталоге ИЛИ позволить всем остальным выполнять файл.

Так, быстрое исправление было бы:

chmod -R o+rwx udp_folder2

Это даст всем способность читать, записать и выполниться на том каталоге.

Также..., при попытке скопировать 'udp_folder2' в тот же каталог, что он расположен теперь, Вам будет нужно 'w' разрешение на том каталоге также. Например:

/foo/udp_folder2 - Вам будет нужен 'w' на / нечто для копирования того каталога в / нечто

Я предложил бы изучить полномочия файла Linux: Учебное руководство по Разрешению Файла Linux

10
27.01.2020, 20:20
  • 1
    я думаю копия, справедлив r разрешение, очевидно, существует r разрешение для другого пользователя, Вы видите, существует a r –  user138126 27.04.2013, 02:13
  • 2
    я имею в виду в d------r-T , r для другого пользователя –  user138126 27.04.2013, 02:19
  • 3
    , Вы также должны выполнить разрешение скопировать каталог. Я не уверен что T пренебрежительно. –  Swiss 27.04.2013, 02:31
  • 4
    Вам будет нужен 'w' на каталоге, в который Вы пытаетесь скопировать..., например, при копировании/home/foo в/etc/foo, Вам будет нужно 'w' разрешение в/etc/ –  Tillman32 27.04.2013, 02:33
  • 5
    @Swiss - 'T' является липким битом, который является 'специальным' разрешением. Узнайте все о липких битах здесь: en.wikipedia.org/wiki/Sticky_bit –  Tillman32 27.04.2013, 02:48

Каталог имеет нет x разрешение, таким образом, другие (т.е. в этом случае любой пользователь) могут использовать каталог для достижения файлов внутри. T средства это липко (только владелец файла может удалить его). С обоими x разрешение и липкий бит, Вы видели бы нижний регистр t; верхний регистр T не говорит “права доступа, но липкого бита, который является нечетной комбинацией”.

Читайте на полномочиях файла/каталога Unix. Это не слишком твердо, и Вам будет нужен он.

8
27.01.2020, 20:20

Вы не хотите давать всем rwx на каталоге, потому что Вы создали бы угрозу безопасности. И Вы не хотели бы -R chmod, потому что это записало бы изменения рекурсивно.

Просто chmod 755 "filename" и Вы хороши.

Вот повреждение вниз чисел:

  • Читайте = 4
  • Запишите = 2
  • Выполнитесь = 1

Затем у Вас есть 3 группы:

  • Владелец.
  • Те, кто принадлежит Группе.
  • Все остальные.

Так, если Вы хотите дать владельцу rwx, те, кто принадлежит группе rw, и все остальные rw Вы просто добавляете полномочия: rwx = 7, потому что r+w+x 4+2+1 и rw = 6, потому что r+w = 4+2.

3
27.01.2020, 20:20
  • 1
    Следовательно мой термин 'Так, Быстрое исправление было бы' и я отправляю ему ссылку для получения дополнительной информации о полномочиях. Он не упоминал беспокойство о безопасности или чем-либо вида. Он просто заявил, что хочет скопировать каталог. –  Tillman32 27.04.2013, 02:37
  • 2
    Кроме того, мы, ему будет нужно 'w' разрешение на каталоге, в который он пытается скопировать его. –  Tillman32 27.04.2013, 02:43
  • 3
    не является ненавистником Tillman. –  pullsumo 27.04.2013, 03:23

Чтобы скопировать папку, у владельца которой нет разрешения, нужно изменить эти разрешения.

Если папка ограничена даже для владельца, то для этого есть какая-то причина, и выдача разрешений для всех остальных (o) - не лучшее решение (как показано в первом ответе).

Для того чтобы папка была доступна владельцу, она должна иметь набор для чтения (r) и выполнения/поиска битов (X). Если внутри папок есть папки, то каждая из них должна следовать одним и тем же правилам. Для файлов достаточно только битов чтения (r).

Таким образом, для рекурсивного предоставления прав на чтение папки необходимо запустить:

chmod -vR u+rX folder/

Если вы выполняете команду выше как пользователь, префикс с sudo (если у вас есть привилегии суперпользователя), в противном случае запустите от имени root.

Если некоторые файлы в папке не принадлежат root, измените их рекурсивно на:

sudo chown -vR root folder/

Затем скопируйте их как обычно или используйте rsync следующим образом:

rsync -vuar src/ dst/

Для получения более подробной информации о вышеприведенных командах, проверьте: man chmod и man chown.

0
27.01.2020, 20:20

Теги

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