为避免以root身份运行MinIO(降低被攻击后影响系统安全的风险),需创建一个不可登录的系统用户:
sudo groupadd minio # 创建minio用户组 sudo useradd -r -s /bin/false -g minio minio # 创建系统用户,指定shell为/bin/false(禁止登录) 将MinIO数据目录的所有权赋予该用户,确保其有权限读写数据:
sudo mkdir -p /mnt/minio_data # 创建数据目录(路径可根据需求调整) sudo chown -R minio:minio /mnt/minio_data # 递归修改目录所有权 sudo chmod -R 755 /mnt/minio_data # 设置目录权限(所有者可读写执行,其他用户可读执行) 创建systemd服务文件(/etc/systemd/system/minio.service),指定用户、端口及访问密钥:
[Unit] Description=MinIO Object Storage After=network.target [Service] Type=simple User=minio # 指定运行用户 Group=minio # 指定运行组 ExecStart=/usr/local/bin/minio server /mnt/minio_data \ --address ":9000" \ # 数据服务端口(默认9000) --console-address ":9001" \ # 控制台端口(默认9001) --quiet Environment="MINIO_ROOT_USER=admin" \ # 根用户Access Key(自定义) Environment="MINIO_ROOT_PASSWORD=YourStrongPassword123!" # 根用户Secret Key(自定义,需复杂) Restart=always # 崩溃后自动重启 LimitNOFILE=65536 # 限制文件描述符数(高并发需求) [Install] WantedBy=multi-user.target 加载配置并启动服务:
sudo systemctl daemon-reload sudo systemctl start minio sudo systemctl enable minio # 开机自启 通过防火墙仅允许可信IP访问MinIO端口(9000/9001),防止非法访问:
sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp # 允许数据端口 sudo firewall-cmd --permanent --zone=public --add-port=9001/tcp # 允许控制台端口 sudo firewall-cmd --reload sudo iptables -A INPUT -p tcp --dport 9000 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 9001 -j ACCEPT sudo service iptables save 为避免数据传输被窃听,需配置SSL证书(可使用Let’s Encrypt免费证书):
# 生成自签名证书(生产环境建议使用CA签发证书) sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/minio/certs/minio.key -out /etc/minio/certs/minio.crt # 设置证书权限(仅所有者可读) sudo chmod 600 /etc/minio/certs/minio.key /etc/minio/certs/minio.crt # 重启MinIO服务(使用--secure参数启用HTTPS) sudo systemctl restart minio 启动后,MinIO将通过https://your-server-ip:9000(数据服务)和https://your-server-ip:9001(控制台)提供服务。
MinIO支持RBAC,可通过mc(MinIO Client)工具创建用户、角色并分配权限:
wget https://dl.min.io/client/mc/release/linux-amd64/mc chmod +x mc sudo mv mc /usr/local/bin/ mc alias set myminio http://localhost:9000 admin YourStrongPassword123! # 创建角色(定义权限,如readwrite/read/none) mc admin role add myrole readwrite # 创建用户并分配角色 mc admin user add myuser myaccesskey mysecretkey mc admin role assign myrole myuser mc命令测试用户权限(如mc ls myminio/mybucket),确保用户仅能执行分配的操作。MINIO_CONSOLE_PASSWORD设置为空(不推荐生产环境使用)。--audit-log-path参数开启审计日志,记录所有访问操作:ExecStart=/usr/local/bin/minio server /mnt/minio_data \ --audit-log-path /var/log/minio/audit.log minio update命令升级到最新版本,修复安全漏洞。通过以上步骤,可完成MinIO在Linux环境下的访问权限配置,确保数据存储与访问的安全性。