Почему в Linux пользователи могут менять свой пароль командой passwd, если у них нет прав на запись файла /etc/shadow?
читайте про специальные права доступа SUID и SGID, которые позволяют запускать программы от имени других пользователей. Такой флаг стоит у нескольких программ, из популярных - passwd, sudo

$ ls -sl1sFa /usr/bin/sudo /usr/bin/passwd
 60 -rwsr-xr-x 1 root root  59640 Mar 22  2019 /usr/bin/passwd*
148 -rwsr-xr-x 1 root root 149080 Jan 31 17:18 /usr/bin/sudo*

буква "s" в первой тройке означает, что стоит SUID аттрибут, следовательно программа будет запущена от имени владельца файла (root).

P.S. Со скриптами такое не работает, только с бинарниками, поскольку скрипты неявно вызывают интерпретатор отдельно.
Потому что не пользователи пишут в этот файл.