login: Reimplementation of Login Infrastructure Tools in Rust
Description of the project: Create Rust versions of login infrastructure tools, with a focus on full option compatibility and passing GNU tests. This project involves the Rust-based reimplementation of essential login infrastructure tools that provide functionality for logins and changing effective user or group IDs. The objective is to implement these tools as drop-in replacements for the original shadow-utils suite, ensuring full compatibility with all options and passing all relevant tests. To improve your chances to be selected, please contribute a few changes to the project to demonstrate your commitment and understanding of the project.
Confirmed Mentor: Sylvestre Ledru
How to contact the mentor: sylvestre@debian.org
Confirmed co-mentors: Daniel Hofstetter <daniel.hofstetter@42dh.com>
Difficulty level: Large
Project size: 350 hours
Deliverables of the project: Robust login infrastructure tools, including:
- /bin/login - the program that invokes a user shell on a virtual terminal
- /usr/bin/faillog - tool for displaying and maintaining failure records
- /usr/bin/lastlog - examine the last login record
- /usr/bin/newgrp - change to a new group
- /usr/sbin/nologin - a dummy shell for disabled user accounts
- /usr/bin/sg - execute command with different group ID
Desirable skills: Rust expertise, knowledge of Linux authentication systems, user/group management, and security considerations.
What the intern will learn: How login infrastructure works, system security concepts, authentication mechanisms, and privilege management.
Application tasks: Implement or improve one of the login tools from the shadow-utils project: https://github.com/shadow-maint/shadow
