TeamSpeak: User Management & Permissions Guide
Comprehensive guide to TeamSpeak's permission system, server groups, channel groups, and best practices for managing users and access control.
Permission System Overview
Permission Types
๐ Server Permissions
Global permissions that apply across the entire server
๐ Channel Permissions
Permissions specific to individual channels
๐ค Client Permissions
Permissions assigned directly to individual users
Permission Hierarchy
Permissions are calculated in this order (highest priority first):
- Client Permissions: Individual user overrides
- Channel Client Permissions: User permissions in specific channel
- Channel Group: Group assigned in channel
- Server Group: Global group membership
Server Groups
Default Server Groups
| Group | ID | Purpose |
|---|---|---|
| Server Admin | 6 | Full server control |
| Normal | 8 | Regular users (default) |
| Guest | 7 | Limited permissions |
Create Custom Server Group
# Via ServerQuery
servergroupadd name=Moderator type=1
# Assign to user
servergroupaddclient sgid=GROUP_ID cldbid=CLIENT_DB_ID
# List all server groups
servergrouplist
# Delete server group
servergroupdel sgid=GROUP_ID force=1
Common Server Group Configurations
Moderator Group
- โ Kick clients
- โ Ban clients (temporary)
- โ Move clients between channels
- โ Edit channel descriptions
- โ Delete channels
- โ Edit server settings
VIP Group
- โ Reserved slot access
- โ Priority speaker
- โ Create temporary channels
- โ Upload avatars
- โ Administrative powers
Channel Groups
Default Channel Groups
| Group | Purpose | Permissions |
|---|---|---|
| Channel Admin | Full channel control | All channel permissions |
| Operator | Channel moderation | Kick, move, edit description |
| Voice | Can speak in channel | Talk power sufficient to speak |
| Guest | Limited access | Listen only |
Manage Channel Groups
# Create channel group
channelgroupadd name=DJ type=1
# Assign to user in channel
setclientchannelgroup cgid=GROUP_ID cid=CHANNEL_ID cldbid=CLIENT_DB_ID
# List channel groups
channelgrouplist
# Copy permissions from another group
channelgroupcopy scgid=SOURCE_ID tcgid=TARGET_ID name=New\ Group type=1
Permission Values
Key Permission IDs
| Permission | ID | Description |
|---|---|---|
| i_client_talk_power | 17 | Talk power value |
| i_client_needed_talk_power | 18 | Required talk power to speak |
| b_client_is_priority_speaker | 19 | Priority speaker status |
| i_client_kick_from_channel_power | 115 | Can kick from channel |
| i_client_kick_from_server_power | 116 | Can kick from server |
Grant/Revoke Permissions
# Grant permission to server group
servergroupaddperm sgid=GROUP_ID permid=PERM_ID permvalue=VALUE permnegated=0 permskip=0
# Grant permission to channel group
channelgroupaddperm cgid=GROUP_ID permid=PERM_ID permvalue=VALUE
# Grant permission to specific client
clientaddperm cldbid=CLIENT_DB_ID permid=PERM_ID permvalue=VALUE permskip=0
# Remove permission
servergroupdelperm sgid=GROUP_ID permid=PERM_ID
User Management Best Practices
Role-Based Access Control
๐ Admin Tier
Server Admin: Full control
Co-Admin: Most permissions, no server deletion
๐ก๏ธ Moderation Tier
Moderator: Kick, ban, move users
Helper: Move users, limited moderation
โญ User Tier
VIP: Reserved slots, priority
Member: Standard permissions
Guest: Limited access
Security Recommendations
- Principle of Least Privilege: Grant minimum necessary permissions
- Regular Audits: Review permissions monthly
- Separate Admin Accounts: Don't use ServerAdmin for daily tasks
- Document Changes: Keep log of permission modifications
Advanced Permission Scenarios
Private Channel Setup
# Create private channel
channelcreate channel_name=Private\ Room channel_flag_permanent=1
# Set password
channeledit cid=CHANNEL_ID channel_password=SecurePassword123
# Require talk power
channeledit cid=CHANNEL_ID channel_needed_talk_power=50
# Grant access to specific group
channeladdperm cid=CHANNEL_ID permid=i_channel_needed_join_power permvalue=50
Music Bot Permissions
# Create Music Bot group
servergroupadd name=Music\ Bot type=1
# Grant necessary permissions
servergroupaddperm sgid=GROUP_ID permid=b_client_ignore_antiflood permvalue=1
servergroupaddperm sgid=GROUP_ID permid=i_client_talk_power permvalue=100
servergroupaddperm sgid=GROUP_ID permid=b_client_is_priority_speaker permvalue=1
# Assign to bot client
servergroupaddclient sgid=GROUP_ID cldbid=BOT_CLIENT_DB_ID
Guest Restrictions
# Limit guest capabilities
servergroupaddperm sgid=7 permid=i_client_max_channels permvalue=0
servergroupaddperm sgid=7 permid=b_client_create_temporary_channel permvalue=0
servergroupaddperm sgid=7 permid=b_client_use_channel_commander permvalue=0
servergroupaddperm sgid=7 permid=i_client_talk_power permvalue=25
Automated User Management
Auto-Assignment Script
#!/usr/bin/env python3
# auto_assign_groups.py
import ts3
# Connect to ServerQuery
with ts3.query.TS3Connection("localhost") as ts3conn:
ts3conn.login(
client_login_name="serveradmin",
client_login_password="password"
)
ts3conn.use(sid=1)
# Get all clients
clients = ts3conn.clientlist()
for client in clients:
# Skip query clients
if client['client_type'] == '1':
continue
cldbid = client['client_database_id']
# Auto-assign based on criteria
# Example: VIP group for users with 100+ connections
client_info = ts3conn.clientdbinfo(cldbid=cldbid)
if int(client_info['client_totalconnections']) >= 100:
# Assign VIP group (sgid=9)
ts3conn.servergroupaddclient(sgid=9, cldbid=cldbid)
print(f"Assigned VIP to {client['client_nickname']}")
Permission Audit Script
#!/bin/bash
# audit_permissions.sh
OUTPUT_FILE="permission_audit_$(date +%Y%m%d).txt"
echo "TeamSpeak Permission Audit - $(date)" > "$OUTPUT_FILE"
echo "======================================" >> "$OUTPUT_FILE"
# List all server groups and their members
echo -e "\nServer Groups:" >> "$OUTPUT_FILE"
echo "servergrouplist" | nc localhost 10011 >> "$OUTPUT_FILE"
# List all channel groups
echo -e "\nChannel Groups:" >> "$OUTPUT_FILE"
echo "channelgrouplist" | nc localhost 10011 >> "$OUTPUT_FILE"
# List clients with admin permissions
echo -e "\nAdmin Users:" >> "$OUTPUT_FILE"
echo "servergroupclientlist sgid=6" | nc localhost 10011 >> "$OUTPUT_FILE"
echo "Audit complete: $OUTPUT_FILE"
Common Permission Issues
| Issue | Cause | Solution |
|---|---|---|
| User can't speak | Insufficient talk power | Increase i_client_talk_power |
| Can't create channels | Missing permission | Grant b_channel_create_permanent |
| Can't join channel | Join power too low | Increase i_channel_join_power |
| Lost admin access | Accidentally removed from group | Use ServerAdmin token to restore |
Important: Always keep your ServerAdmin privilege key in a safe place. It's the only way to recover from permission lockouts.
Supercraft doesn't host TeamSpeak, but we run the dedicated game servers your community plays on, with instant setup, mods, and DDoS protection. See our game hosting.