Jellyfin在Linux上的权限设置指南
为隔离Jellyfin服务权限,避免使用root账户,需创建专用系统用户。推荐使用以下命令(以Ubuntu为例,CentOS类似):
sudo adduser jellyfin --system --group --disabled-login --no-create-home
此命令会创建一个名为jellyfin的系统用户(--system)、专属用户组(--group),并禁用登录(--disabled-login)及主目录(--no-create-home),确保服务运行时的最小权限原则。
Jellyfin需要访问媒体文件(视频、音频、字幕等)及自身配置文件,需正确设置所有权与权限:
媒体库权限:
假设媒体库路径为/path/to/media(如/mnt/media/videos),执行以下命令:
sudo chown -R jellyfin:jellyfin /path/to/media # 将所有者设为jellyfin用户及组
sudo chmod -R 755 /path/to/media # 允许所有者读写执行,其他用户只读执行
若媒体文件需动态添加(如通过Samba共享或USB拷贝),推荐采用共享用户组模式(更灵活):
sudo groupadd mediajellyfin用户与你的日常用户(如youruser)加入组:sudo usermod -aG media jellyfin、sudo usermod -aG media yourusersudo chown -R jellyfin:media /path/to/media、sudo chmod -R 775 /path/to/media(组内用户均可读写)。配置文件权限:
Jellyfin的配置文件默认存放在/etc/jellyfin/config(或/var/lib/jellyfin/config),需确保jellyfin用户可访问:
sudo chown -R jellyfin:jellyfin /etc/jellyfin/config
sudo chmod -R 755 /etc/jellyfin/config
若系统启用SELinux(如CentOS默认启用),需调整策略以允许Jellyfin访问媒体文件。常见操作:
# 检查SELinux状态
sestatus
# 若为Enforcing模式,允许Jellyfin访问媒体目录
sudo chcon -R -t httpd_sys_rw_content_t /path/to/media
# 若需永久生效,创建自定义策略(需根据实际情况调整)
注意:SELinux配置较复杂,建议参考Jellyfin官方文档或系统日志(/var/log/audit/audit.log)定位具体拒绝项。
使用UFW(Ubuntu)或Firewalld(CentOS)限制Jellyfin端口(默认HTTP 8096、HTTPS 8920)的访问:
sudo apt install ufw -y
sudo ufw allow OpenSSH # 允许SSH登录(避免被锁)
sudo ufw allow 8096/tcp # 允许Jellyfin HTTP端口
sudo ufw allow 8920/tcp # 允许Jellyfin HTTPS端口(若启用)
sudo ufw enable # 启用防火墙
sudo ufw status # 查看状态
sudo firewall-cmd --permanent --zone=public --add-port=8096/tcp
sudo firewall-cmd --permanent --zone=public --add-port=8920/tcp
sudo firewall-cmd --reload
确保仅允许可信IP访问(如家庭网络IP段),进一步提升安全性。
完成配置后,重启Jellyfin服务并检查日志,确认无权限错误:
sudo systemctl restart jellyfin
sudo systemctl status jellyfin # 检查服务状态(应为active)
sudo tail -n 50 /var/lib/jellyfin/log/jellyfin.log # 查看最新日志(无"Permission denied"错误)
若出现权限问题,可根据日志提示调整对应目录的权限(如chmod或chown)。
若需多人共用媒体库,可通过用户组实现灵活权限控制:
media组(如上所述);通过以上步骤,可确保Jellyfin在Linux系统上具备正确的权限,既能正常访问媒体文件,又能保障系统安全。