использование здесь сценария перенаправление ввода-вывода с командой su

Это - ширина Вашего текущего окна терминала, измеряемого как количество символов ASCII.

От man bash :

   COLUMNS
          Used  by  the  select  builtin command to determine the terminal
          width when printing selection  lists.   Automatically  set  upon
          receipt of a SIGWINCH.

Также в более универсальном ksh :

          COLUMNS
                 If this variable is set, the value is used to define  the
                 width of the edit window for the shell edit modes and for
                 printing select lists.

Для практической части заметьте, что значение этой переменной изменяется, когда размеры Вашего окна виртуального терминала изменяются. (Это - когда вышеупомянутое упомянуло SIGWINCH отправляется в активную оболочку).

2
14.02.2012, 21:31
3 ответа

Существует несколько проблем с Вашим кодом.

  1. su читает пароль из /dev/tty, не от stdin, таким образом, Вы не можете перенаправить пароль как это. На самом деле, что su делает по умолчанию запуск оболочка как целевой пользователь, поэтому если Вы выполняете это как root:

    su - testuser <<- _EOF_
    123456 #password
    _EOF_
    

    su успешно выполнится (корню не нужен пароль, чтобы сделать это), но 123456 будет передан как вход оболочке пользователя, которая является, почему, когда Вы запускаете свой скрипт, Вы видите:

    -bash: line 1: 123456: command not found
    

    Если Вы хотите сделать это как некорневой пользователь, необходимо, вероятно, последовать совету и использованию bahamt sudo, который может быть настроен для предложения доступа без паролей к определенным командам как другой пользователь.

  2. Даже если su работы, это порождает новый процесс. su команда вышла (и возвратилась к исходной учетной записи), перед ls команда выполняется. Таким образом, то, что Вы действительно хотите:

    su - testuser <<EOF
    ls -lih
    EOF
    
6
27.01.2020, 21:51
  • 1
    Вы могли использовать что-то как script (утилита назвала сценарий, не пишут сценарий), для переноса su, но это - взлом. Действительно ужасный взлом. Согласитесь с Хорошим sudo –  Patrick 15.02.2012, 02:01

Я думаю, что Вы найдете, что не можете зафиксировать его. Я думаю это su чтения /dev/tty для пароля, и я полагаю, что Вы не можете действительно перенаправить к тому волшебному файлу устройств.

При использовании Linux можно проверить что su чтения для пароля с strace.

1
27.01.2020, 21:51

То, что Вы на самом деле хотите использовать, sudo.

Вы могли бы хотеть запуститься здесь.

1
27.01.2020, 21:51

Теги

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