Menu
 

User Management & Permissions - TeamSpeak Wiki

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

  1. Client Permissions: Individual user overrides
  2. Channel Client Permissions: User permissions in specific channel
  3. Channel Group: Group assigned in channel
  4. 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.

Top