удар - читающий пользовательскую переменную в сценарий удара grep

Это возможно только для двоичных файлов.

$ chown foo:foo bar
$ chmod 701 bar

Как непривилегированный пользователь:

$ ls -lha bar
-rwx-----x 1 foo foo 7.0K 2012-03-15 03:06 bar

$ cat bar
cat: bar: Permission denied

$ ./bar
baz

Теперь, вот строка над заголовком. В то время как файл нечитабелен стандартными средствами, Вы не можете на самом деле предотвратить чтение файла. Это - на самом деле проблема на http://smashthestack.org/ (уровень 13). Существует известная названная утилита hktrace это позволяет Вам читать использование файла ptrace.

0
29.04.2013, 16:35
2 ответа

-c средство, что Вы хотите знать количество раз этот пользователь, находится в /etc/passwd, в то время как $? код выхода. Это - differents, так как количество раз печатается на stdout. Использовать $() для получения stdout в переменную

Вторая проблема: все Ваши переменные, как $uzer не будет заменен с их значениями когда в одинарных кавычках. Используйте двойные кавычки.

number=$(grep -c "^${uzer}:" /etc/passwd)
if [ $number -gt 0 ]; then
  echo "User does exist :)"
else
  echo "No such user"
fi
3
28.01.2020, 02:17
  • 1
    Спасибо за Ваш ответ! Однако я получаю следующую ошибку: Enter user to check: devuser1 ./userexist.sh: line 8: =0: command not found ./userexist.sh: line 10: [: -eq: unary operator expected No such user –  maGz 29.04.2013, 16:58
  • 2
    извините, не может сделать новых строк в комментариях! право –  maGz 29.04.2013, 16:59
  • 3
    . Я уже исправил свой ответ. Используйте number вместо $number в присвоении. цитата –  eppesuig 29.04.2013, 16:59
  • 4
    там является ошибкой в read команда: это должно быть read uzer вместо read $uzer. –  Uwe 29.04.2013, 17:04
  • 5
    и удар различают переменную и ее текущее значение. Если Вы хотите текущее значение переменной A, это $A; если Вы хотите контейнер, а не что внутри (т.е. в присвоениях A=... и read A) $ отсутствует. –  Uwe 29.04.2013, 17:10

Вам нужно grep -q. Если Вы не различаете больше кодов выхода, чем "0", и "другой" там не потребность разделить grep и если:

if grep -q "^${uzer}:" /etc/passwd; then
  echo "User does exist :)"
else
  echo "No such user"
fi
2
28.01.2020, 02:17
  • 1
    Одинарные кавычки вокруг ^${uzer}: должен быть заменен двойными кавычками, иначе переменная ${uzer} не расширен. –  Uwe 29.04.2013, 17:02
  • 2
    @Uwe, Как смущающий. Я просто скопировал код и смотрел на другую проблему только... –  Hauke Laging 29.04.2013, 17:05
  • 3
    Привет Hauke. Спасибо так или иначе за Ваш ответ. Ответ от eppesuig выше обработанного как очарование. Я сделал что-то подобное этому прежде, и ошибка, которую я получил, была, "... слишком много аргументов..." оболочка Bourne –  maGz 29.04.2013, 17:08

Теги

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