Linux系统管理指南

目录

  1. 用户管理
  2. 用户权限管理
  3. 组管理
  4. 系统管控
  5. 安全最佳实践

用户管理

在 Linux 系统中创建一个新用户并确保其拥有独立的 /home 目录和运行环境是一个非常标准的操作。

通常有两种主要方法:使用友好的 adduser 命令(推荐)或底层的 useradd 命令。


方法一:使用 adduser 命令(最简单,推荐)

在 Ubuntu、Debian 等系统上,adduser 是一个交互式脚本,会自动为你创建家目录、设置 Shell 并引导你设置密码。

  1. 执行创建命令:

    Bash

    sudo adduser username

    (将 username 替换为你想要的名字)

  2. 按照提示操作:

    • 系统会要求你输入并确认密码。
    • 会询问一些用户信息(全名、房间号等),这些可以按 Enter 跳过。
    • 最后输入 Y 确认信息正确。

优点: 自动创建 /home/username 目录,并从 /etc/skel 复制默认配置文件(如 .bashrc),确保环境独立且立即可用。


方法二:使用 useradd 命令(通用,更底层)

如果你使用的是 CentOS、RHEL 或习惯使用底层工具,可以使用 useradd注意: 默认情况下它可能不会创建家目录,所以需要带上参数。

  1. 执行创建命令:

    Bash

    sudo useradd -m -s /bin/bash username
    • -m:强制创建用户的家目录 /home/username
    • -s /bin/bash:指定用户的默认 Shell(通常选 bash)。
  2. 设置密码:

    Bash

    sudo passwd username

    输入两次密码即可。


确保“独立性”与安全性

虽然新用户已经有了独立的目录,但为了确保该账号与其他账号完全隔离(即其他普通用户无法进入该目录),你可以调整权限:

1. 限制目录访问权限

默认情况下,有些系统的 /home 目录权限允许其他用户读取。如果你想让该账号完全独立私有,可以执行:

Bash

sudo chmod 700 /home/username

这样,除了该用户本人和 root,任何人都无法进入或查看该目录下的文件。

2. 赋予 sudo 权限(可选)

如果你希望这个独立账号也能执行管理任务,可以将其加入 sudo 组:

  • Ubuntu/Debian: sudo usermod -aG sudo username
  • CentOS/RHEL: sudo usermod -aG wheel username

验证新用户

你可以尝试切换到新用户来测试环境是否配置成功:

Bash

su - username

输入密码后,使用 pwd 查看是否在 /home/username 目录下,使用 ls -a 查看是否有独立的配置文件(如 .profile)。


您是想为这个账号配置特定的软件运行环境(如独立的 Python 或 Node.js 环境),还是只需要基础的系统账号隔离?

1. 创建新用户

基本创建用户

# 创建新用户
sudo useradd username

# 创建用户并自动创建家目录
sudo useradd -m username

# 创建用户并指定家目录
sudo useradd -m -d /home/customdir username

# 创建用户并指定shell
sudo useradd -m -s /bin/bash username

# 创建用户并添加注释
sudo useradd -m -c "User Full Name" username

创建用户并设置密码

# 创建用户后设置密码
sudo passwd username

# 一次性创建用户并设置密码
sudo useradd -m username && sudo passwd username

创建系统用户(用于运行服务)

# 创建无登录权限的系统用户
sudo useradd -r -s /usr/sbin/nologin servicename

2. 删除用户

# 仅删除用户账号
sudo userdel username

# 删除用户及其家目录
sudo userdel -r username

# 强制删除(即使用户已登录)
sudo userdel -f username

3. 修改用户信息

# 修改用户名
sudo usermod -l newname oldname

# 修改用户家目录
sudo usermod -d /new/home/path -m username

# 修改用户shell
sudo usermod -s /bin/zsh username

# 锁定用户账号
sudo usermod -L username

# 解锁用户账号
sudo usermod -U username

# 修改用户UID
sudo usermod -u 1500 username

# 设置账号过期时间
sudo usermod -e 2024-12-31 username

4. 查看用户信息

# 查看当前登录用户
whoami

# 查看所有用户
cat /etc/passwd

# 查看用户详细信息
id username

# 查看用户所属组
groups username

# 查看最近登录用户
last

# 查看当前登录的所有用户
who
w

# 查看用户密码信息
sudo chage -l username

用户权限管理

1. 文件和目录权限

权限表示方式

rwx rwx rwx
│   │   │
│   │   └─── 其他用户权限
│   └─────── 组权限
└─────────── 所有者权限

r = 读权限 (4)
w = 写权限 (2)
x = 执行权限 (1)

修改文件权限

# 使用符号模式
chmod u+x file.sh        # 给所有者添加执行权限
chmod g-w file.txt       # 移除组的写权限
chmod o=r file.txt       # 设置其他用户只有读权限
chmod a+r file.txt       # 给所有用户添加读权限

# 使用数字模式
chmod 755 file.sh        # rwxr-xr-x
chmod 644 file.txt       # rw-r--r--
chmod 600 private.key    # rw-------
chmod 777 public.txt     # rwxrwxrwx(不推荐)

# 递归修改目录权限
chmod -R 755 /path/to/directory

修改文件所有者

# 修改文件所有者
sudo chown username file.txt

# 修改文件所有者和组
sudo chown username:groupname file.txt

# 递归修改目录所有者
sudo chown -R username:groupname /path/to/directory

# 仅修改组
sudo chgrp groupname file.txt

2. sudo权限管理

添加用户到sudo组

# Ubuntu/Debian系统
sudo usermod -aG sudo username

# CentOS/RHEL系统
sudo usermod -aG wheel username

# 验证sudo权限
sudo -l -U username

编辑sudoers文件

# 使用visudo安全编辑sudoers(推荐)
sudo visudo

sudoers配置示例

# 给用户完全sudo权限
username ALL=(ALL:ALL) ALL

# 给用户无需密码的sudo权限
username ALL=(ALL) NOPASSWD: ALL

# 限制用户只能执行特定命令
username ALL=(ALL) /usr/bin/apt, /usr/bin/systemctl

# 给组sudo权限
%groupname ALL=(ALL:ALL) ALL

# 允许用户以特定用户身份运行命令
username ALL=(root) /usr/bin/service

3. 特殊权限

# SUID (Set User ID) - 以文件所有者身份执行
chmod u+s file
chmod 4755 file

# SGID (Set Group ID) - 以文件所属组身份执行
chmod g+s file
chmod 2755 file

# Sticky Bit - 只有所有者可以删除文件(常用于/tmp)
chmod +t directory
chmod 1777 directory

组管理

1. 创建和删除组

# 创建新组
sudo groupadd groupname

# 创建指定GID的组
sudo groupadd -g 1500 groupname

# 删除组
sudo groupdel groupname

2. 管理组成员

# 添加用户到组
sudo usermod -aG groupname username

# 添加用户到多个组
sudo usermod -aG group1,group2,group3 username

# 设置用户的主组
sudo usermod -g primarygroup username

# 从组中移除用户(需要重新设置用户的组列表)
sudo gpasswd -d username groupname

# 查看组成员
getent group groupname

3. 查看组信息

# 查看所有组
cat /etc/group

# 查看当前用户所属组
groups

# 查看指定用户所属组
groups username

# 查看组详细信息
getent group groupname

系统管控

1. 进程管理

# 查看进程
ps aux                    # 查看所有进程
ps -ef                    # 查看所有进程(另一种格式)
pstree                    # 树状显示进程
top                       # 实时查看进程
htop                      # 增强版top(需安装)

# 查找特定进程
ps aux | grep processname
pgrep processname

# 终止进程
kill PID                  # 正常终止
kill -9 PID               # 强制终止
killall processname       # 终止所有同名进程
pkill processname         # 通过名称终止进程

# 后台运行进程
command &                 # 后台运行
nohup command &           # 后台运行且不受终端关闭影响

# 查看后台任务
jobs
fg %1                     # 将后台任务调到前台
bg %1                     # 继续运行后台任务

2. 服务管理(systemd)

# 启动服务
sudo systemctl start servicename

# 停止服务
sudo systemctl stop servicename

# 重启服务
sudo systemctl restart servicename

# 重新加载配置
sudo systemctl reload servicename

# 查看服务状态
sudo systemctl status servicename

# 开机自启
sudo systemctl enable servicename

# 禁用开机自启
sudo systemctl disable servicename

# 查看所有服务
systemctl list-units --type=service

# 查看启动失败的服务
systemctl --failed

3. 系统监控

# CPU和内存监控
top                       # 实时监控
htop                      # 增强版监控
vmstat 1                  # 每秒更新系统状态

# 内存使用
free -h                   # 查看内存使用
cat /proc/meminfo         # 详细内存信息

# 磁盘使用
df -h                     # 查看磁盘空间
du -sh /path              # 查看目录大小
du -h --max-depth=1       # 查看当前目录各子目录大小

# 网络监控
netstat -tuln             # 查看监听端口
ss -tuln                  # 现代版netstat
iftop                     # 实时网络流量(需安装)
nethogs                   # 按进程显示网络使用(需安装)

# 系统负载
uptime                    # 系统运行时间和负载
w                         # 查看登录用户和负载

4. 日志管理

# 查看系统日志
sudo journalctl           # 查看所有日志
sudo journalctl -f        # 实时查看日志
sudo journalctl -u servicename  # 查看特定服务日志
sudo journalctl --since "2024-01-01"  # 查看指定日期后的日志
sudo journalctl --since today  # 查看今天的日志

# 传统日志文件
tail -f /var/log/syslog   # 实时查看系统日志
tail -f /var/log/auth.log # 实时查看认证日志
less /var/log/messages    # 查看消息日志

# 清理日志
sudo journalctl --vacuum-time=7d  # 清理7天前的日志
sudo journalctl --vacuum-size=1G  # 保留最多1G日志

5. 防火墙管理

UFW(Ubuntu/Debian)

# 启用防火墙
sudo ufw enable

# 禁用防火墙
sudo ufw disable

# 查看状态
sudo ufw status verbose

# 允许端口
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 拒绝端口
sudo ufw deny 23/tcp

# 允许特定IP访问
sudo ufw allow from 192.168.1.100

# 删除规则
sudo ufw delete allow 80/tcp

# 重置防火墙
sudo ufw reset

firewalld(CentOS/RHEL)

# 启动防火墙
sudo systemctl start firewalld

# 查看状态
sudo firewall-cmd --state

# 允许服务
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

# 允许端口
sudo firewall-cmd --permanent --add-port=8080/tcp

# 重新加载配置
sudo firewall-cmd --reload

# 查看规则
sudo firewall-cmd --list-all

6. 定时任务(Cron)

# 编辑当前用户的crontab
crontab -e

# 查看当前用户的crontab
crontab -l

# 删除当前用户的crontab
crontab -r

# 编辑其他用户的crontab(需要root权限)
sudo crontab -u username -e

Crontab格式

# 分 时 日 月 周 命令
# *  *  *  *  *  command

# 示例:
0 2 * * * /path/to/backup.sh          # 每天凌晨2点执行
*/5 * * * * /path/to/script.sh        # 每5分钟执行
0 0 * * 0 /path/to/weekly.sh          # 每周日午夜执行
0 9-17 * * 1-5 /path/to/work.sh       # 工作日9点到17点每小时执行

7. 系统更新和维护

Ubuntu/Debian

# 更新软件包列表
sudo apt update

# 升级已安装的软件包
sudo apt upgrade

# 升级系统(包括内核)
sudo apt full-upgrade

# 自动清理不需要的包
sudo apt autoremove

# 清理下载的软件包缓存
sudo apt clean

CentOS/RHEL

# 更新软件包
sudo yum update

# 或使用dnf(新版本)
sudo dnf update

# 清理缓存
sudo yum clean all

8. 系统资源限制

# 查看当前限制
ulimit -a

# 设置最大打开文件数
ulimit -n 4096

# 编辑系统限制文件
sudo vim /etc/security/limits.conf

# 限制配置示例:
# username soft nofile 4096
# username hard nofile 8192
# username soft nproc 2048
# username hard nproc 4096

安全最佳实践

1. 用户安全

# 强制用户下次登录时更改密码
sudo passwd -e username

# 设置密码策略
sudo vim /etc/login.defs

# 设置密码最小长度(在/etc/security/pwquality.conf)
sudo vim /etc/security/pwquality.conf
# minlen = 12
# dcredit = -1  # 至少一个数字
# ucredit = -1  # 至少一个大写字母
# lcredit = -1  # 至少一个小写字母
# ocredit = -1  # 至少一个特殊字符

# 禁止root直接SSH登录
sudo vim /etc/ssh/sshd_config
# PermitRootLogin no
sudo systemctl restart sshd

2. SSH安全

# 修改SSH配置
sudo vim /etc/ssh/sshd_config

# 推荐配置:
# Port 2222                           # 修改默认端口
# PermitRootLogin no                  # 禁止root登录
# PasswordAuthentication no           # 禁用密码登录(使用密钥)
# PubkeyAuthentication yes            # 启用密钥认证
# MaxAuthTries 3                      # 最大认证尝试次数
# ClientAliveInterval 300             # 客户端保活间隔
# ClientAliveCountMax 2               # 最大保活次数

# 重启SSH服务
sudo systemctl restart sshd

# 设置SSH密钥认证
ssh-keygen -t rsa -b 4096
ssh-copy-id -i ~/.ssh/id_rsa.pub username@server

3. 系统审计

# 安装auditd
sudo apt install auditd         # Ubuntu/Debian
sudo yum install audit          # CentOS/RHEL

# 启动审计服务
sudo systemctl start auditd
sudo systemctl enable auditd

# 查看审计日志
sudo ausearch -m USER_LOGIN
sudo ausearch -ua username

4. 常用安全检查

# 检查是否有空密码账户
sudo awk -F: '($2 == "") {print $1}' /etc/shadow

# 查看最近登录失败的记录
sudo lastb

# 检查可疑进程
ps aux | grep -E 'bash|sh|python|perl'

# 检查监听端口
sudo netstat -tulpn

# 检查计划任务
sudo crontab -l -u root
ls -la /etc/cron.*

5. 备份重要文件

# 备份用户信息
sudo cp /etc/passwd /etc/passwd.bak
sudo cp /etc/shadow /etc/shadow.bak
sudo cp /etc/group /etc/group.bak

# 备份sudo配置
sudo cp /etc/sudoers /etc/sudoers.bak

# 创建系统备份脚本
#!/bin/bash
BACKUP_DIR="/backup/system"
DATE=$(date +%Y%m%d)
tar -czf $BACKUP_DIR/etc-$DATE.tar.gz /etc
tar -czf $BACKUP_DIR/home-$DATE.tar.gz /home

快速参考

常用命令速查

功能 命令
创建用户 sudo useradd -m username
设置密码 sudo passwd username
删除用户 sudo userdel -r username
添加sudo权限 sudo usermod -aG sudo username
修改文件权限 chmod 755 file
修改文件所有者 sudo chown user:group file
查看进程 ps auxtop
启动服务 sudo systemctl start service
查看日志 sudo journalctl -f
查看磁盘 df -h
查看内存 free -h
查看端口 sudo netstat -tulpn

注意事项

  1. 使用sudo谨慎操作:所有系统级别的操作都需要root权限,请确保理解命令的作用
  2. 备份重要数据:在进行重大系统更改前,请先备份重要配置文件
  3. 测试环境:建议先在测试环境验证命令,再在生产环境执行
  4. 日志记录:重要操作建议记录日志,便于问题追溯
  5. 权限最小化:遵循最小权限原则,不要随意给予过高权限
  6. 定期更新:保持系统和软件包及时更新,修补安全漏洞
  7. 密码策略:使用强密码,定期更换,不要重复使用
  8. 监控审计:定期检查系统日志和用户活动
最后修改日期: 2026年1月10日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。