J'ai créé un simple script qui permet à sudo d'utiliser le module TouchID PAM exactement comme l'explique conorgriffin. Il le fait dans un seul script que vous pouvez copier-coller dans un terminal dans son intégralité ou utiliser le " curl
tuyau bash
Raccourci " :
curl -sL https://gist.githubusercontent.com/RichardBronosky/31660eb4b0f0ba5e673b9bc3c9148a70/raw/touchid_sudo.sh | bash
Le script complet :
#!/bin/bash
# curl -sL https://gist.githubusercontent.com/RichardBronosky/31660eb4b0f0ba5e673b9bc3c9148a70/raw/touchid_sudo.sh | bash
# This script is ready to copy-paste in whole, or just the line above (without the leading #)
# Use TouchID for sudo on modern MacBook Pro machines
# This script adds a single line to the top of the PAM configuration for sudo
# See: https://apple.stackexchange.com/q/259093/41827 for more info.
touchid_sudo(){
sudo bash -eu <<'EOF'
file=/etc/pam.d/sudo
# A backup file will be created with the pattern /etc/pam.d/.sudo.1
# (where 1 is the number of backups, so that rerunning this doesn't make you lose your original)
bak=$(dirname $file)/.$(basename $file).$(echo $(ls $(dirname $file)/{,.}$(basename $file)* | wc -l))
cp $file $bak
awk -v is_done='pam_tid' -v rule='auth sufficient pam_tid.so' '
{
# $1 is the first field
# !~ means "does not match pattern"
if($1 !~ /^#.*/){
line_number_not_counting_comments++
}
# $0 is the whole line
if(line_number_not_counting_comments==1 && $0 !~ is_done){
print rule
}
print
}' > $file < $bak
EOF
}
touchid_sudo
Ce script démontre quelques schémas sympas que j'aime enseigner aux personnes qui découvrent bash ou DevOps.
- Créez un fichier de sauvegarde qui est numéroté plutôt que simplement
.bak
à la fin. (Ça a l'air bizarre, mais ce modèle fonctionne avec tout ce qui se trouve dans la boîte à outils. $file
et est réutilisable.
- Pour que ce soit sûr de faire
curl ... | bash
pour tout regrouper dans une fonction et l'appeler sur la dernière ligne. De cette façon, si le téléchargement est interrompu, rien n'est (partiellement) fait.
- Passez un appel à
sudo bash -eu
dans votre script afin que vous n'ayez pas à dire à l'utilisateur de le faire. ( -eu
sont des abréviations de errexit et nounset et vous devriez les utiliser !)
- Citation unique bash heredoc
'EOF'
pour éviter une expansion prématurée de la coquille.
- Mise en ligne
awk
plus lisible.
2 votes
Regarde ça : github.com/mattrajca/sudo-touchid
1 votes
@pathikrit - proche mais il semble qu'un module PAM serait une bien meilleure solution qu'un sudo bifurqué. Je n'en ai pas encore vu qui ait été écrit ; je vais peut-être m'y essayer.
2 votes
Les utilisateurs de Tmux doivent configurer pam_reattach . Installer, par exemple, via
brew install pam-reattach
et ajoutez la ligneauth optional /opt/homebrew/lib/pam/pam_reattach.so
(ou/opt/homebrew/lib/...
pour les Macs Intel) avant la ligneauth sufficient pam_tid.so
. ( via )