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

Это то, что вы получаете в csv - если разделитель является частью поля, он получает цитаты. Это внезапно делает задачу разбора НАМНОГО труднее, потому что вы не можете просто разделить на делим.

К счастью, если perl является опцией, имеется Текст:: Модуль CSV , который обрабатывает этот случай:

#!/usr/bin/env perl
use strict;
use warnings;

use Text::CSV;

my $csv = Text::CSV -> new ( { 'sep_char' => '|' } );

while ( my $row =  $csv -> getline ( *STDIN ) ) {
   print $row -> [1],"\n";
}

Возможно, это может конденсировать к встроенной/трубопроводной если вы предпочитаете - что-то вроде:

perl -MText::CSV -e 'print map { $_ -> [1] ."\n" } @{ Text::CSV -> new ( { 'sep_char' => '|' } ) -> getline_all ( *ARGV )};

-121--55122-

Если известно, что sompefile является символьной ссылкой, можно явно указать полный путь к файлу следующим образом:

perl -pi.bak -e 's/foo/bar/' $ (somefile readlink)

Таким образом, исходная symlink остается нетронутой, поскольку замена теперь выполняется непосредственно с исходным файлом.

-121--35594-

Из perlsec :

   ...otherwise the only way to bypass the
   tainting mechanism is by referencing subpatterns from a regular
   expression match.  Perl presumes that if you reference a substring
   using $1, $2, etc., that you knew what you were doing when you wrote
   the pattern.

Таким образом, предполагая, что вам нужно получить данные из внешнего сценария и действовать на него, вы должны проверить полученные данные. Я выйду на конечность и предположу, что ваш compareDate.sh , как ожидается, вернет количество дней между данной датой и сегодняшним днем. Аналогично:

$ /bin/sh ./compareDate.sh "$date_tmp"
42

Затем его можно очистить следующим образом:

my $new  = `/bin/sh ./compareDate.sh "$date_tmp"`;    # TAINTED
if ($new =~ /^(\d+)$/) {
  $new = $1;                                          # Not tainted
} else {
  die "Unexpected output from compareDate.sh!\n";
}

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

$ /bin/sh ./compareDate.sh "$date_tmp"
42; /bin/rm -rf *;

Тогда проверка не будет выполнена. Только цифры могут пройти, и мы не ожидаем, что они доставят нам какие-либо неприятности. Очевидно, что более сложные выходные данные могут потребовать большей проверки.


Когда я написал выше, я смотрел на код в первую очередь, и там $ date _ tmp назначается литерал последовательности от кода и должен быть не ограничен. Но, как указывает jordanm, сообщение об ошибке говорит нам, что обратное выполнение вообще не происходит. Проблема заключается не в выходе оболочки, а в том, что некоторые более ранние повреждения мешают ей работать.

Единственной переменной в обратных ключах является $ date _ tmp , поэтому аналогичная проверка должна выполняться между назначением и использованием в обратных ключах.

0
19.06.2018, 07:33
2 ответа

Самый простой способ войти в систему как root с помощью sudo— это:

sudo - su

ввод пароля sudoдля входа в систему как root. (Между прочим, большинство дистрибутивов не назначают пароль root по умолчанию при установке ).

Как только вы вошли в систему как root, это так же просто, как назначить пароль для круга, выполнив:

passwd lap

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

Однако, если у вас нет доступа к учетной записи с привилегиями sudo, вы всегда можете загрузить машину в режиме одного пользователя -. Метод загрузки в однопользовательском режиме -зависит от того, какой дистрибутив вы используете в данный момент.

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

0
28.01.2020, 04:20

Только привилегированный пользователь (, в основном root ), может сделать это или в другом месте может предоставить вам разрешения на запуск вещей в качестве пользователя «lap» без пароля, используя «sudo» для определенных задач.

0
28.01.2020, 04:20

Теги

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