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.
Manage your TeamSpeak community with ease. Host your TeamSpeak server with Supercraft for simplified user management.