qb user - User Management
User Management System
Create, manage, and control user accounts on your QuickBox server
The qb user management functions offer a versatile and powerful set of tools to efficiently manage users on your server. With a focus on ease of use and robust functionality, these functions enable you to streamline user management, enhance security, and ensure smooth server operation.
Admins can create, edit, ban, and set quotas for users from User Management → User Admin in the dashboard — the recommended surface for most user tasks. This CLI reference covers the same operations for automation, scripting, and headless servers.
Quick Reference
| Command | Description |
|---|---|
| qb user create -u username -p password -e email | Create a new user account |
| qb user create -u username --password-stdin -e email | Create a user, reading the password from standard input |
| qb user delete -u username | Delete a user account |
| qb user password -u username -p newpass | Change user password |
| qb user password -u username --password-stdin | Change a password, reading it from standard input |
| qb user pyloadpasswd -u username | Set the pyLoad login password for a user |
| qb user vncpasswd -u username | Set the noVNC desktop password for a user |
| qb user ban -u username | Ban a user (disable services, block login) |
| qb user unban -u username | Unban a user (re-enable services) |
| qb user promote -u username | Promote user to admin level (level 9) |
| qb user demote -u username | Demote user to standard level (level 4) |
| qb user quota -u username -o [SIZE] | Set user disk quota (e.g., 2TB, 500GB) |
| qb user shell -u username -o [sudo|full|limited] | Set shell environment |
| qb user show -u username | Display detailed user information |
| qb user rclone -u username -o [option] | Manage user’s rclone configuration |
Available Commands
Create User
Create a new QuickBox user account with email verification:
qb user create -u username -p 'password' -e user@example.comRequired parameters:
| Option | Description |
|---|---|
-u, --username | Username (no special characters, cannot start/end with numbers) |
-p, --password | User password (will be encrypted). Use this or --password-, not both |
--password- | Read the password as one line from standard input instead of the command line. Cannot be combined with -p |
-e, --email | Email address for notifications |
To keep the password off the command line, pass it on standard input:
# Type it when it waits (hidden)
qb user create -u username --password-stdin -e user@example.com
# Or pipe it in from a variable
printf '%s\n' "$PASSWORD" | qb user create -u username --password-stdin -e user@example.comWith --password- the password never appears in the command line, so other users cannot see it in the process list and it is not written to the sudo log. Typing it when qb waits for it also keeps it out of your shell history. qb reads exactly one line: an empty line or missing input is rejected, and the password cannot contain a line break.
What happens during user creation:
- Username validation (no special chars, no numbers at start/end)
- System user account is created
- Password is encrypted using bcrypt
- Home directory is set up (
/)home/ username - QuickBox dashboard access is configured
- User record is added to database (level 4 - standard user)
- Default permissions are applied
- User can immediately log in and install applications
Usernames must be alphanumeric only. They cannot contain special characters (!@#$%^&*()_+) and cannot start or end with numbers. Valid examples: john, alice, bob123, user001
Use strong passwords with a mix of uppercase, lowercase, numbers, and special characters. Consider using a password manager to generate and store secure credentials. Passwords are encrypted using industry-standard bcrypt hashing.
Delete User
Permanently delete a QuickBox user account:
qb user delete -u usernameWhat gets removed:
- User account and home directory (
/)home/ username - All installed applications for that user
- User’s dashboard access and credentials
- User’s data and configurations
- Database records for the user
- The user’s OpenVPN certificate is revoked and their client profile (
.ovpn, download route) is purged, so any copy they kept stops connecting
Protection:
- Cannot delete a super admin account (level 10)
- Confirmation prompt before deletion
This action permanently deletes the user’s home directory and all associated data. There is no undo. Make sure to backup any important data before deleting a user.
Show User Information
Display detailed information about a specific user:
qb user show -u usernameOutput includes:
- Username and user ID
- Home directory location
- Shell environment type
- Admin level (4=user, 9=admin, 10=super-admin)
- Installed applications
- Disk usage and quota
- Account status (active/banned)
Change Password
Change the password for an existing user:
qb user password -u username -p newpasswordTo keep the new password off the command line, read it from standard input instead of using -p:
# Type it when it waits (hidden)
qb user password -u username --password-stdin
# Or pipe it in from a variable
printf '%s\n' "$NEWPASSWORD" | qb user password -u username --password-stdin--password- waits for one line that you type (it is not shown) or pipe in, and cannot be combined with -p. Passwords with a line break are rejected, with either option.
Use cases:
- User forgot their password
- Regular password rotation for security
- Compromised credentials
- Admin password resets
pyLoad Password
Set or reveal the password for a user’s pyLoad login. The password starts as the account password and can be changed here without changing the account password:
# Set it: asks twice, input hidden
qb user pyloadpasswd -u username
# Show it (account owner only)
qb user pyloadpasswd -u username -o reveal| Option | Description |
|---|---|
-u, --username | The account whose pyLoad login is changed |
-o reveal | Print the saved pyLoad password instead of setting one |
-o web --path file | For scripts without a terminal: read the new password from file (one line). The file is deleted after it is read |
Who can do what:
- Set: the account owner, any admin, and root.
- Reveal: only the account owner. An admin or root cannot reveal another user’s password.
What happens when you set it:
- The password is checked: it cannot be empty and cannot contain a line break.
- If pyLoad is installed, the new password is applied to pyLoad’s login first. If that fails, nothing is saved.
- The password is saved so that Reveal and the dashboard can show it.
- If pyLoad is running, it is restarted.
If pyLoad is not installed yet, the password is saved and pyLoad uses it when you install it. An interactive set needs a terminal. Without one, the command stops and asks you to use -o web --path.
| Exit code | Meaning |
|---|---|
0 | Success |
2 | Not allowed (setting another user’s password as a non-admin, or revealing another user’s password) |
3 | The password is empty or has a line break, or there is no terminal for the prompt |
5 | The file given with -o web --path is missing or unreadable |
6 | Reveal was requested but no pyLoad password is saved |
7 | pyLoad is installed but its login could not be updated, or the password could not be saved |
If the password is changed inside pyLoad’s own settings, QuickBox does not see the change and Reveal keeps showing the saved one. The same applies to the pyLoad password section of the App Dashboard. For the full picture see pyLoad.
You can also do this from the App Dashboard. Open your pyLoad row and use the API & Secrets panel.
noVNC Password
Set or reveal the dedicated password for a user’s noVNC desktop. It is separate from the account password and survives a reinstall:
# Set it: asks twice, input hidden
qb user vncpasswd -u username
# Show it (account owner only)
qb user vncpasswd -u username -o revealThe options, the rules for who can set or reveal, and the -o web --path file form for scripts are the same as for qb user pyloadpasswd. The password cannot be empty or contain a line break. A password set before noVNC is installed is saved and applied at install. If the noVNC service exists, it is restarted so the new password takes effect, which ends any open desktop session.
| Exit code | Meaning |
|---|---|
0 | Success |
2 | Not allowed (setting another user’s password as a non-admin, or revealing another user’s password) |
3 | The password is empty or has a line break, or there is no terminal for the prompt |
5 | The file given with -o web --path is missing or unreadable |
6 | Reveal was requested but no noVNC password is saved |
See noVNC for the dashboard steps and the 8-character limit.
Ban User
Ban a user account, preventing login and stopping all installed services:
qb user ban -u usernameWhat happens when a user is banned:
- Dashboard login is blocked
- All running services for the user are stopped
- SSH access is disabled
- User cannot install new applications
- If the user has an OpenVPN profile, their certificate is revoked — their existing
.ovpnstops connecting immediately (enforced by the server’s certificate revocation list)
Important notes:
- This does NOT delete user data
- User’s files and configurations remain intact
- Services can be restarted by unbanning the user
- The user’s VPN membership is preserved (the certificate is revoked, not the account) so unban can reissue a fresh profile
Use ban for temporary restrictions (e.g., policy violations, unpaid subscription). Use remove for permanent account deletion.
Unban User
Restore access for a previously banned user:
qb user unban -u usernameWhat happens when a user is unbanned:
- Dashboard login is re-enabled
- Services are started again
- SSH access is restored
- User can manage applications normally
- For OpenVPN users, a fresh client profile is issued — the certificate revoked at ban time stays permanently dead, so the user must re-download their new
.ovpnbundle before reconnecting
Promote User
Promote a standard user to admin level:
qb user promote -u usernameAdmin privileges include:
- Access to admin dashboard
- Ability to manage all users
- System-level configuration
- View server statistics
- Install system-wide applications
Admin users have full access to your server. Only promote trusted users. Admins can view/modify other users’ data and system configurations.
Demote User
Demote an admin user back to standard user level:
qb user demote -u usernameWhat changes:
- Admin dashboard access is removed
- Cannot manage other users
- Can only manage their own applications
- System configuration access is revoked
User Quota
Set disk quota limits for a user:
# Set quota with size (TB, GB, or MB)
qb user quota -u username -o 2TB
qb user quota -u username -o 500GB
qb user quota -u username -o 10240MB
# View user's disk usage
qb user show -u usernameSupported units:
TB- Terabytes (e.g.,2,TB 5)TB GB- Gigabytes (e.g.,500,GB 1000)GB MB- Megabytes (e.g.,10240,MB 5000)MB
Important notes:
- Do NOT use decimals in disk space values (e.g., use
500notGB 0.)5 TB - The quota system must be installed first:
qb install quota - Filesystem must support quotas (enabled on mount point)
- Quotas are enforced by the
quotapackage
How it works:
- Quota size is stored in the database for the user
- The
setquotacommand applies the limit to the filesystem - Cron job periodically enforces quotas:
qb user quota -o cron - Use
qb user show -u usernameto view current disk usage
The qb user show command displays the user’s current disk usage (excludes rclone mounts). This helps you monitor quota compliance without checking the quota system directly.
Shell Environment
Set the shell environment and access level for a user:
qb user shell -u username -o [sudo|full|limited]Shell Environment Options
sudo
- Full sudo access
- Can modify system files
- Install system packages
- Manage services
full
- Access entire filesystem
- Cannot use sudo
- Cannot access root directories
- Good for power users
limited
- Restricted to home directory
- Cannot access other users
- Very limited shell commands
- Most secure option
Shell levels
Each option maps to a shell level stored on the user account. The level controls both the login shell and whether the user is in the sudo group:
| Level | Option | Login shell | sudo group | Who gets it |
|---|---|---|---|---|
| 1 | sudo | / | yes | Super admins; support staff |
| 2 | full | / | no | Admins (assigned by qb user promote) |
| 3 | limited | / | no | Standard users — the default for new accounts |
New users created with qb user create always start at level 3 (limited). Promotion and demotion move the level as a side effect:
qb user promote -u <username>— sets the user to admin (level 9) and shell level 2 (fullbash, no sudo).qb user demote -u <username>— returns the user to standard (level 4) and shell level 3 (limited, back into lshell).
The limited (lshell) shell
Level 3 users run inside lshell , a restricted shell that intercepts every command and checks it against a whitelist before running it. A limited user is confined to their own home directory, cannot chain or pipe commands, cannot use sudo, and cannot escape to an interactive shell. This is what lets you hand a standard seedbox user shell access safely.
The command whitelist and hardening (allowed commands, forbidden patterns, over-SSH access, warnings, process cap, banner) are a single shared policy. Edit it from the dashboard at Settings → Security → Restricted Shell — those edits are stored durably and survive qb update. See that page for the full field reference and guard rails.
Every command and security event for a limited user is logged per user, per day at / (log directory owned by the lshell group, mode 770). Each security line ends in the SSH client address, or a literal - for a local login. When Fail2Ban is installed, its two shell-confinement jails watch these logs and can ban an abusive SSH address — a local login is never bannable.
Changing the shell environment to anything other than / may lead to unintended behavior when using qb (QuickBox). The QuickBox CLI has been specifically designed and optimized for the Bash shell environment.
Recommendation: Stick with the / environment when using QuickBox. If you must use a different shell, consult that shell’s documentation for compatibility adjustments.
Common Workflows
Creating a New User
Standard user creation workflow:
# 1. Create the user
qb user create -u john -p 'SecurePass123!' -e john@example.com
# 2. Set shell environment (optional, defaults to limited shell)
qb user shell -u john -o limited
# 3. Set disk quota (optional, requires quota to be installed)
qb user quota -u john -o 2TB
# 4. User can now log in and install applicationsDealing with Problem Users
Temporary suspension:
# Ban user (keeps data, stops services)
qb user ban -u problemuser
# After issue is resolved, unban
qb user unban -u problemuserPermanent removal:**
# Backup user data first (if needed)
tar -czf /root/backups/problemuser-$(date +%Y%m%d).tar.gz /home/problemuser
# Delete user and all data
qb user delete -u problemuserPassword Reset
Resetting a forgotten password:
# As admin, reset the user's password
qb user password -u username -p 'NewTemporaryPass123'
# Instruct user to change password after first loginAdditional Features
Rclone Management
Manage rclone configuration and operations for a specific user:
# Remove rclone lock file (if stuck)
qb user rclone -u username -o remove_lock
# Trigger rclone upload manually
qb user rclone -u username -o upload
# View rclone upload logs
qb user rclone -u username -o logsAvailable options:
remove_lock- Remove stale lock file if rclone upload is stuckupload- Manually trigger rclone upload processlogs- Display rclone upload logs for troubleshooting
Use cases:
- Rclone upload process is stuck or frozen
- Force an immediate upload to cloud storage
- Debug cloud storage sync issues
- Monitor upload progress and errors
Users must have rclone installed and configured before using these commands. See the rclone documentation for setup instructions.
Troubleshooting
User Cannot Log In
# Check user information
qb user show -u username
# If banned, unban them
qb user unban -u username
# Reset password
qb user password -u username -p 'NewPassword123'
# Fix user home directory permissions
qb fix home -u usernameUser’s Applications Not Starting
# Check user's services
systemctl --user -M username@ status
# Fix user home permissions
qb fix home -u username
# Check if user has any installed software
qb user show -u usernameQuota Not Working
# Install quota system (must be done first)
qb install quota
# Set user quota (size in TB/GB/MB, no decimals)
qb user quota -u username -o 2TB
# View user's disk usage
qb user show -u username
# Force quota enforcement for all users (cron mode)
qb user quota -o cronSecurity Best Practices
Do
- Use strong, unique passwords for each user
- Regularly audit user accounts (qb user list)
- Remove unused accounts promptly
- Use limited shell for untrusted users
- Document admin user promotions
- Set disk quotas to prevent abuse
Don't
- Share user credentials between people
- Give sudo access to untrusted users
- Use weak/default passwords
- Leave banned users indefinitely
- Promote users without consideration
- Remove users without backing up data
Related Commands
Need Help?
Join the Community
Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.
- Dedicated Support
- Feature Previews
- Community Configs
- Active Discussions