What Is the Purpose of chmod 777?
chmod 777 sets Unix file permissions to read/write/execute for owner, group, and others, granting full access to everyone; useful for quick sharing but insecure for production. !!!
Understanding chmod 777 Purpose and Usage
File permissions stand as one of the fundamental pillars of system security in Unix-based operating systems. Every day, system administrators, developers, and users interact with these permissions, often without fully understanding the implications of their choices. The chmod 777 command represents one of the most controversial and frequently misunderstood permission settings in the Linux and Unix ecosystem, capable of both solving immediate access problems and creating significant security vulnerabilities.
At its core, chmod 777 is a command that grants unrestricted read, write, and execute permissions to all users on a system for a specific file or directory. This setting removes all access barriers, allowing the file owner, group members, and all other users complete control over the targeted resource. While this approach offers maximum accessibility and can quickly resolve permission-related errors, it simultaneously opens potential security holes that malicious actors can exploit.
Throughout this comprehensive exploration, you'll discover the technical mechanics behind chmod 777, understand when this permission setting might be legitimately necessary, learn about the substantial risks it introduces, and explore safer alternatives that balance accessibility with security. Whether you're troubleshooting a web application, managing a development environment, or simply trying to understand Linux file permissions better, this guide will equip you with the knowledge to make informed decisions about file permission management.
Understanding the Numeric Permission System
The chmod command operates on a numeric permission system that uses three digits to represent access rights for three different user categories. Each digit in the chmod 777 command corresponds to a specific user group and carries a mathematical value that determines the level of access granted. The first digit controls permissions for the file owner, the second digit manages permissions for the group that owns the file, and the third digit governs permissions for all other users on the system.
Each permission type carries a specific numeric value: read permission equals 4, write permission equals 2, and execute permission equals 1. These values are additive, meaning that to grant multiple permissions, you simply add their corresponding numbers together. When you see the number 7 in a permission setting, it represents the sum of 4+2+1, granting all three permission types simultaneously. This mathematical approach provides a compact and efficient way to specify complex permission combinations with just three digits.
| Numeric Value | Permission Type | Symbolic Representation | Meaning |
|---|---|---|---|
| 4 | Read (r) | r-- | View file contents or list directory contents |
| 2 | Write (w) | -w- | Modify file contents or add/remove files in directory |
| 1 | Execute (x) | --x | Run file as program or access directory |
| 7 | All (rwx) | rwx | Complete access: read, write, and execute |
| 6 | Read + Write (rw-) | rw- | View and modify, but not execute |
| 5 | Read + Execute (r-x) | r-x | View and execute, but not modify |
| 0 | No permissions (---) | --- | No access whatsoever |
The beauty of this numeric system lies in its precision and brevity. Instead of typing lengthy symbolic commands like chmod u=rwx,g=rwx,o=rwx filename, administrators can simply use chmod 777 filename to achieve the same result. This efficiency becomes particularly valuable when managing permissions across multiple files or when writing scripts that automate system administration tasks. However, this convenience should never overshadow the security implications of the permissions being granted.
"Setting permissions to 777 is essentially leaving your front door wide open with a sign saying 'come on in' to everyone who walks by, whether they're friends, strangers, or people with malicious intent."
Breaking Down the 777 Permission Structure
Each position in the three-digit permission code carries specific significance and controls access for a distinct category of users. Understanding this structure is essential for grasping both the power and the danger of chmod 777. The leftmost digit (the first 7) determines what the file owner can do, the middle digit (the second 7) controls what members of the file's group can do, and the rightmost digit (the third 7) dictates what everyone else on the system can do.
When examining chmod 777 specifically, we see that all three user categories receive identical permissionsโfull read, write, and execute access. This uniformity creates a permission-less environment where traditional Unix security boundaries dissolve completely. The file owner has no special privileges over their own file compared to any random user who happens to have access to the system. This democratic approach to file access contradicts the fundamental security principle of least privilege, which states that users should only have the minimum permissions necessary to perform their tasks.
๐ Owner Permissions (First Digit: 7)
The file owner represents the user account that created the file or was assigned ownership through the chown command. In a chmod 777 setting, the owner receives full rwx permissions, allowing them to read the file's contents, modify or delete the file, and execute it as a program if applicable. These permissions are standard and expected for file owners, as they need complete control over their own resources. The problematic aspect isn't the owner's permissions but rather that these same permissions extend to everyone else.
๐ฅ Group Permissions (Second Digit: 7)
The group designation allows multiple users to share access to files without granting system-wide permissions. In typical scenarios, group permissions might be set to 5 (read and execute) or 6 (read and write), providing collaborative access while maintaining some security boundaries. With chmod 777, the group receives full rwx permissions, which might seem reasonable if all group members need collaborative access. However, this setting becomes concerning when combined with the world permissions, as it represents a step toward universal access.
๐ World Permissions (Third Digit: 7)
The world category encompasses every user account on the system who isn't the owner and isn't part of the designated group. This includes service accounts, other human users, and potentially compromised accounts that attackers might control. Granting rwx permissions to this category means that literally anyone with any level of system access can read, modify, and execute the file. This third 7 transforms a potentially reasonable permission set into a security liability, creating opportunities for unauthorized data access, file tampering, and malicious code execution.
"The difference between chmod 770 and chmod 777 might seem like a single digit, but in security terms, it's the difference between a locked door and no door at all."
Legitimate Use Cases for Maximum Permissions
Despite the security concerns surrounding chmod 777, specific scenarios exist where this permission level serves a legitimate purpose, particularly in controlled environments where security risks are minimal or where the benefits outweigh the potential dangers. Understanding these use cases helps differentiate between appropriate and inappropriate applications of maximum permissions. However, even in these scenarios, security-conscious administrators often explore alternative approaches before resorting to 777 permissions.
๐ Temporary Troubleshooting and Diagnosis
During development or when diagnosing permission-related issues, temporarily setting permissions to 777 can quickly determine whether access restrictions are causing a problem. This diagnostic approach helps isolate permission issues from other potential causes like network problems, code bugs, or configuration errors. Once the root cause is identified, permissions should immediately be adjusted to more restrictive settings. This temporary use represents one of the few scenarios where chmod 777 is professionally acceptable, provided it's used as a diagnostic tool rather than a permanent solution.
๐ง Shared Development Directories
In local development environments where multiple developers work on the same machine or within containerized environments isolated from production systems, chmod 777 might be applied to shared directories to prevent permission conflicts. Development containers, virtual machines, and local testing environments often prioritize convenience over security since they don't contain sensitive data and aren't exposed to external threats. However, even in these contexts, better alternatives exist, such as proper group management or access control lists that provide shared access without completely eliminating permission boundaries.
๐พ Publicly Writable Cache and Upload Directories
Web applications sometimes require directories where the web server process can write files, such as cache directories, temporary upload folders, or session storage locations. When the web server runs under a different user account than the application owner, permission conflicts can arise. While chmod 777 resolves these conflicts by granting universal write access, it also creates security vulnerabilities. Attackers who exploit other vulnerabilities in the application could write malicious files to these directories, potentially leading to code execution or data breaches.
| Use Case | Appropriateness of 777 | Better Alternative | Risk Level |
|---|---|---|---|
| Production web server files | Never appropriate | 644 for files, 755 for directories | Critical |
| Database configuration files | Never appropriate | 600 or 640 with proper group | Critical |
| Temporary diagnostic testing | Acceptable briefly | Proper group permissions | Medium (time-limited) |
| Local development container | Acceptable with caveats | User namespace mapping | Low (isolated environment) |
| Shared upload directory | Risky but common | 773 with sticky bit or ACLs | High |
| System binaries and libraries | Never appropriate | 755 maximum, often 555 | Critical |
Security Risks and Vulnerabilities
The security implications of chmod 777 extend far beyond simple unauthorized access, creating multiple attack vectors that malicious actors can exploit to compromise system integrity, steal sensitive data, or establish persistent access to compromised systems. These risks multiply in production environments where systems face constant probing from automated attack tools and human adversaries. Understanding these vulnerabilities helps illustrate why security professionals consistently advise against using maximum permissions except in the most controlled circumstances.
โ ๏ธ Unauthorized File Modification
When any user can write to a file, the integrity of that file can no longer be guaranteed. Attackers who gain even limited access to a system can modify configuration files, inject malicious code into scripts, or alter data files to corrupt application behavior. In web applications, this might mean injecting backdoors into PHP, Python, or JavaScript files that execute with the privileges of the web server. For system files, unauthorized modification could lead to privilege escalation, where attackers gain administrative access by manipulating files that run with elevated privileges.
"Every file with 777 permissions is a potential entry point for attackers, a vulnerability waiting to be exploited, and a security incident waiting to happen."
๐ญ Code Injection and Execution
Execute permissions granted to all users create opportunities for attackers to run malicious code on the system. If a directory has 777 permissions, attackers can upload executable files and run them directly, bypassing many security controls. Combined with write permissions, this allows attackers to place their own scripts or binaries in accessible locations and execute them to establish reverse shells, install rootkits, or launch further attacks against other systems on the network. This attack vector becomes particularly dangerous when applied to web-accessible directories or system PATH locations.
๐ Information Disclosure
Read permissions granted to all users expose potentially sensitive information to anyone with system access. Configuration files might contain database passwords, API keys, or encryption secrets. Log files might reveal system architecture, user behavior patterns, or security vulnerabilities. Source code might contain proprietary algorithms, hardcoded credentials, or comments that reveal security weaknesses. While read-only access might seem less dangerous than write access, information disclosure often represents the first step in a multi-stage attack, where reconnaissance information enables more sophisticated exploitation.
๐ฃ Privilege Escalation Opportunities
Attackers often combine chmod 777 vulnerabilities with other system weaknesses to escalate privileges from a low-privileged user account to root or administrator access. If a file or directory with 777 permissions is accessed by a process running with elevated privileges, attackers can manipulate that resource to influence the privileged process's behavior. For example, if a root-owned cron job reads a configuration file with 777 permissions, an attacker could modify that configuration to execute arbitrary commands as root during the next scheduled run.
Common Scenarios Where 777 Appears
Understanding where and why chmod 777 commonly appears in real-world systems helps administrators identify and remediate these security issues proactively. Many of these situations arise from misconceptions, quick fixes that became permanent, or following outdated tutorials that prioritize functionality over security. Recognizing these patterns enables more effective security audits and helps prevent similar issues in future deployments.
๐ Web Application Upload Directories
Content management systems, forums, and custom web applications frequently require directories where users can upload images, documents, or other files. When developers encounter permission errors preventing uploads, chmod 777 often becomes the quick solution that "just works." However, this creates a publicly writable directory accessible through the web server, potentially allowing attackers to upload malicious PHP shells, executable scripts, or files designed to exploit vulnerabilities in file processing libraries. The combination of web accessibility and write permissions creates an especially dangerous attack surface.
๐ Configuration Files After Tutorials
Many online tutorials, particularly older ones or those written by developers without security expertise, recommend chmod 777 as a solution to permission problems without explaining the implications or offering secure alternatives. Users following these tutorials often apply these permissions to configuration files containing database credentials, API keys, or other sensitive information. Once the application works, these permissions frequently remain unchanged, leaving sensitive data exposed to any user or compromised process on the system.
"The most dangerous permissions are those set once during installation and never reviewed again, silently creating vulnerabilities that persist for months or years."
๐๏ธ Cache and Session Directories
Application cache directories and session storage locations often receive 777 permissions when developers encounter write permission errors from web server processes. While these directories might not contain obviously sensitive data, they can still be exploited. Session files might be manipulated to hijack user sessions, cache poisoning could serve malicious content to users, and in some cases, these directories might be used to stage attacks or store stolen data. Additionally, if the application doesn't properly validate cached content, attackers might inject malicious data that gets executed when the cache is read.
๐ Plugin and Extension Directories
Content management systems and frameworks that support plugins or extensions sometimes have their plugin directories set to 777 to allow automated installation and updates through the web interface. This convenience feature creates significant security risks, as attackers who compromise the web application can install malicious plugins that execute with the full privileges of the web server. These malicious plugins can establish backdoors, steal data, or launch attacks against other systems, all while appearing as legitimate extensions within the application.
Safer Alternatives to Maximum Permissions
Nearly every scenario where chmod 777 seems necessary has safer alternatives that provide the required functionality while maintaining reasonable security boundaries. These approaches require slightly more effort to implement but deliver substantially better security outcomes. Understanding and applying these alternatives represents a core competency for system administrators and developers responsible for secure application deployment and maintenance.
๐ก๏ธ Proper Group Ownership and Permissions
The most common alternative involves adding the web server user to the same group as the file owner and setting permissions to 770 or 775. This approach grants full access to both the owner and group members while excluding other system users. For example, if your application files are owned by user "appuser" and your web server runs as "www-data," adding www-data to appuser's group and setting permissions to 770 provides all necessary access without exposing files to other users. This method works effectively for most web application scenarios and maintains clear permission boundaries.
๐ฏ Minimum Required Permissions
Following the principle of least privilege means granting only the specific permissions required for functionality. For most web application files, 644 (rw-r--r--) provides appropriate permissions, allowing the owner to modify files while other users can only read them. Directories typically need 755 (rwxr-xr-x) to allow directory traversal. Executable scripts might need 755, but data files rarely need execute permissions. By carefully analyzing what permissions each file type actually requires, administrators can create secure permission schemes that provide functionality without unnecessary exposure.
โ๏ธ Access Control Lists for Complex Scenarios
Access Control Lists (ACLs) provide more granular permission management than traditional Unix permissions, allowing administrators to specify permissions for multiple users and groups on a single file or directory. Using the setfacl command, you can grant specific users or groups precise permissions without affecting other users. For example, you might grant read and write access to both the application owner and the web server user while denying access to everyone else. ACLs solve many complex permission scenarios that might otherwise tempt administrators to use chmod 777.
๐ Sticky Bits and Special Permissions
The sticky bit (chmod +t or chmod 1777) provides a compromise for shared directories where multiple users need write access but shouldn't be able to delete each other's files. When applied to a directory, the sticky bit ensures that only the file owner, directory owner, or root can delete or rename files within that directory, even if other users have write permissions. This makes 1777 significantly safer than 777 for shared upload directories, as it prevents users from tampering with files they didn't create while still allowing collaborative file creation.
๐ณ Container User Mapping and Namespaces
In containerized environments, user namespace mapping allows processes inside containers to run as root within the container while actually running as unprivileged users on the host system. This approach eliminates many permission conflicts that lead to chmod 777 usage in development environments. Similarly, properly configured volume mounts with appropriate user and group IDs can ensure that containerized applications have necessary file access without requiring maximum permissions. These techniques provide security benefits while maintaining development convenience.
"Security doesn't have to be inconvenient; it just requires understanding the tools available and taking the time to implement them properly rather than reaching for the permission sledgehammer."
Identifying and Remediating 777 Permissions
Regular security audits should include scanning for files and directories with overly permissive settings. The find command provides powerful capabilities for locating files with specific permissions across entire directory trees. Running find /path/to/scan -type f -perm 0777 identifies all files with 777 permissions, while find /path/to/scan -type d -perm 0777 locates directories with these permissions. These commands should be run regularly, particularly after application installations, updates, or when onboarding new team members who might not follow security best practices.
Once identified, remediating 777 permissions requires careful analysis to understand why those permissions were set and what functionality they enable. Simply changing permissions without understanding their purpose can break applications or prevent legitimate functionality. The remediation process should involve testing in a non-production environment, documenting the original permissions and the reasons for changes, and monitoring application logs after permission changes to ensure no functionality breaks. In many cases, the remediation process reveals deeper security issues or architectural problems that the 777 permissions were masking.
โ Systematic Remediation Process
- ๐ Discovery: Use find commands to locate all files and directories with 777 permissions across your system, focusing on web-accessible directories, application folders, and user home directories
- ๐ Documentation: Create a spreadsheet or database listing each file or directory, its current permissions, its purpose, and which users or processes need access to it
- ๐งช Testing Environment: Set up a testing environment that mirrors production and experiment with more restrictive permissions to determine the minimum required for functionality
- ๐ง Implementation: Apply new permissions in production during maintenance windows, starting with less critical systems and monitoring for issues before proceeding to more critical resources
- ๐ Monitoring: Watch application logs, error logs, and user reports for permission-related issues after changes, and be prepared to adjust permissions if legitimate functionality breaks
- ๐ Documentation: Update system documentation to reflect new permission schemes and include explanations for why specific permissions were chosen to guide future administrators
- ๐ Regular Audits: Schedule recurring permission audits to catch newly created files with excessive permissions before they become security incidents
Permission Best Practices for Different File Types
Different types of files require different permission levels based on their purpose, sensitivity, and how they're accessed by various system components. Establishing standard permission schemes for common file types creates consistency across systems, reduces security vulnerabilities, and simplifies troubleshooting. These standards should be documented in organizational security policies and enforced through automated configuration management tools when possible.
๐ Web Application Files
Static content files like HTML, CSS, images, and JavaScript should typically use 644 permissions (rw-r--r--), allowing the owner to edit files while the web server and other users can read them. PHP, Python, and other interpreted script files should also use 644 since they don't need execute permissionsโthe interpreter handles execution. Directories containing these files should use 755 (rwxr-xr-x) to allow directory listing and traversal. This permission scheme prevents unauthorized modification while ensuring the web server can serve content properly.
๐ Configuration and Credential Files
Files containing passwords, API keys, database credentials, or other sensitive configuration data should use 600 permissions (rw-------), making them readable and writable only by the owner. If a service account needs to read these files, use 640 (rw-r-----) and ensure the service account is in the appropriate group. Never use world-readable permissions for credential files, as this exposes sensitive data to any compromised user account on the system. Additionally, consider using environment variables or secret management systems rather than storing credentials in files when possible.
โ๏ธ Executable Scripts and Binaries
Shell scripts, compiled binaries, and other executable files typically need 755 permissions (rwxr-xr-x), allowing the owner to modify them while other users can execute them. For scripts that should only be run by the owner or specific service accounts, use 750 (rwxr-x---) or 700 (rwx------). System binaries in directories like /usr/bin should generally be owned by root with 755 permissions, ensuring that only administrators can modify system executables while all users can run them.
๐ Upload and User-Generated Content Directories
Directories where users upload files require careful permission management. Using 755 for the directory with 644 for uploaded files provides reasonable security, but this requires proper application logic to set file permissions on upload. For shared upload directories, consider 1773 (rwxrwx-wt), where the sticky bit prevents users from deleting others' files. Implement additional security measures like file type validation, virus scanning, and serving uploaded content from a separate domain to prevent execution of malicious uploads.
"The goal isn't to make permissions as restrictive as possible, but to make them as restrictive as necessary while still enabling legitimate functionality."
The Role of Permissions in Defense in Depth
File permissions represent just one layer in a comprehensive security strategy known as defense in depth, where multiple security controls work together to protect systems even if individual controls fail. While proper file permissions are essential, they should never be the only security measure protecting sensitive data or critical system components. Understanding how permissions fit into the broader security landscape helps administrators design more resilient systems that can withstand various attack scenarios.
Defense in depth recognizes that no single security control is perfect and that attackers often chain multiple smaller vulnerabilities together to achieve their objectives. Proper file permissions make attacks more difficult by limiting what compromised accounts can access, but they work best when combined with other controls like firewalls, intrusion detection systems, regular security updates, strong authentication, and comprehensive logging. This layered approach ensures that even if an attacker bypasses one security control, additional barriers prevent complete system compromise.
๐ Complementary Security Controls
File permissions work alongside mandatory access control systems like SELinux or AppArmor, which provide additional constraints on what processes can do regardless of file permissions. These systems can prevent even root-owned processes from accessing certain files or performing specific actions, adding another security layer beyond traditional Unix permissions. Similarly, file integrity monitoring tools can alert administrators when critical files are modified, even if permissions would allow those modifications, enabling rapid response to potential security incidents.
Network segmentation and firewall rules provide another complementary layer, limiting which systems can communicate with each other and reducing the impact of compromised accounts. Even if an attacker gains access to a system with poorly configured permissions, network controls can prevent them from accessing other systems or exfiltrating data. Regular security audits, vulnerability scanning, and penetration testing help identify permission issues and other vulnerabilities before attackers exploit them, while comprehensive logging and monitoring enable detection and response when security incidents occur.
Educational Resources and Learning Path
Mastering Linux file permissions requires both theoretical understanding and practical experience. Numerous resources exist for learning permission management, from official documentation to interactive tutorials and hands-on labs. The Linux man pages for chmod, chown, and chgrp provide comprehensive technical documentation, while websites like Linux Journey and OverTheWire's Bandit wargame offer interactive learning experiences. Setting up a local virtual machine or using cloud-based Linux instances provides safe environments for experimenting with permissions without risking production systems.
Beyond basic permission management, advancing your skills requires understanding related concepts like access control lists, special permissions (setuid, setgid, sticky bit), file attributes (immutable, append-only), and mandatory access control systems. Security-focused certifications like CompTIA Linux+, LPIC-1, and RHCSA include file permission management in their curricula and provide structured learning paths. Participating in Linux communities, reading security blogs, and analyzing real-world security incidents helps develop the judgment needed to make appropriate permission decisions in complex scenarios.
Organizational Policy and Compliance Considerations
Organizations subject to regulatory compliance requirements like PCI DSS, HIPAA, or SOC 2 often have specific mandates regarding file permissions and access controls. These regulations typically require implementing least-privilege access, protecting sensitive data with appropriate access restrictions, and maintaining audit logs of permission changes. Overly permissive settings like chmod 777 can lead to compliance violations, failed audits, and in severe cases, financial penalties or loss of certifications required to operate in certain industries.
Developing and enforcing organizational policies around file permissions helps ensure consistent security practices across teams and projects. These policies should define standard permission schemes for different file types, specify approval processes for exceptions, and establish regular audit schedules. Configuration management tools like Ansible, Puppet, or Chef can enforce these policies automatically, ensuring that systems maintain approved permission configurations even as files are created, modified, or updated. Documentation of permission standards and the rationale behind them helps new team members understand and follow security best practices.
Why do so many tutorials recommend using chmod 777?
Many tutorials recommend chmod 777 because it's the simplest solution to permission problems and guarantees that access issues won't prevent the tutorial from working. Tutorial authors often prioritize ensuring their instructions work for the widest possible audience over teaching security best practices. Additionally, many tutorials are written for local development environments where security concerns are minimal, but readers often apply these same permissions in production environments where they create serious vulnerabilities. Well-written tutorials should explain the security implications of 777 permissions and provide secure alternatives for production use.
Can chmod 777 ever be considered safe?
Chmod 777 can be relatively safe in completely isolated environments with no sensitive data and no external network access, such as disposable development containers or virtual machines used solely for testing. However, even in these contexts, using proper permissions develops better habits and prevents accidentally applying the same approach in production. In multi-user systems, production environments, or any system containing sensitive data or connected to networks, chmod 777 should never be considered safe regardless of other security controls in place.
How can I find all files with 777 permissions on my system?
Use the find command to locate files and directories with 777 permissions: find /path/to/search -type f -perm 0777 for files and find /path/to/search -type d -perm 0777 for directories. To search the entire system, use sudo find / -perm 0777 2>/dev/null, which requires root privileges and suppresses permission denied errors. For more comprehensive audits, consider tools like Lynis or Tiger that scan for security issues including overly permissive file permissions as part of broader system hardening checks.
What's the difference between chmod 777 and chmod 755?
The key difference lies in the permissions granted to group and other users. With chmod 755, the owner has full read, write, and execute permissions (7), while group members and other users can only read and execute (5), lacking write permissions. This prevents unauthorized users from modifying or deleting files while still allowing them to read and execute when necessary. Chmod 755 represents a much more secure default for most files and directories, providing necessary functionality without exposing resources to unauthorized modification.
How do I fix permission issues without using chmod 777?
First, identify which user or process needs access to the file and what type of access they require. If it's a web server, add the web server user to the file owner's group and use chmod 770 or 750. For files that only need to be read by other users, use chmod 644 for files or 755 for directories. If multiple specific users need access, implement Access Control Lists (ACLs) using setfacl. For shared directories, consider using the sticky bit with chmod 1773. Always test permission changes in a development environment before applying them to production systems.
What should I do if I discover 777 permissions on production systems?
Don't immediately change permissions without understanding their purpose, as this might break critical functionality. Document all files with 777 permissions, research why they were set that way, and determine the minimum permissions required for functionality. Test alternative permission schemes in a staging environment that mirrors production. Plan a maintenance window for implementing changes, monitor logs closely after changes, and have a rollback plan if issues arise. Consider this an opportunity to review and improve overall system security rather than just fixing individual files.
Sponsor message โ This article is made possible by Dargslan.com, a publisher of practical, no-fluff IT & developer workbooks.
Why Dargslan.com?
If you prefer doing over endless theory, Dargslanโs titles are built for you. Every workbook focuses on skills you can apply the same dayโserver hardening, Linux one-liners, PowerShell for admins, Python automation, cloud basics, and more.