Ubuntu系统下管理Jellyfin用户权限的完整步骤
首先确保Ubuntu系统已安装Jellyfin。若未安装,可通过以下命令快速部署:
sudo apt update && sudo apt install jellyfin -y
为提升安全性,建议为Jellyfin创建一个无登录权限的系统用户及同名组,避免使用root账户运行:
sudo adduser --system --group --disabled-login --no-create-home jellyfin
此命令会生成jellyfin用户(归属jellyfin组),且无法通过密码登录系统。
编辑Jellyfin的systemd服务文件,强制其以jellyfin用户身份启动:
sudo systemctl edit --full jellyfin.service
在[Service] section中确认或添加以下参数(关键配置):
User=jellyfin
Group=jellyfin
ExecStart=/usr/bin/jellyfin
Restart=on-failure
保存退出后,重新加载systemd配置并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart jellyfin
Jellyfin的正常运行需对数据目录、日志目录和配置目录赋予正确权限:
sudo chown -R jellyfin:jellyfin /var/lib/jellyfin
sudo chmod -R 755 /var/lib/jellyfin
sudo chown -R jellyfin:jellyfin /var/log/jellyfin
sudo chmod -R 755 /var/log/jellyfin
sudo chown -R jellyfin:jellyfin /etc/jellyfin
sudo chmod -R 755 /etc/jellyfin
若需让Jellyfin访问外部媒体文件(如/mnt/media),需将该目录所有权赋予jellyfin用户,并设置合理权限:
sudo chown -R jellyfin:jellyfin /mnt/media
sudo chmod -R 755 /mnt/media
注意:若媒体目录需支持多用户协作(如家庭共享),可通过ACL(访问控制列表)为特定用户添加权限(需文件系统支持ACL):
sudo setfacl -m u:yourusername:rwx /mnt/media # 授予指定用户读写执行权限
sudo setfacl -m g:jellyfin:rwx /mnt/media # 授予jellyfin组读写执行权限
若通过Nginx/Apache反向代理访问Jellyfin,需在代理配置中添加身份验证,限制非法访问:
/etc/nginx/sites-available/jellyfin):server {
listen 80;
server_name your_domain_or_ip;
location / {
proxy_pass http://localhost:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# 限制/data目录访问(需输入用户名密码)
location /data/ {
alias /var/lib/jellyfin/;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
创建密码文件并添加用户:sudo sh -c "echo -n 'admin:' >> /etc/nginx/.htpasswd"
sudo sh -c "openssl passwd -apr1 >> /etc/nginx/.htpasswd" # 设置密码
启用配置并重启Nginx:sudo ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
通过以下命令检查服务状态及目录权限,确保配置生效:
# 检查Jellyfin服务是否运行
sudo systemctl status jellyfin
# 验证数据目录权限
ls -ld /var/lib/jellyfin
# 查看Jellyfin日志(确认无权限错误)
sudo tail -f /var/log/jellyfin/jellyfin.log
777(完全开放),否则可能导致安全漏洞。/var/lib/jellyfin目录(含媒体元数据、用户设置),防止数据丢失。