Skip to Content
Mac OS X Tiger in a Nutshell
book

Mac OS X Tiger in a Nutshell

by Andy Lester, Chris Stone, Chuck Toporek, Jason McIntosh
November 2005
Beginner to intermediate
528 pages
24h 11m
English
O'Reilly Media, Inc.
Content preview from Mac OS X Tiger in a Nutshell

Working with Passwords

One traditional route to user and password information was through the getpw* family of functions. However, those functions are not ideal for working with systems that support multiple directories (flat files, NetInfo, LDAP, etc.). Also, in the interest of thwarting dictionary attacks against password files , many operating systems have stopped returning encrypted passwords through those APIs. Many Unix and Linux systems simply return an "x" when you invoke a function like getpwnam(). However, those systems can return an encrypted password through functions like getspnam(), which consult shadow password entries and can generally be invoked by the root user only. Example 10-1 shows the typical usage of such an API, where the user enters her plaintext password, and the program encrypts it and then compares it against the encrypted password stored in the system.

Example 10-1. Using getpwnam() to retrieve an encrypted password
/* * getpw* no longer returns a crypted password. * * Compile with gcc checkpass.c -o checkpass * Run with: ./checkpass */ #include <pwd.h> #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { const char *user = NULL; struct passwd *pwd; /* Set the user name if it was supplied on the command * line. Bail out if we don't end up with a user name. */ if (argc == 2) user = argv[1]; if(!user) { fprintf(stderr, "Usage: checkpass <username>\n"); exit(1); } /* Fetch the password entry. */ if (pwd = getpwnam(user)) { char *password ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

Mac OS X Panther in a Nutshell, 2nd Edition

Mac OS X Panther in a Nutshell, 2nd Edition

Chuck Toporek, Chris Stone, Jason McIntosh

Publisher Resources

ISBN: 0596009437Errata