活动公告

系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Slackware多用户环境完全搭建手册 从零开始构建稳定的多账户工作环境 涵盖用户创建权限设置及安全管理

SunJu_FaceMall

3万

主题

2717

科技点

3万

积分

执行版主

碾压王

积分
32881

塔罗立华奏

执行版主 发表于 2025-8-30 21:00:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Slackware是现存最古老的Linux发行版之一,以其简洁、稳定和类Unix的设计理念而著称。在服务器和工作站环境中,搭建一个安全、高效的多用户环境是系统管理的基础工作。本文将详细介绍如何在Slackware系统上从零开始构建稳定的多账户工作环境,包括用户创建、权限设置和安全管理等方面的内容。

Slackware系统基础

在开始多用户环境配置之前,我们需要确保Slackware系统已经正确安装并进行了基本配置。Slackware以其简洁性和高度可定制性而闻名,但也因此需要管理员对系统有更深入的了解。

系统更新

首先,确保系统是最新的:
  1. # 更新软件包列表
  2. slackpkg update
  3. # 升级所有软件包
  4. slackpkg upgrade-all
复制代码

基本系统配置

检查并配置基本系统设置:
  1. # 设置主机名
  2. hostnamectl set-hostname slackware-server
  3. # 配置时区
  4. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  5. # 同步系统时间
  6. ntpdate pool.ntp.org
复制代码

用户管理基础

在Linux系统中,用户和组是权限管理的基本单位。理解这些概念对于构建多用户环境至关重要。

用户和组的概念

Linux系统中的每个用户都有一个唯一的用户ID(UID)和所属组。组是一组用户的集合,用于简化权限管理。

相关配置文件:

• /etc/passwd- 存储用户账户信息
• /etc/shadow- 存储加密的密码信息
• /etc/group- 存储组信息
• /etc/gshadow- 存储组的密码信息

查看当前用户和组
  1. # 查看当前用户
  2. whoami
  3. # 查看用户ID和组ID
  4. id
  5. # 查看所有用户
  6. cat /etc/passwd | cut -d: -f1
  7. # 查看所有组
  8. cat /etc/group | cut -d: -f1
复制代码

用户账户创建

在Slackware中,创建和管理用户账户有多种方法。我们将介绍命令行工具和直接编辑配置文件的方法。

使用useradd创建用户

useradd是创建新用户的标准命令:
  1. # 基本用户创建
  2. useradd username
  3. # 创建用户并指定家目录
  4. useradd -m username
  5. # 创建用户并指定登录shell
  6. useradd -m -s /bin/bash username
  7. # 创建用户并指定用户ID
  8. useradd -m -u 1001 username
  9. # 创建用户并指定主要组
  10. useradd -m -g users username
  11. # 创建用户并指定附加组
  12. useradd -m -G users,wheel,audio,video username
复制代码

设置用户密码

创建用户后,需要设置密码:
  1. # 为新用户设置密码
  2. passwd username
  3. # 设置强密码策略
  4. # 编辑/etc/login.defs文件,修改以下参数:
  5. PASS_MAX_DAYS   90
  6. PASS_MIN_DAYS   7
  7. PASS_WARN_AGE   7
复制代码

使用adduser脚本

Slackware提供了一个交互式的用户创建脚本adduser:
  1. # 运行adduser脚本
  2. adduser
  3. # 按照提示输入用户信息
  4. Login name for new user []: username
  5. User ID ('UID') [ defaults to next available ]:
  6. Initial group [ users ]:
  7. Additional UNIX groups []:
  8. Home directory [ /home/username ]
  9. Shell [ /bin/bash ]
  10. Expiry date (YYYY-MM-DD) []:
复制代码

批量创建用户

在需要创建多个用户的情况下,可以编写脚本实现批量创建:
  1. #!/bin/bash
  2. # create_users.sh - 批量创建用户脚本
  3. # 用户列表
  4. users=(
  5.     "user1"
  6.     "user2"
  7.     "user3"
  8. )
  9. # 为每个用户创建账户
  10. for user in "${users[@]}"; do
  11.     # 检查用户是否已存在
  12.     if id "$user" &>/dev/null; then
  13.         echo "用户 $user 已存在,跳过创建。"
  14.     else
  15.         # 创建用户
  16.         useradd -m -s /bin/bash -G users "$user"
  17.         
  18.         # 设置随机密码
  19.         password=$(openssl rand -base64 12)
  20.         echo "$user:$password" | chpasswd
  21.         
  22.         # 强制用户在首次登录时更改密码
  23.         chage -d 0 "$user"
  24.         
  25.         echo "用户 $user 创建成功,初始密码: $password"
  26.     fi
  27. done
复制代码

修改用户属性

使用usermod命令可以修改现有用户的属性:
  1. # 修改用户家目录
  2. usermod -d /new/home/dir username
  3. # 修改用户登录shell
  4. usermod -s /bin/zsh username
  5. # 将用户添加到附加组
  6. usermod -a -G wheel username
  7. # 锁定用户账户
  8. usermod -L username
  9. # 解锁用户账户
  10. usermod -U username
  11. # 重命名用户
  12. usermod -l newname oldname
复制代码

删除用户

使用userdel命令删除用户:
  1. # 仅删除用户账户,保留家目录
  2. userdel username
  3. # 删除用户账户及其家目录
  4. userdel -r username
复制代码

权限设置

在多用户环境中,正确设置权限是确保系统安全和数据隔离的关键。

文件权限基础

Linux系统使用传统的Unix权限模型,包括读®、写(w)和执行(x)权限,分别对应所有者、组和其他用户。
  1. # 查看文件权限
  2. ls -l
  3. # 修改文件权限
  4. chmod 755 filename
  5. chmod u=rwx,g=rx,o=rx filename
  6. # 修改文件所有者
  7. chown username filename
  8. # 修改文件所属组
  9. chown :groupname filename
  10. chgrp groupname filename
  11. # 递归修改目录权限
  12. chmod -R 755 directory
  13. chown -R username directory
复制代码

特殊权限

除了基本权限外,Linux还支持特殊权限位:SUID、SGID和Sticky Bit。
  1. # 设置SUID权限(执行文件时以所有者身份运行)
  2. chmod u+s filename
  3. chmod 4755 filename
  4. # 设置SGID权限(在目录中创建的文件继承目录的组)
  5. chmod g+s directory
  6. chmod 2755 directory
  7. # 设置Sticky Bit(只有文件所有者才能删除文件)
  8. chmod +t directory
  9. chmod 1777 directory
复制代码

配置sudo

sudo允许普通用户以超级用户或其他用户的身份执行命令。在Slackware中,需要手动配置sudo。

首先,安装sudo(如果尚未安装):
  1. # 安装sudo
  2. slackpkg install sudo
复制代码

然后,配置sudo:
  1. # 编辑sudoers文件
  2. visudo
  3. # 添加用户到wheel组,允许wheel组成员使用sudo
  4. %wheel ALL=(ALL) ALL
  5. # 或者允许特定用户使用sudo
  6. username ALL=(ALL) ALL
  7. # 允许用户执行特定命令而不需要密码
  8. username ALL=(ALL) NOPASSWD: /usr/bin/apt, /usr/bin/systemctl restart httpd
复制代码

文件系统ACL

访问控制列表(ACL)提供了比传统权限更精细的控制。
  1. # 安装ACL工具
  2. slackpkg install acl
  3. # 查看文件ACL
  4. getfacl filename
  5. # 设置文件ACL
  6. setfacl -m u:username:rw filename
  7. setfacl -m g:groupname:rx filename
  8. # 设置默认ACL(应用于目录中新建的文件)
  9. setfacl -d -m u:username:rw directory
  10. setfacl -d -m g:groupname:rx directory
  11. # 删除ACL
  12. setfacl -x u:username filename
  13. setfacl -b filename  # 删除所有ACL
复制代码

共享目录设置

在多用户环境中,经常需要设置共享目录,允许特定组的用户访问和修改文件。
  1. # 创建共享目录
  2. mkdir /shared
  3. mkdir /shared/project
  4. # 创建共享组
  5. groupadd projectteam
  6. # 设置目录所属组
  7. chown :projectteam /shared/project
  8. # 设置目录权限
  9. chmod 2770 /shared/project  # SGID确保新文件继承组
  10. # 添加用户到共享组
  11. usermod -a -G projectteam user1
  12. usermod -a -G projectteam user2
  13. # 设置默认ACL(可选)
  14. setfacl -d -m u::rwx,g::rwx,o::000 /shared/project
  15. setfacl -m u::rwx,g::rwx,o::000 /shared/project
复制代码

磁盘配额管理

在多用户环境中,为了避免用户占用过多磁盘空间,需要实施磁盘配额。

配置文件系统配额

首先,确保文件系统支持配额:
  1. # 编辑/etc/fstab,为需要配额的文件系统添加usrquota和grpquota选项
  2. /dev/sda1  /  ext4  defaults,usrquota,grpquota  1  1
  3. # 重新挂载文件系统
  4. mount -o remount /
  5. # 创建配额文件
  6. quotacheck -cum /
  7. quotacheck -cgm /
复制代码

启用配额
  1. # 启用配额
  2. quotaon -v /
  3. # 检查配额状态
  4. quotaon -p
  5. repquota -a
复制代码

设置用户配额
  1. # 为用户设置配额
  2. edquota username
  3. # 或者使用setquota命令
  4. setquota username 100M 110M 0 0 /home
  5. # 设置软限制为100MB,硬限制为110MB
复制代码

配额报告和监控
  1. # 查看用户配额使用情况
  2. quota -u username
  3. # 查看所有用户配额使用情况
  4. repquota -a
  5. # 生成配额报告
  6. warnquota
复制代码

自动化配额管理

可以创建脚本来定期检查配额使用情况并发送警告:
  1. #!/bin/bash
  2. # quota_check.sh - 定期检查配额使用情况
  3. # 设置配额使用阈值(百分比)
  4. THRESHOLD=80
  5. # 获取所有用户
  6. users=$(awk -F: '$3 >= 1000 && $3 <= 60000 {print $1}' /etc/passwd)
  7. # 检查每个用户的配额使用情况
  8. for user in $users; do
  9.     # 获取配额使用情况
  10.     usage=$(quota -u $user | tail -n 2 | head -n 1 | awk '{print $2}')
  11.     limit=$(quota -u $user | tail -n 2 | head -n 1 | awk '{print $3}')
  12.    
  13.     # 计算使用百分比
  14.     if [ "$limit" -gt 0 ]; then
  15.         percent=$((usage * 100 / limit))
  16.         
  17.         # 如果超过阈值,发送警告邮件
  18.         if [ "$percent" -ge "$THRESHOLD" ]; then
  19.             echo "警告:用户 $user 的磁盘使用率已达到 $percent%" | mail -s "配额警告" $user
  20.         fi
  21.     fi
  22. done
复制代码

将此脚本添加到cron定期执行:
  1. # 编辑crontab
  2. crontab -e
  3. # 添加以下行,每天早上8点检查配额
  4. 0 8 * * * /path/to/quota_check.sh
复制代码

安全管理

在多用户环境中,安全管理是至关重要的。本节将介绍密码策略、SSH安全、系统加固等方面的内容。

密码策略

强密码策略是系统安全的第一道防线。
  1. # 安装密码质量检查工具
  2. slackpkg install libpwquality
  3. # 配置密码策略
  4. # 编辑/etc/security/pwquality.conf文件
  5. minlen = 12
  6. minclass = 3
  7. dcredit = -1
  8. ucredit = -1
  9. lcredit = -1
  10. ocredit = -1
  11. maxrepeat = 3
  12. gecoscheck = 1
  13. dictcheck = 1
  14. # 编辑/etc/login.defs文件
  15. PASS_MAX_DAYS   90
  16. PASS_MIN_DAYS   7
  17. PASS_WARN_AGE   7
  18. ENCRYPT_METHOD SHA512
复制代码

SSH安全配置

SSH是远程管理的主要方式,需要确保其安全性。
  1. # 编辑SSH配置文件
  2. nano /etc/ssh/sshd_config
  3. # 修改以下配置
  4. Port 2222  # 更改默认端口
  5. PermitRootLogin no  # 禁止root登录
  6. PasswordAuthentication yes  # 允许密码认证(如果需要)
  7. PubkeyAuthentication yes  # 允许密钥认证
  8. PermitEmptyPasswords no  # 禁止空密码
  9. MaxAuthTries 3  # 最大认证尝试次数
  10. AllowUsers user1 user2  # 允许登录的用户
  11. AllowGroups sshusers  # 允许登录的组
  12. # 重启SSH服务
  13. /etc/rc.d/rc.sshd restart
复制代码

配置SSH密钥认证

使用SSH密钥认证比密码认证更安全。
  1. # 在客户端生成SSH密钥对
  2. ssh-keygen -t rsa -b 4096
  3. # 将公钥复制到服务器
  4. ssh-copy-id -i ~/.ssh/id_rsa.pub username@server
  5. # 或者手动复制
  6. # 在服务器上创建.ssh目录
  7. mkdir -p /home/username/.ssh
  8. chmod 700 /home/username/.ssh
  9. # 添加公钥到authorized_keys
  10. echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ..." > /home/username/.ssh/authorized_keys
  11. chmod 600 /home/username/.ssh/authorized_keys
  12. chown -R username:username /home/username/.ssh
复制代码

系统加固
  1. # 安装防火墙
  2. slackpkg install iptables
  3. # 创建基本防火墙规则
  4. cat > /etc/rc.d/rc.firewall << 'EOF'
  5. #!/bin/sh
  6. # 基本防火墙规则
  7. # 清空所有规则
  8. iptables -F
  9. iptables -X
  10. iptables -t nat -F
  11. iptables -t nat -X
  12. iptables -t mangle -F
  13. iptables -t mangle -X
  14. # 设置默认策略
  15. iptables -P INPUT DROP
  16. iptables -P FORWARD DROP
  17. iptables -P OUTPUT ACCEPT
  18. # 允许本地回环
  19. iptables -A INPUT -i lo -j ACCEPT
  20. iptables -A OUTPUT -o lo -j ACCEPT
  21. # 允许已建立的连接
  22. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  23. # 允许SSH
  24. iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
  25. # 允许HTTP和HTTPS
  26. iptables -A INPUT -p tcp --dport 80 -j ACCEPT
  27. iptables -A INPUT -p tcp --dport 443 -j ACCEPT
  28. # 允许ICMP(ping)
  29. iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
  30. # 记录并拒绝其他连接
  31. iptables -A INPUT -j LOG --log-prefix "INPUT_DROP: "
  32. iptables -A INPUT -j DROP
  33. EOF
  34. # 使防火墙脚本可执行
  35. chmod +x /etc/rc.d/rc.firewall
  36. # 启动防火墙
  37. /etc/rc.d/rc.firewall
  38. # 添加到启动脚本
  39. echo "/etc/rc.d/rc.firewall" >> /etc/rc.d/rc.local
复制代码

安全审计
  1. # 安装审计工具
  2. slackpkg install auditd
  3. # 配置审计规则
  4. # 编辑/etc/audit/audit.rules文件
  5. # 删除所有规则
  6. -D
  7. # 设置缓冲区大小
  8. -b 8192
  9. # 监控文件访问
  10. -w /etc/passwd -p wa -k identity
  11. -w /etc/shadow -p wa -k identity
  12. -w /etc/group -p wa -k identity
  13. -w /etc/sudoers -p wa -k identity
  14. # 监控系统调用
  15. -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -F auid>=1000 -F auid!=4294967295 -k perm_mod
  16. -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -F auid>=1000 -F auid!=4294967295 -k perm_mod
  17. # 监控登录事件
  18. -w /var/log/lastlog -p wa -k logins
  19. -w /var/log/faillog -p wa -k logins
  20. # 启动审计服务
  21. chmod +x /etc/rc.d/rc.auditd
  22. /etc/rc.d/rc.auditd start
  23. # 查看审计日志
  24. ausearch -k identity -ts recent
  25. aureport -m
复制代码

禁用不必要的服务
  1. # 列出所有运行的服务
  2. ls /etc/rc.d/rc.*
  3. # 禁用不必要的服务
  4. chmod -x /etc/rc.d/rc.rpc
  5. chmod -x /etc/rc.d/rc.samba
  6. chmod -x /etc/rc.d/rc.nfsd
  7. chmod -x /etc/rc.d/rc.inetd
  8. chmod -x /etc/rc.d/rc.sendmail
  9. # 查看监听的端口
  10. netstat -tulnp
  11. ss -tulnp
复制代码

安装和配置fail2ban

fail2ban可以防止暴力破解攻击。
  1. # 安装fail2ban
  2. slackpkg install fail2ban
  3. # 配置fail2ban
  4. # 复制配置文件
  5. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  6. # 编辑jail.local
  7. [DEFAULT]
  8. bantime = 1h
  9. findtime = 10m
  10. maxretry = 3
  11. [sshd]
  12. enabled = true
  13. port = 2222
  14. logpath = %(sshd_log)s
  15. maxretry = 3
  16. # 启动fail2ban
  17. chmod +x /etc/rc.d/rc.fail2ban
  18. /etc/rc.d/rc.fail2ban start
  19. # 查看被禁止的IP
  20. fail2ban-client status sshd
复制代码

高级主题

PAM配置

可插拔认证模块(PAM)提供了灵活的认证机制。
  1. # 安装PAM
  2. slackpkg install Linux-PAM
  3. # 配置PAM
  4. # 编辑/etc/pam.d/system-auth
  5. auth       required   pam_env.so
  6. auth       sufficient pam_unix.so try_first_pass nullok
  7. auth       required   pam_deny.so
  8. account    required   pam_unix.so
  9. account    sufficient pam_localuser.so
  10. account    sufficient pam_succeed_if.so uid < 1000 quiet
  11. account    required   pam_permit.so
  12. password   requisite  pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
  13. password   sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
  14. password   required   pam_deny.so
  15. session    optional   pam_keyinit.so revoke
  16. session    required   pam_limits.so
  17. -session   optional  pam_systemd.so
  18. session    [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
  19. session    required   pam_unix.so
复制代码

用户活动监控
  1. # 安装acct工具
  2. slackpkg install acct
  3. # 启动进程 accounting
  4. chmod +x /etc/rc.d/rc.acct
  5. /etc/rc.d/rc.acct start
  6. # 查看用户命令历史
  7. lastcomm
  8. # 查看用户登录历史
  9. last
  10. lastb
  11. # 配置系统日志
  12. # 编辑/etc/syslog.conf
  13. auth,authpriv.*                 /var/log/auth.log
  14. *.info;mail.none;authpriv.none;cron.none    /var/log/messages
复制代码

资源限制
  1. # 配置用户资源限制
  2. # 编辑/etc/security/limits.conf
  3. # 限制用户进程数
  4. username soft nproc 100
  5. username hard nproc 150
  6. # 限制用户打开文件数
  7. username soft nofile 1024
  8. username hard nofile 2048
  9. # 限制CPU时间
  10. username soft cpu 10
  11. username hard cpu 15
  12. # 限制内存使用
  13. username soft as 1048576
  14. username hard as 2097152
复制代码

系统备份策略
  1. # 安装rsync
  2. slackpkg install rsync
  3. # 创建备份脚本
  4. cat > /usr/local/bin/backup.sh << 'EOF'
  5. #!/bin/bash
  6. # 系统备份脚本
  7. # 设置备份目录
  8. BACKUP_DIR="/backup"
  9. DATE=$(date +%Y%m%d_%H%M%S)
  10. # 创建备份目录
  11. mkdir -p $BACKUP_DIR
  12. # 备份系统文件
  13. tar -czf $BACKUP_DIR/system_backup_$DATE.tar.gz \
  14.     --exclude=/backup \
  15.     --exclude=/proc \
  16.     --exclude=/sys \
  17.     --exclude=/dev \
  18.     --exclude=/tmp \
  19.     --exclude=/run \
  20.     --exclude=/mnt \
  21.     --exclude=/media \
  22.     --exclude=/lost+found \
  23.     /
  24. # 备份用户数据
  25. tar -czf $BACKUP_DIR/home_backup_$DATE.tar.gz /home
  26. # 保留最近7天的备份,删除旧备份
  27. find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
  28. # 记录备份日志
  29. echo "Backup completed at $(date)" >> $BACKUP_DIR/backup.log
  30. EOF
  31. # 使备份脚本可执行
  32. chmod +x /usr/local/bin/backup.sh
  33. # 添加到cron定期执行
  34. crontab -e
  35. # 添加以下行,每天凌晨2点执行备份
  36. 0 2 * * * /usr/local/bin/backup.sh
复制代码

故障排除

用户无法登录
  1. # 检查用户账户是否被锁定
  2. passwd -S username
  3. # 如果被锁定,解锁用户
  4. passwd -u username
  5. # 检查用户shell是否存在
  6. grep username /etc/passwd
  7. # 检查家目录权限
  8. ls -ld /home/username
  9. # 修复家目录权限
  10. chown username:username /home/username
  11. chmod 700 /home/username
复制代码

权限问题
  1. # 检查文件权限
  2. ls -l filename
  3. # 修复文件权限
  4. chmod 644 filename
  5. chown username:groupname filename
  6. # 检查目录权限
  7. ls -ld directory
  8. # 修复目录权限
  9. chmod 755 directory
  10. chown username:groupname directory
  11. # 检查特殊权限
  12. ls -ld /tmp
  13. chmod 1777 /tmp  # 设置Sticky Bit
复制代码

磁盘配额问题
  1. # 检查配额状态
  2. quotaon -p
  3. # 检查用户配额
  4. quota -u username
  5. # 检查配额文件一致性
  6. quotacheck -vum /
  7. # 重新生成配额文件
  8. rm /aquota.user
  9. quotacheck -cum /
  10. quotaon -v /
复制代码

SSH连接问题
  1. # 检查SSH服务状态
  2. /etc/rc.d/rc.sshd status
  3. # 检查SSH配置
  4. sshd -t
  5. # 检查SSH日志
  6. tail -f /var/log/messages
  7. tail -f /var/log/secure
  8. # 检查防火墙规则
  9. iptables -L -n
复制代码

系统资源问题
  1. # 检查磁盘使用情况
  2. df -h
  3. # 检查inode使用情况
  4. df -i
  5. # 检查内存使用情况
  6. free -h
  7. # 检查CPU使用情况
  8. top
  9. htop
  10. # 检查进程
  11. ps aux
  12. ps -ef
复制代码

总结

在Slackware系统上构建稳定的多用户环境需要系统管理员对用户管理、权限设置和安全管理有深入的理解。通过本文介绍的方法,您可以创建一个安全、高效的多用户工作环境。

最佳实践

1. 最小权限原则:只授予用户完成其工作所需的最低权限。
2. 定期审计:定期检查用户账户、权限和系统日志。
3. 备份策略:制定并执行可靠的备份策略。
4. 安全更新:定期更新系统和软件包以修复安全漏洞。
5. 监控和警报:设置系统监控和警报机制,及时发现和解决问题。

持续改进

多用户环境的管理是一个持续改进的过程。随着业务需求的变化和安全威胁的演变,需要不断调整和优化系统配置。定期评估系统安全性和性能,根据需要实施改进措施。

通过遵循本文提供的指南和最佳实践,您可以在Slackware系统上构建一个稳定、安全的多用户环境,为用户提供可靠的工作平台。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则