Могу ли я сказать, чтобы найти, чтобы не восстановить исходный рабочий каталог?

find не может «восстановить начальный рабочий каталог» при запуске за sudo -u если начальный рабочий каталог не отображается в результатах поиска пользователя. Это приводит к тому, что find всегда печатает раздражающее предупреждающее сообщение с разрешением :

 $ pwd /home/myuser $ sudo -u apache find /home/otheruser -writable find: failed to restore initial working directory: Permission denied 

Каков наилучший способ предотвратить обнаружение отпечатки этого сообщения?

Один из методов заключается в изменении каталога, который пользователь поиска может восстановить, например, cd / , перед запуском find. В идеале мне бы хотелось найти такой вариант, как --do-not-restore-initial-working-directory но я думаю, что это невозможно. 😉

В основном я использую дистрибутивы на основе RedHat.

  • использование sudo создает другой процесс
  • Отключить запрос на аутентификацию при автозаполнении команды, которая требует привилегий root
  • sudo и sssd не работают с группами пользователей
  • Я больше не могу получить доступ к учетной записи root: пользователь не находится в файле sudoers
  • sudo: пароль запрашивается, даже если NOPASSWD установлен
  • Как разрешить traceroute запускаться с правами root на ubuntu
  • Сочетание тройника и tty
  • Как sudo решает, является ли команда только исполняемой sudoers со всеми правами?
  • One Solution collect form web for “Могу ли я сказать, чтобы найти, чтобы не восстановить исходный рабочий каталог?”

    Очистка, по-видимому, является необязательной частью выполнения find .

    https://github.com/Distrotech/findutils/blob/e6ff6b550f7bfe41fb3d72d4ff67cfbb398aa8e1/find/find.c#L231

    в main в find.c

      cleanup (); return state.exit_status; } 

    cleanup вызовов cleanup_initial_cwd

    https://github.com/Distrotech/findutils/blob/e6ff6b550f7bfe41fb3d72d4ff67cfbb398aa8e1/find/util.c#L534

    и cleanup_initial_cwd фактически изменяет каталог

    https://github.com/Distrotech/findutils/blob/e6ff6b550f7bfe41fb3d72d4ff67cfbb398aa8e1/find/util.c#L456

     static void cleanup_initial_cwd (void) { if (0 == restore_cwd (initial_wd)) { free_cwd (initial_wd); free (initial_wd); initial_wd = NULL; } else { /* since we may already be in atexit, die with _exit(). */ error (0, errno, _("failed to restore initial working directory")); _exit (EXIT_FAILURE); } } 

    Вы могли бы попробовать использовать сценарий оболочки, который cd s в / сначала, как вы предложили. (есть некоторые проблемы с этим скриптом, он не может обрабатывать несколько каталогов для поиска, например)

     #!/bin/sh path="$(pwd)/$1" shift cd / exec find "$path" "$@" 

    Вы также можете отфильтровать вывод stderr для удаления нежелательного сообщения

     #!/bin/sh exec 3>&2 exec 2>&1 exec 1>&3 exec 3>&- 3>&2 2>&1 1>&3 3>&- find "$@" | grep -v "^find: failed to restore initial working directory" # not sure how to recover find's exit status exit 0 
    Interesting Posts

    Как изменить дату и время последней модификации, независимо от часового пояса и летнего времени?

    Msgstr "Не удалось подключиться к серверу: нет такого файла или каталога"

    «Ловушка … INT TERM EXIT» действительно нужна?

    Проблемы с размером шрифта с Emacs в режиме linum

    Ограничение доступа к yahoo.com в elinks с использованием кальмаров

    Копирование порядка в алфавит в сценарий оболочки

    Почему тесты bash настолько разборчивы по поводу пробелов?

    Отключение xscreensaver, когда firefox воспроизводит видео HTM5

    Как узнать, написан ли сценарий оболочки в bash или sh

    KUbuntu 10.04 / Диспетчер файлов Dolphin: есть ли способ сделать файлы .desktop отображать имя файла так же, как NAME = в метаданных?

    Удалить уровень каталога с URL-адреса веб-сайта

    На сайте Ubuntu 12.04 особо не работает сайт

    Точка доступа Debian обнаружена, но не обеспечивает доступа в Интернет

    Как я могу поделиться своим WiFi-соединением через Bluetooth?

    Запуск и остановка нескольких исполняемых файлов для легкой отладки

    Linux и Unix - лучшая ОС в мире.