一.Linux中的输入输出管理
1.理解什么是输入输出
1)字符设备
字符设备就是现实字符到屏幕上的设备文件
2)stdin 标准输入 编号为0 如键盘 鼠标 打字机
3)stdout 标准正确输出 标号为1
4)stdrr标准错误输出 标号为2
在普通用户下,用命令dev/pts/0(1,2...)来查看
操作如下:
2.如何管理系统输出
(1)输出重定向
1> 正确输出
2> 错误输出
&> 输出所有
在普通用户下,作如下实验
find /etc -name passwd 1> westos.out 重定向正确输出
find /etc -name passwd 2> westos.err 重定向错误输出
find /etc -name passwd &> westos.all 重定向输出所有
注意:重定向输出后,会覆盖原始文件里的内容
实验如下:
find /etc -name passwd 这条命令在普通用户下输入时 输出会有报错,原因是报错的地方 普通用户不能访问,只有超级用户才能访问。
(2)追加输出
1>> 正确输出
2>> 错误输出
&>> 输出所有
find /etc -name passwd 1>> westos.out 追加正确输出
find /etc -name passwd 2>>westos.err 追加错误输出
find /etc -name passwd &>> westos.all 追加输出所有
注意:追加管理输出后,不会覆盖原始文件内容 追加和重定向功能类似
(3)管道符 “|”
把前一条命令的输出变为输入,传递到下一条命令进行操作,注意:管道符只处理正确的输出,在一条命令中可以使用多次。
# 2>&1 表示将编号为2的输入到编号为1的输出中
# tee 表示复制输出到指定位置,操作如下
例题:找出系统中/etc下 名字中带有数字并以.conf结尾的文件名,将其备份到桌面coffile中并统计文件个数
find /etc -name *[1-9]*.conf 2>/dev/null | tee conffile | wc -l
2.如何管理输入
外界传递到程序的信息
(1)< 表示输入重定向
# tr 'a-z' 'A-Z' < test test文件中的内容定向到tr的程序中
(2)<< 多行录入
# tr 'a-z' 'A-Z' << EOF(任意字符)
test
test1
EOF
当首字母再次出现时 表示录入结束,此处的test不能表明各文件 只表示字符
二.Linux中的用户管理
1.用户和用户组存在的意义
(1)用户存在的意义
系统资源是有限的,如何合理分配系统资源,在这个问题得到解决时,必须要有两个资源配合。
1)身份 (account)2)授权(author) 3)认证(auth)
称为3A机制,组成了系统对底层的安全架构
2. 用户组存在的意义
电脑对数字敏感(ID) 人类对文字敏感(名称) 名称必须要记录到文件中才能被使用
Linux中记录用户信息的命令 /etc/passwd
用户就是/etc/passwd 文件中的一行字符
用户组的存在方式就是/etc/group 文件中的一行字符
3.用户切换
1)用户查看
whoami 查看当前用户
id 查看用户id信息
id -u 查看用户的用户id
id -g 查看用户的主组id
id -G 查看用户所有组的id
id -n 显示名称 该命令不可单独使用 需和上面命令搭配使用
2)用户切换
su - username
- 代表切换用户环境
如果root ------> 普通用户 不需要密码
如果普通用户------->root 需要密码
普通用户 -------》普通用户 需要密码
注意:当在做用户切换时,使用完毕用户身份后 要及时退出,不要在一个shell中反复执行su命令 否则会造成环境错乱
操作如下
4.用户涉及到的系统配置文件
(1)/etc/passwd 用户身份信息文件 每一行都有7列内容,分别表示:用户名称;用户密码;用户id;用户主id;用户说明;用户家目录;用户默认的shell
(2)/etc/group 组身份信息文件 有4列,分别表示:组名称;组密码;组id;组的附加成员
(3)/etc/skel/.* 用户环境配置文件模版
(4)/etc/shadow 用户认证信息
(5)/home/username 用户家目录
5.用户和用户组的建立及删除
为了做实验的效果,我们需要运用监控,建立用户监控命令
tail -n -4 /etc/passwd /etc/group; echo====; ls -l /home
watch -n 1 "tail -n -4 /etc/passwd /etc/group; echo====; ls -l /home"
(1)用户建立: useradd username
useradd -u id username uid的设定
useradd -g id username 主组id
useradd -G id username 附加组id
useradd -d dir username 指定用户家目录
useradd -c word username 指定用户说明
useradd -s shell username 指定用户shell
用户的删除 userdel -r username
(2)用户组的建立 groupadd groupname
用户组的删除 groupdel groupname
groupadd -g id groupname 指定组名称
注意:#0 表示超级用户 #1-200 表示预留id #201-999 表示系统用户 #1000-60000 用户级用户
/etc/login.defs 记录用户建立的默认规则
上述操作如下:
6.用户和用户组的信息管理
usermod -l 更改用户名
usermod -u 更改用户id
usermod -g 更改用户组id
usermod -G 更改用户附加组身份
usermod -aG 添加用户附加组信息
usermod -c 更改用户说明
usermod -d 更改用户家目录指向
usermod -md 更改家目录指向同时更改家目录名称
usermod -s 更改shell
groupmod -g 改变用户组id
操作如下
7.用户认证信息管理
(1)用户名称
(2)用户加密字符
passwd lee 只有普通用户可更改
passwd 普通用户改密码(改的密码是8位以上的)
“echo 123 | passwd --stdin lee” 改密码
passwd -S lee 查看密码状态
passwd -l lee 冻结账号
passwd -u lee 解锁账号
passwd -d lee 删除密码
(3)密码使用天数从1970-1-1 算到今天的时间
passwd -e lee 修改默认使用时间 或者 chage -d 0 lee 修改后必须重新改密码才能登陆
(4)密码的最短有效期
passwd -n 1 lee 或 chage -m 1 lee lee在1天内不能改密码
(5)密码最长有效期
passwd -x 40 lee 40天内用户必须更改密码 否则会被冻结
chage -M 30 lee
(6)密码过期警告
passwd -w 2 lee 或 chage -W 2 lee
(7) 认证非活跃天数
passwd -i 2 lee 或 chage -I 2 lee 账号认证最大时间超过后 还能用多久
(8)账号认证到期时间
chage -E “2020-05-11” 到2020.05.11 这天账号会被冻结
(9)未启用功能
操作如下
8.用户权利下放
在系统中普通用户无法执行系统的管理命令的,如果需要普通用户执行系统管理动作,那么需要root用户来进行授权
普通用户的授权方式是 sudo
作用是:可以使普通用户用指定的用户身份进行命令
授权方法:
visudo 此命令作用是编辑相当于打开vim etc/sudoers 文件并提供语法检测 在100行左右进行编辑
username hostname=(newsusername) [NOPASSWD:] /command, /command
例如:
用 which useradd 查看该命令所在目录
lee linux.com=(root) [NOPASSWD:] /usr/sbin/useradd,/usr/sbin/userdel
实验过程:
首先在超级用户下,进入visudo 在100行左右写入lee linux.com=(root) [NOPASSWD:] /usr/sbin/useradd,/usr/sbin/userdel
然后退出 su - lee -------> sudo useradd westostest 即可进行超级用户权力下放给普通用户
本章习题如下