Skip to Content

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.

Users can be managed from the dashboard
Tip

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

CommandDescription
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:

bash
qb user create -u username -p 'password' -e user@example.com

Required parameters:

OptionDescription
-u, --usernameUsername (no special characters, cannot start/end with numbers)
-p, --passwordUser password (will be encrypted). Use this or --password-stdin, not both
--password-stdinRead the password as one line from standard input instead of the command line. Cannot be combined with -p
-e, --emailEmail address for notifications

To keep the password off the command line, pass it on standard input:

bash
# 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.com
Keep the password out of the process list
Tip

With --password-stdin 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:

  1. Username validation (no special chars, no numbers at start/end)
  2. System user account is created
  3. Password is encrypted using bcrypt
  4. Home directory is set up (/home/username)
  5. QuickBox dashboard access is configured
  6. User record is added to database (level 4 - standard user)
  7. Default permissions are applied
  8. User can immediately log in and install applications
Username Requirements
Tip

Usernames must be alphanumeric only. They cannot contain special characters (!@#$%^&*()_+) and cannot start or end with numbers. Valid examples: john, alice, bob123, user001

Password Security
Tip

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:

bash
qb user delete -u username

What 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
Permanent Deletion
Caution

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:

bash
qb user show -u username

Output 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:

bash
qb user password -u username -p newpassword

To keep the new password off the command line, read it from standard input instead of using -p:

bash
# 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-stdin 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:

bash
# Set it: asks twice, input hidden
qb user pyloadpasswd -u username
 
# Show it (account owner only)
qb user pyloadpasswd -u username -o reveal
OptionDescription
-u, --usernameThe account whose pyLoad login is changed
-o revealPrint the saved pyLoad password instead of setting one
-o web --path fileFor 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:

  1. The password is checked: it cannot be empty and cannot contain a line break.
  2. If pyLoad is installed, the new password is applied to pyLoad’s login first. If that fails, nothing is saved.
  3. The password is saved so that Reveal and the dashboard can show it.
  4. 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 codeMeaning
0Success
2Not allowed (setting another user’s password as a non-admin, or revealing another user’s password)
3The password is empty or has a line break, or there is no terminal for the prompt
5The file given with -o web --path is missing or unreadable
6Reveal was requested but no pyLoad password is saved
7pyLoad is installed but its login could not be updated, or the password could not be saved
Reveal shows the password QuickBox saved
Note

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:

bash
# Set it: asks twice, input hidden
qb user vncpasswd -u username
 
# Show it (account owner only)
qb user vncpasswd -u username -o reveal

The 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 codeMeaning
0Success
2Not allowed (setting another user’s password as a non-admin, or revealing another user’s password)
3The password is empty or has a line break, or there is no terminal for the prompt
5The file given with -o web --path is missing or unreadable
6Reveal 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:

bash
qb user ban -u username

What 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 .ovpn stops 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
When to Ban vs Remove
Note

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:

bash
qb user unban -u username

What 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 .ovpn bundle before reconnecting

Promote User

Promote a standard user to admin level:

bash
qb user promote -u username

Admin privileges include:

  • Access to admin dashboard
  • Ability to manage all users
  • System-level configuration
  • View server statistics
  • Install system-wide applications
Security Consideration
Warning

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:

bash
qb user demote -u username

What 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:

bash
# 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 username

Supported units:

  • TB - Terabytes (e.g., 2TB, 5TB)
  • GB - Gigabytes (e.g., 500GB, 1000GB)
  • MB - Megabytes (e.g., 10240MB, 5000MB)

Important notes:

  • Do NOT use decimals in disk space values (e.g., use 500GB not 0.5TB)
  • The quota system must be installed first: qb install quota
  • Filesystem must support quotas (enabled on mount point)
  • Quotas are enforced by the quota package

How it works:

  1. Quota size is stored in the database for the user
  2. The setquota command applies the limit to the filesystem
  3. Cron job periodically enforces quotas: qb user quota -o cron
  4. Use qb user show -u username to view current disk usage
Viewing Disk Usage
Tip

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:

bash
qb user shell -u username -o [sudo|full|limited]

Shell Environment Options

sudo

Complete admin privileges
  • Full sudo access
  • Can modify system files
  • Install system packages
  • Manage services

full

Full access, no sudo
  • Access entire filesystem
  • Cannot use sudo
  • Cannot access root directories
  • Good for power users

limited

Jailed environment
  • 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:

LevelOptionLogin shellsudo groupWho gets it
1sudo/bin/bashyesSuper admins; support staff
2full/bin/bashnoAdmins (assigned by qb user promote)
3limited/usr/bin/lshellnoStandard 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 (full bash, 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.

Restricted-shell logging
Note

Every command and security event for a limited user is logged per user, per day at /var/log/lshell/<username>-YYYYMMDD.log (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.

Critical Warning: Bash Requirement
Caution

Changing the shell environment to anything other than /bin/bash 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 /bin/bash 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:

bash
# 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 applications

Dealing with Problem Users

Temporary suspension:

bash
# Ban user (keeps data, stops services)
qb user ban -u problemuser
 
# After issue is resolved, unban
qb user unban -u problemuser

Permanent removal:**

bash
# 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 problemuser

Password Reset

Resetting a forgotten password:

bash
# As admin, reset the user's password
qb user password -u username -p 'NewTemporaryPass123'
 
# Instruct user to change password after first login

Additional Features

Rclone Management

Manage rclone configuration and operations for a specific user:

bash
# 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 logs

Available options:

  • remove_lock - Remove stale lock file if rclone upload is stuck
  • upload - Manually trigger rclone upload process
  • logs - 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
Rclone Configuration
Tip

Users must have rclone installed and configured before using these commands. See the rclone documentation for setup instructions.


Troubleshooting

User Cannot Log In

bash
# 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 username

User’s Applications Not Starting

bash
# 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 username

Quota Not Working

bash
# 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 cron

Security 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


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
Join Discord Server
Last updated on