Linux操作系统基础
实验所用系统为Redhat-rhel8.2。
目录
Linux操作系统基础–Linux中的输入输出管理与获得帮助
一、命令行获得帮助
1、whatis
whatis+命令 ##查看命令的基本用途
查看过程中出现nothing appropriate表示
1、要查看内容没有帮助
2、系统帮助数据库未更新,在root用户下使用mandb命令更新
2、help
命令 --help ##查看命令的基本用法
[] --内容可加可不加
… --内容个数无限制
<> --必须在命令执行时加入的元素
3、man
man +命令 ##命令用法详解 (man是manual的缩写)
man -k passwd ##passwd关键字有多少级别的man
1 命令
2 系统调用
3 函数库调用
4 特殊文件(设备文件等)
5 文件
6 游戏
7 特殊的包
8 系统管理命令
9 内核信息规则
man +命令–进入到该命令的帮助
q --退出
/关键字 --搜索关键字,n 向下匹配,N 向上匹配
G --快速移动到man的最后
g --表示快速移动到man的最前
二、输入输出
1、字符设备
- 字符设备:显示字符到屏幕上的设备文件
- stdin – 标准输入
标号为0
键盘 鼠标 打字机 - stdout – 标准正确输出
标号为1(存放在/dev/pts/0) - stderr – 标准错误输出
标号为2
2、管理输出
- 输出重定向
输出重定向 > ##覆盖原文件内容
find /etc/ -name passwd > file ##将正确输出保存至file
find /etc/ -name passwd 2> file ##将错误输出保存至file
find /etc/ -name passwd &> file ##将所有输出保存至file
- 追加输出
追加 >> ##不覆盖原文件内容
find /etc/ -name passwd >> file ##正确输出追加保存至file,不覆盖file原内容
find /etc/ -name passwd 2>> file ##将错误输出追加保存至file
find /etc/ -name passwd &>> file ##将所有输出追加保存至file
#find + 目录 + -name + 关键字或文件名
#查找该目录里名字含有该关键字或者该文件名的文件
- “|”管道符
“|” 管道符(只能通过正确输出) ##将命令隔开,将前一个命令的输出作为后面命令的输入
ls /bin/ |wc -l ##将一个命令的输出作为第二个命令的输入
ls /bin/ | tee westos |wc -l ##ls命令的输出 被tee复制到westos中然后被wc统计
##将上一个命令的输出复制保存至下一个文件,将第二条命令的输出作为第三个命令的输入
##tee 复制输出到指定位置
ls westos hello 2>&1 |wc -l ##使错误输出通过管道符的方法:将其保存至正确输出的文件里
##westos存在,hello不存在,则将错误输出保存在正确输出里,通过管道符
##2>&1 固定格式,将错误输出保存至正确输出的文件里
3、管理输入
- 输入重定向
< ##输入重定向
tr ‘a-z’ ‘A-Z‘ < file ##把file文件中的小写字母转换成大写字母,定向到tr程序中
- 输入重定向与管道符的区别
输入重定向:加载处理硬盘中的数据,即文件的真实内容
管道符:处理内存中的数据,即命令的输出,较慢
- 多行录入
<< ##多行录入
tr 'a-z' 'A-Z' << EOF
test
test1 ##此处的test不能表示为文件名,只表示test字符
EOF ##当首字母再次出现表示录入结束
#vim westos.sh,i编辑,将cat定向到westos.file中,输入内容,保存并退出vim
#sh westos.sh,建立westos.file文件
4、综合练习
- 查找/etc/下的passwd文件屏蔽错误输出
find /etc/ -name passwd 2> /tmp/westos (/tmp 系统临时文件存放目录)
find /etc/ -name passwd 2> /dev/null(/dev 设备文件)
- 查找/etc/下的passwd文件正确输出保存到westos.out中,错误输出保存到westos.err中
find /etc/ -name passwd > westos.out
find /etc/ -name passwd 2> westos.err
find /etc/ -name passwd > westos.out 2> westos.err
- 查找/etc/下的passwd文件保存所有输出到westos.all中并统计输入的行数
find /etc/ -name passwd 2>&1 | tee westos.all | wc -l
- 查找/etc/下的passwd文件统计输出行数并显示输出内容
find /etc/ -name passwd 2>&1 | cat -n
find /etc/ -name passwd 2>&1 | tee /dev/pts/0 | wc -l
- 转换/etc/目录中的passwd文件中的所有字母为大写并统计文件行数
find /etc/ -name passwd 2>&1 |tr 'a-z' 'A-Z'| tee /dev/pts/0 | wc -l
Linux操作系统基础–Linux中的用户管理
一、用户及用户组
1、用户
用户存在的意义
系统资源是有限的,如何合理分配资源
解决这个问题必须要有资源配合
2、用户组
用户组存在的意义
分为初始组(不能由自身决定)和附加组(可由自身决定)
用户组是一个逻辑容器
对用户进行归类和统一授权
二、用户切换
1、用户查看
whoami ##查看当前用户
id ##查看用户id信息
-u ##查看用户的用户id
-g ##查看用户主组id
-G ##查看用户所有的组的id
-n ##显示名称(必须结合以上参数使用)
用户id范围:0-65535
0: ##linux超级用户id
1-999: ##linux系统自用id
1000-65535: ##用户级id
以上id设定规则都被记录在/etc/login.defs
2、用户切换
- ##切换用户环境
su - username ##切换用户身份及环境
su username ##切换用户身份,不改变环境
高级用户—>普通用户 不需要密码
[root]su - westos
普通用户—>高级用户 需要密码
[westos]su - root
普通用户—>普通用户 需要密码
[westos]su - linux
[注意] 反复切换会导致环境混乱,打开多个shell,可使用exit退出
避免这种情况,时刻保持当前只有一个shell开启
图形界面切换用户 gnome-session-quit
强制切换:gnome-session-quit --force
3、用户涉及到的系统配置文件
/etc/passwd ##用户身份信息文件
##用户名称:用户密码:用户id:用户主组id:用户说明:用户家目录(/home/username):用户默认shell(/bin/bash)
/etc/group ##组身份信息文件
##组名称:组密码:组id:组的附加成员
/etc/skel/.* ##用户环境配置文件模板
/etc/shadow ##用户认证信息文件
##用户名称:用户密码的加密字符:用户密码最后一次被修改的时间(从1970年1月1日开始算起):密码最短有效期;密码最长有效期;密码过期前警告期:账号非活跃期(强制改密码):账号到期时间(从1970年1月1日开始算起):用户自定义(未使用)
/home/username ##用户家目录
/var/spool/mail/username ##用户邮箱文件
4、用户和用户组建立及删除
- 监控命令,用于监控系统内的用户,用户组等。
监控用户建立的命令
watch -n 1 "tail -n 3 /etc/passwd /etc/group;echo ======;ls -l /home"
一秒监控一次“ ”里的命令
“ ”显示用户身份信息文件和组身份信息文件的后三行
;表示另一个命令
echo ======= 显示文字 “======”
ls -l /home 显示目录中内容的属性
- useradd
useradd username ##用户建立
-u id username ##uid 2*16=0-65535
##0 表示超级用户
##1-200 系统预留id
##201-999 系统用户
##1000-65535 用户级用户
##/etc/login.defs 记录用户建立的默认规则
-g id username ##主组id(此时该主组必须存在)
-G id username ##附加组id
-d dir username ##指定用户家目录
-M username ##建立用户时不建立家目录
-c word username ##指定用户说明
-s shell username ##指定用shell
#建立用户,建立指定id的用户
#建立指定id,主组,附加组,用户家目录,说明文字和shell的用户
- userdel
userdel -r username ##用户删除,删除身份且删除系统配置文件
userdel username ##用户删除,只删除身份,未删除系统配置文件
#如果先删除了用户,未删除配置文件,则需要用rm删除/home里的该文件
#rm -rf /home/username
#删除用户yun,未删除配置文件
#删除用户yun的配置文件
#删除用户ting的身份及配置文件
- groupadd
groupadd groupname ##建立组
-g id groupname ##指定组名称
#建立用户组和指定id的组
- groupdel
groupdel groupname ##删除组
#删除用户组
5、用户和用户组的信息管理
usermod
-l ##更改用户名称
-u ##更改用户id
-g ##更改主组id
-G ##更改用户附加组身份,会删除此前的所有附加组身份
(如果要删除附加组身份,则可以添加“”空符号串)
-aG ##添加用户附加组身份
-c ##更改用户说明
(删除用户说明,则添加“”空符号串)
-d ##更改家目录指向
(没有改变家目录名称,此时的家目录指向不一定存在)
-md ##更改家目录指向和家目录名称
(使用时保证家目录指向与名称一致)
-s ##更改默认shell
(原地址 /bin/bash 改为/sbin/nologin 则变成高级用户里的文件,使用su-username则不能切换用户,需要将shell还原成/bin/bash)
-L ##冻结账号 (状态为!+密码的加密显示)
-U ##解锁(解锁时账号必须有密码才能解锁) (状态为密码的加密显示)
#建立用户lee
#将用户lee的名称改为leee
#将用户leee的id改为2548
#将用户leee的主组改为70
#id+名称 — 查看修改后的名称,id,主组,附组,添加的附组
#修改用户leee的说明文字和家目录指向
#修改用户leee的shell
#查看修改后用户leee的说明文字,家目录指向和shell
#改为/sbin/nologin 则变成高级用户里的文件,使用su-username则不能切换用户,需要将shell还原成/bin/bash
6、用户认证信息管理
#watch -n 1 "tail -n 3 /etc/passwd /etc/shadow"
- passwd -S
passwd -S lee ##查看密码状态
(LK---冻结状态,加密方式为SHA512对称加密;PS---解锁状态)
- 更改密码
passwd lee ##只有root可以执行"echo 123 | passwd --stdin lee"(将123作为用户的密码)
(root用户修改密码不需输入原密码)
passwd ##普通用户改密码
Changing password for user lee.
Current password: ##输入原始密码
New password: ##输入新密码(8位以上无序数字+无序字母组合)
Retype new password: ##重复输入
passwd:all authentication tokens updated successfully.
- 冻结认证
passwd -l lee ##冻结账号认证(有密码时才能锁住)
passwd -u lee ##解冻账号认证
#冻结账号
#解冻
- 密码删除
passwd -d lee ##有密码时才能删除
(删除密码后-S查看状态:NP---没有密码的解锁状态)
#删除密码
#用户当前为无密码状态
echo 123 | passwd --stdin leee
#设置密码
- 修改密码默认使用时间
passwd -e lee ##修改默认使用时间为0(不可加数字)
chage -d 0 lee ##账号必须改密码才能登录系统
#密码使用天数
#从1970-1-1开始算到今天
- 密码最短有效期
passwd -n 1 lee ##lee在一天内不能改密码
chage -m 1 lee
- 密码最长有效期
passwd -x 40 lee ##40天内lee必须更新密码都则会被冻结
chage -M 30 lee
- 密码过期警告
passwd -w 2 lee ##账号过期警告时间
chage -W 1 lee
- 认证非活跃天数
passwd -i 2 lee ##账号认证最大时间超过后还能用多久(-1天即0)
chage -I 1 lee
- 账号认证到期时间
chage -E '2020-05-22" ##账号到2020-05-22这天账号会被冻结(形式为1970-1-1算起的第n天)
[注意]
#passwd -l username ##冻结用户(状态为!!+密码的加密显示)///(usermod -L username命令的状态为!+密码的加密显示)
#passwd -u username ##解冻账号(状态为密码的加密显示)
7、用户权力下放
在系统中普通用户是无法执行系统管理命令的
如果需要普通用户执行系统管理动作,则需要root用户进行授权
普通用户授权方式“sudo”
作用:可以使普通用户使用指定的用户身份执行命令
授权方法:
visudo #编辑/etc/sudoers并提供语法检测
在代码的100行左右 — 代码规范性
hostname ##查看主机名----westosb.westos.org
which useradd ##查看useradd位置
username hostname = (newusername) [NOPASSWD:]/command, /command1(注意:","后空格,"/")
#lee用户 在linux.westos.com主机=(用超级用户身份) 执行useradd命令
lee linux.westos.com=(root) /usr/sbin/useradd
#westos用户 在linux.westos.com 使用超户 免密 执行useradd和userdel
westos linux.westos.com = (root) NOPASSWD:/usr/sbin/useradd, /usr/sbin/userdel
例:westosadmin用户可以在系统中自由的管理用户
#建立用户,权力下放,修改文件
#在100行左右写入
#通过权力下放,普通用户也可以增删用户