В моей системе mint все файлы в /bin имеют номер 0755, кроме fusermount, mount, ping, ping6,и su, то есть 04755.
0755 — разумная маска разрешений для общего исполняемого файла. Какие исполняемые файлы имеют setuid, во многом зависит от политик безопасности вашей системы.
Попытка:
chmod -R 0755 /bin && chmod 04755 /bin/{{,fuser}mount,ping{,6},su}
(в качестве root )на данный момент мало что может навредить (установка setuid root на что угодно является потенциальной уязвимостью ).
если я скомпилирую ваш код с помощью gnu g++ в своей системе :echo $? дает мне 1. У вас такая же проблема с кодом на c, bash, python,...? Также :имейте в виду, что $? доступен только для последней команды return :$? для эха $? равно 0.
Ваша программа работает именно так, как вы ожидаете:
$ cat prog.c
int main()
{
return 1;
}
$ cc prog.c
$./a.out
$ echo $?
1
Обратите внимание, что если вы что-то сделаете в -между запуском вашей программы и выводом $?
, значение $?
будет перезаписано статусом выхода -команд, которые вы используете. Например,
$./a.out
$ echo "I ran the program"
I ran the program
$ echo $?
0
Здесь 0
— это статус выхода echo
.