Это возможно только для двоичных файлов.
$ 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
.
-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
Вам нужно grep -q
. Если Вы не различаете больше кодов выхода, чем "0", и "другой" там не потребность разделить grep и если:
if grep -q "^${uzer}:" /etc/passwd; then
echo "User does exist :)"
else
echo "No such user"
fi
^${uzer}:
должен быть заменен двойными кавычками, иначе переменная ${uzer}
не расширен.
– Uwe
29.04.2013, 17:02
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:58number
вместо$number
в присвоении. цитата – eppesuig 29.04.2013, 16:59read
команда: это должно бытьread uzer
вместоread $uzer
. – Uwe 29.04.2013, 17:04A
, это$A
; если Вы хотите контейнер, а не что внутри (т.е. в присвоенияхA=...
иread A
)$
отсутствует. – Uwe 29.04.2013, 17:10