Скрипт Perl, работающий от имени root, не может выполнять действия root

1552
David Mackintosh

Мы работаем с RedHat Enterprise ES 5 на платформе x86_64. У нас есть Perl-скрипт, который делает, среди прочего:

  • сделать каталог
  • скопировать в него точечные файлы
  • чоун весь

Целевой каталог - это автоматически смонтированный каталог, который фактически совпадает.

Если мы сделаем это как скрипт оболочки, он будет работать:

mkdir /net/host/drive/directory/new cp /some/stuff/.??* /net/host/drive/directory/new chown -R user:group /net/host/drive/directory/new 

Если мы сделаем это в Perl-скрипте, как system () или как back-ticks, мы получим «операция не разрешена».

Этот скрипт отлично работает на Solaris, откуда он и появился.

Скрипт запускается с правами root, а не с su- или setuid.

У кого-нибудь есть идеи, что происходит?

1
Можем ли мы удалить это сообщение? У нас больше нет доступа к рассматриваемой коробке, поэтому тестирование возможных решений невозможно. David Mackintosh 14 лет назад 0
@ Джон нет, я не могу, там написано "слишком много интересных ответов или ответов, которые были одобрены или приняты". David Mackintosh 13 лет назад 0

1 ответ на вопрос

3
njsf

Я остановлюсь здесь и предположу, что у вас, вероятно, есть эта файловая система, смонтированная как NFS с root-squash. Это функция безопасности, потому что в противном случае любой, имеющий физический доступ к сети и доступ для монтирования на чтение к экспортируемой файловой системе, мог бы затем, имея root-доступ на клиентском компьютере, получить доступ к любому файлу в этой файловой системе.

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

Смотрите этот пример . Обратите внимание, что значением по умолчанию для этой опции в реализации вашего сервера NFS может быть root-squash, поэтому вам следует дважды проверить эту документацию.

Хорошая догадка, но нет - она ​​экспортируется no_root_squash. Кроме того, это не объясняет, почему скрипт оболочки работает, а скрипт perl - нет. David Mackintosh 14 лет назад 0

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