6. linux shell命令(2)基本系统维护命令与用户管理
1. shell基本系统维护命令
1.1 man、passwd、su、echo命令的用法
获取联机帮助
-
man
-
使用man命令可以找到特定的联机帮助页,并提供简短的命令说明。一般语法格式为:
man commandname
-
联机帮助页提供了指定命令commandname的相关信息,包括:名称、函数、语法以及可选参数描述等。无论帮助有多长,都遵循这个格式显示。在页面很多的情况下使用PageUp和PageDown键翻页。最后,使用“:q”退出帮助页面。
-
-
通常联机帮助信息包括以下几个部分:
- NAME:命令的名称
- SYNOPSIS:命令的语法格式
- DESCRIPTION:命令的一般描述以及用途
- OPTIONS:描述命令所有的参数或选项
- SEE ALSO:列出联机帮助页中与该命令直接相关或功能相近的其他命令
- BUGS:解释命令或其输出中存在的任何已知的问题或缺陷
- EXAMPLES:普通的用法示例
- AUTHORS:联机帮助页以及命令的作者
基本系统维护命令
- passwd
- 出于系统安全考虑,Linux系统中的每一个帐号都必须同时具备用户名和密码。
- 可以使用passwd命令,为已有账户重新修改用户口令。
- 需要说明的是,超级用户root可以修改所有其他用户的口令,而普通用户只能修改自己的用户口令,如果确要修改超级用户或其他用户口令的话,需要具有超级用户的权限。
- passwd命令的一般语法格式为:
passwd username
- 单独使用passwd命令,意为修改当前用户自己的口令。下面命令实例用于修改用户自己的口令。
linux@ubuntu:~$ passwd
Changing password for linux #修改当前用户口令
(current) UNIX password: #用户输入旧口令
Enter new UNIX password: #用户输入新口令
Retype new UNIX password: #确认新口令
passwd:已成功更新密码
su
-
su命令用于临时改变用户身份,具有其他用户的权限。普通用户可以使用su命令临时具有超级用户的权限;超级用户也可以使用普通用户身份完成一些操作。当需要放弃当前用户身份,可以使用exit命令切换回来。su命令的一般语法格式为:
-
选项“-c”表示执行一个命令后就结束;-m表示仍保留环境变量不变;-表示转换用户身份时,同时使用该用户的环境。
-
单独使用su命令,默认为要转换为超级用户root。下面命令实例临时获取超级用户root的权限。可以从命令提示符中可以看出,“linux”用户使用su命令切换为root用户
linux@ubuntu:~$ su
Password: #当前用户输入超级用户的口令
root@ubuntu:/home/linux#
- echo
-
echo命令用于在标准输出——显示器上显示一段文字,一般起到提示作用。echo命令的一般语法格式为:
echo [-n] information
-
选项-n表示输出文字后不换行。提示信息字符串可以加引号,也可以不加。
-
linux@ubuntu:~$ echo "Hello everyone." #输入信息字符串使用引号
Hello everyone.
linux@ubuntu:~$ echo ‘$PATH’ #严格的原样输出
$PATH.
linux@ubuntu:~$ echo Hello everyone. #输入信息字符串不使用引号,字符串之间用一个空格隔开
Hello everyone.
1.2 date、clear、df、du命令的用法
- date
-
date命令用于显示和设置系统日期和时间。date命令的一般语法格式为:
date [-d | -s|-u ] datestr
-
选项-s表示按照datestr日期显示格式设置日期;单独使用date命令,用于显示系统时钟中当前日期。时间的格式为:“hh:mm:ss”,日期格式为:“mm/dd/yy”。
-
linux@ubuntu:~$ date #查看当前时间
2007年 09月 16日 星期日 18:44:45 CST
linux@ubuntu:~$ sudo date -s 1:19:18 #设置新时间,需要系统管理员权限
Password:
2007年 09月 16日 星期日 01:19:18 CST
clear
- clear命令用于清除屏幕上的信息。清屏后,sell命令提示符移动到屏幕左上角。clear命令的一般语法格式为:
clear
由于shell命令是逐行执行,执行结果也将随即显示。因此,用户在使用命令终端窗口时,终端窗口会很快就会被字符占满。clear可以帮助清理一下窗口中杂乱的字符显示。
df
- df命令用于查看磁盘空间的使用情况。查看磁盘空间是用户应当经常做的事情,因为谁也不希望看到根或/var分区在不经意间填满,以便及时清理。df命令的一般格式为:
df [-a | -T | -h | -k ] Filesystem
其中,参数Filesystem表示物理文件系统。各选项的含义如表所示。
选项 | 含义 |
---|---|
-a | 显示所有物理文件系统的使用情况,包括虚拟文件系统,如/proc 、/sys 等 |
-T | 显示物理文件系统的文件格式类型 |
-h | 物理文件系统大小按兆字节为单位显示 |
-k | 物理文件系统大小按千字节为单位显示 |
-l | 仅列出本地文件系统 |
- 从以下命令的执行结果可以看到,这台计算机只有一块硬盘(/dev/sda1),文件格式类型为Ext3,已经使用36%的存储空间。同时,可以发现计算机上还安装了CD-ROM(/dev/hdc)、USB存储器(/dev/sdb1)。其他分区均为专用的虚拟文件系统
linux@ubuntu:~$ df –T
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/sda1 ext3 7850996 2664868 4787316 36% /
varrun tmpfs 255960 104 255856 1% /var/run
varlock tmpfs 255960 0 255960 0% /var/lock
procbususb usbfs 255960 84 255876 1% /proc/bus/usb
udev tmpfs 255960 84 255876 1% /dev
devshm tmpfs 255960 0 255960 0% /dev/shm
lrm tmpfs 255960 33788 222172 14% /lib/modules/2.6.20-16-generic/volatile
/dev/hdc iso9660 712946 712946 0 100% /media/cdrom0
/dev/sdb1 vfat 249582 211602 37980 85% /media/disk
- du命令,列出目录和文件所使用的磁盘块数,每块占512个字节。
- 常用参数:
- -a :仅列出空闲的文件数
- -h :列出磁盘的使用情况(KB)
- -s :列出总的空闲空间(KB)
- 例:
- #du –h /etc
- 例:
2. linux的用户管理
用户管理相关文件介绍与用户管理相关命令介绍
用户管理
- 用户的属性
- 用户名
- 口令
- 用户ID(UID)
- 用户主目录(HOME)
- 用户shell
/etc/passwd文件
- /etc/passwd文件是系统能够识别的用户清单。用户登陆时,系统查询这个文件,确定用户的UID并验证用户口令
- 登陆名
- 经过加密的口令
- UID
- 默认的GID
- 个人信息
- 主目录
- 登陆shell
/etc/group文件
- 包含了UNIX组的名称和每个组中成员列表
- 每一行代表一个组,包括4个字段:
- 组名
- 加密的口令
- GID号
- 成员列表,彼此用逗号隔开
这是 Linux 系统中 /etc/group
文件的内容示例。/etc/group
是系统用于存储用户组信息的核心配置文件,每一行对应一个用户组,格式为 组名:密码占位符:组ID(GID):组成员
,各部分含义如下:
- 组名:用户组的名称(如
root
、daemon
等)。 - 密码占位符:通常用
x
表示(实际用户组密码存储在/etc/gshadow
中)。 - 组ID(GID):用户组的唯一标识编号(如
root
组的 GID 是0
,是系统最高权限组)。 - 组成员:属于该组的用户列表(多个用户用逗号分隔,若为空则表示只有组名对应的默认用户属于该组)。
比如行 daemon:x:2:messagebus
表示:组名为 daemon
,GID 是 2
,用户 messagebus
属于 daemon
组。
添加用户
- adduser
- 语法:adduser
- 实例:
- # adduser newuser
- 添加用户名为newuser的新用户
adduser配置文件
/etc/adduser.conf FIRST_UID=1000LAST_UID=29999USERS_GID=100DHOME=/homeDSHELL=/bin/bashSKEL=/etc/skel
SKEL模板
在 Linux 系统中,SKEL 模板(全称 skeleton
,意为“骨架”)是用于统一新用户初始环境的核心机制,其本质是一个系统级目录(默认路径为 /etc/skel
),存放着新用户家目录的“默认配置文件和目录”。
核心作用
当通过 useradd
等命令创建新用户时,系统会自动将 /etc/skel
目录下的所有文件(包括隐藏文件)和子目录复制到新用户的家目录(如 /home/新用户名
)中。这样,新用户登录后就能直接获得预设的基础配置,无需手动创建常用文件/目录,保证了用户环境的一致性。
常见包含的文件/目录
/etc/skel
中的内容由系统默认或管理员自定义,通常包含以下类型的文件(多为隐藏文件,以 .
开头):
- Shell 配置文件:如
.bashrc
(bash 交互配置,含别名、环境变量等)、.bash_profile
(登录时加载的配置)、.bash_logout
(退出登录时执行的命令),确保新用户的 shell 环境有基础设置。 - 用户目录:如
Documents
(文档)、Downloads
(下载)、Pictures
(图片)等默认文件夹,规范用户的文件存储结构。 - 其他工具配置:如
.vimrc
(vim 编辑器配置)、.profile
(通用登录配置,兼容多种 shell)等,根据系统预装工具不同而变化。
实际用途
系统管理员可通过修改 /etc/skel
目录的内容,统一新用户的初始环境:
- 例如,在
/etc/skel/.bashrc
中添加全局别名(如alias ll='ls -l'
),所有新用户都会继承这个别名; - 加入公司内部的欢迎信息(如
echo "Welcome to XXX Server"
),新用户登录时会自动显示; - 预设常用的环境变量(如
export PATH=$PATH:/opt/tools
),避免每个用户重复配置。
总结
SKEL 模板是 Linux 系统为新用户提供“标准化初始环境”的工具,通过 /etc/skel
目录实现配置的批量复制,既简化了用户创建流程,也方便管理员统一管理新用户的基础环境。
添加新用户的过程
- 系统
- 编辑passwd和shadow文件,定义用户帐号
- 设置一个初始口令
- 创建用户主目录,用chown和chmod命令改变主目录的属主和属性
- 为用户所进行的步骤
- 将默认的启动文件复制到用户主目录中
- 设置用户的邮件主目录并建立邮件别名
设置初始口令
- 使用passwd命令可以修改用户口令
- root用户可以修改任何用户的口令
- 语法:passwd [-k] [-l] [u] [-f] [-d] [-S] username
- 使用方法:
passwd username
修改用户属性
usermod
语法:usermod [-u uid [-o]] [-g group] [-G gropup,…][-d home [-m]] [-s shell] [-c comment][-l new_name] [-f inactive][-e expire][-p passwd] [-L|-U] name举例用户oldname改名为newname,注意要同时更改家目录:
usermod –d /home/newname –m –l newname oldname
删除用户
- deluser
- 语法: deluser
- 使用方法:
- deluser --remove-home user1
- 删除用户user1的同时删除用户的工作目录
添加用户组
- addgroup
- 语法: addgroup groupname
删除用户组
- delgroup
- 语法: delgroup groupname
- 用户相关的文件有哪些?
- 简述添加用户的过程。
用户相关的核心文件
Linux 系统中,用户和用户组的核心配置信息存储在以下文件中:
1. /etc/passwd
(用户基本信息)
- 内容:每行代表一个用户,包含 7 个字段,格式为
用户名:密码占位符:UID:GID:用户描述:家目录:登录 Shell
。 - 关键字段:
用户名
:登录时使用的名称(如root
、user1
)。UID
:用户唯一标识(0 为 root,1-999 为系统用户,1000+ 为普通用户)。家目录
:用户默认工作目录(如/home/user1
)。登录 Shell
:用户登录后使用的命令解释器(如/bin/bash
,/sbin/nologin
表示禁止登录)。
2. /etc/shadow
(用户密码信息)
- 内容:每行代表一个用户的密码及有效期信息,包含 9 个字段,格式为
用户名:加密密码:密码最后修改时间:密码最短有效期:密码最长有效期:警告天数:宽限天数:账户过期时间:保留字段
。 - 安全特性:
- 加密密码使用 SHA-512 算法存储,权限严格限制为仅 root 可读。
- 可设置密码过期策略(如强制 90 天修改密码)。
3. /etc/group
(用户组信息)
- 内容:每行代表一个用户组,包含 4 个字段,格式为
组名:密码占位符:GID:组成员列表
。 - 关键字段:
GID
:用户组唯一标识。组成员列表
:属于该组的用户(多个用户用逗号分隔,如user1,user2
)。
4. /etc/gshadow
(用户组密码信息)
- 内容:存储用户组的密码及管理员信息,格式为
组名:加密密码:组管理员:组成员列表
。 - 用途:
- 组密码允许非 root 用户通过
newgrp
命令临时切换到该组。 - 组管理员可通过
gpasswd
命令管理组成员。
- 组密码允许非 root 用户通过
5. /etc/skel
(新用户模板目录)
- 内容:存放新用户家目录的默认配置文件(如
.bashrc
、.profile
)和目录(如Documents
、Downloads
)。 - 机制:
- 创建新用户时,系统自动将
/etc/skel
中的内容复制到用户家目录,确保初始环境标准化。 - 管理员可自定义模板文件(如添加全局别名
alias ll='ls -l'
)。
- 创建新用户时,系统自动将
6. 用户家目录(如 /home/用户名
)
- 内容:用户个人文件、配置文件及工作目录。
- 权限:默认权限为
700
(仅用户可读、写、执行),由umask
值控制。
7. 用户邮箱(如 /var/spool/mail/用户名
)
- 内容:存储用户未读邮件的文件(需邮件服务支持)。
- 创建:默认由
useradd
命令根据/etc/login.defs
中的MAIL_DIR
设置自动创建。
添加用户的完整过程
1. 创建用户账户
使用 useradd
命令创建用户,支持以下关键参数:
-
基础命令:
sudo useradd -m -s /bin/bash -c "用户描述" username
-m
:自动创建家目录并复制/etc/skel
模板。-s /bin/bash
:指定登录 Shell(默认值可省略)。-c "用户描述"
:添加用户备注(如数据库管理员
)。
-
高级参数:
-u UID
:指定用户 ID(如-u 1001
)。-g 组名
:指定主组(如-g developers
)。-G 组1,组2
:指定附加组(如-G docker,sudo
)。
-
示例:
sudo useradd -m -G sudo,developers -c "开发工程师" devuser
2. 设置用户密码
使用 passwd
命令为用户设置登录密码:
sudo passwd username
- 交互流程:
- 输入新密码(不可见)。
- 再次输入确认密码。
- 密码需符合复杂度要求(长度、大小写、特殊字符)。
3. 验证用户信息
- 检查
/etc/passwd
:grep username /etc/passwd # 输出示例:devuser:x:1001:1001:开发工程师:/home/devuser:/bin/bash
- 检查家目录:
ls -ld /home/username # 输出示例:drwx------ 2 devuser devuser 4096 Sep 28 12:00 /home/devuser
- 验证登录:
su - username # 输入密码后登录,检查环境配置(如 `echo $PATH`)。
4. 管理用户组
-
添加用户到现有组:
sudo usermod -aG 组名 username
-a
:追加到组(避免覆盖原有附加组)。- 示例:
sudo usermod -aG docker devuser
(允许devuser
使用 Docker)。
-
创建新用户组:
sudo groupadd 组名
- 示例:
sudo groupadd testers
(创建测试组)。
- 示例:
5. 自定义用户环境(可选)
- 修改模板文件:
sudo nano /etc/skel/.bashrc # 添加全局别名或环境变量,新用户将自动继承。
- 强制用户下次登录修改密码:
sudo passwd -e username
- 用户下次登录时会被提示设置新密码。
6. 安全增强(可选)
- 锁定用户账户:
sudo passwd -l username
- 密码被锁定后,用户无法登录(密码字段显示
!!
)。
- 密码被锁定后,用户无法登录(密码字段显示
- 设置账户过期时间:
sudo usermod -e 2025-12-31 username
- 账户在指定日期后自动失效。
总结
Linux 用户管理的核心在于理解 /etc/passwd
、/etc/shadow
、/etc/group
等配置文件的结构,以及 useradd
、passwd
、usermod
等命令的灵活组合。通过标准化 /etc/skel
模板和合理使用组权限,可高效创建安全、一致的用户环境。