输入输出的重定向、用户的建立修改,组的建立修改、权力下放
1.输入输出的定义
(1).输入就是我们的键盘,鼠标和我们用这些硬件在系统只哦个录入的字符
(2).输出
就是系统接收到我们想要实现的功能字符后,经过进程的处理产生字符
输入会有两种出现
编号1为正确输出
编号2为错误输出
默认着两种输出都会被系统定向到字符设备中
2.如何管理输出
输出重定向> #重定向正确输出
2> #重定向错误输出
&> #重定向所有输出
2>&1 #把错误输出的编号由2转换为1
举例:
请用student用户做以下实验
find /etc/ -name passwd >westos 将正确的输出导入westos错误的输出直接显示
find /etc/ -name passwd 2> westos将错误的输出导入westos(会覆盖原来导入的正确的输出)正确的输出直接显示出来
find /etc/ -name passwd &> westos 将所有的输出导入到westos中(会覆盖掉上面操作的错误输出)
"注意:从定向是会覆盖原文件内容的!!!###追加
#保持原文件内容不变的情况下把输出追加到文件之后
>> ##追加正确输出2>> ##追加错误输出
&>> ##追加所有输出
eg:
find /etc/ -name passwd >> westos
find /etc -name passwd 2>> westos
#把输出变成下一个程序的输入
#管道是用来组合多条命令的使用的
ls /bin | wc -l
"注意:通过管道后输出会变成输入,那么是无法保存在文件中的"
tee ##复制输出到指定位置
ls /bin | tee file | wc -lcat file ##file中已经保存了输出
3.如何管理输入
#1.非交互式多行录入
vim C_pass.sh
passwd
sh C_pass.sh
是不能自动运行的
passwd <<END
xd
xd
END
sh C_pass.sh
可以自动运行避免交互
##练习
1.显示当前时间 , 显示格式为 hh:mm:ss, 并保存到文件 time.txt文件中
2.显示 /etc/passwd 文件的第 15-18 行内容
3.显示 /bin 中文件包含大写字母的文件 , 保存到bin_westos_file.txt 文件中,并统计个数显示到屏幕
4.在 student 用户下查找 /etc 下 passwd 文件,屏蔽错误输出
5.在 student 用户下查找 /etc 下 passwd 文件,正确输出保存到 /tmp/westos.out 错误输出保存到 /tmp/westos.err
6.在 student 用户下查找 /etc 下 passwd 文件,显示命令输出并保存输出到 /tmp/westos.all 中
#####date +%H:%M:%S >time.txt
#####cat /etc/passwd | head -n 18|tail -n 4
#####ls /bin/*[[:upper:]]* | tee bin_westos_file.txt | wc -l
#####find /etc/ -name passwd 2> /dev/null
#####find /etc/ -name passwd >/tmp/westos.out 2>/tmp/westos.error
#####find /etc/ -name passwd 2>&1 |tee /tmp/westos.all
4.用户理解
用户就是系统使用者的身份
在系统中用户存储为若干窜字符+若干个系统配置文件
用户信息涉及到的系统配置文件:
/etc/passwd ###用户信息
用户:密码:uid:gid:说明:家目录:用户使用的shell
-u : -g : -c : -d : -s
/etc/shadow ###用户认证信息
用户:密码:最后一次密码修改该时间:最短有效期:最长有效期:警告期:非活跃期:帐号到期日
总共9列,第一列为用户名,第二列为密码,第三列为从第一天(1970年1月1日起至今使用多少天),第四列为最段有效期,第五列为最长有效期,第六列为警告天数,第七列为非活跃天数,第八列为帐号到期日
/etc/group ###组信息
组名称:组密码:组id:附加组成员
/etc/gshadow ###组认证信息
/home/username ###用户家目录
/etc/skel/.* ###用户骨架文件
#注意: /etc/skel/ 这个目录中的所有文件或目录在用户新建的过程中会被复制到用户的家目录里这个目录中默认存在的隐藏文件是用户的默认配置文件
/etc/login.defs ######用户信息默认符合的规则
5.用户建立
useradd 参数 用户名字
-u ##指定用户uid
-g ##指定用户初始组信息,这个组必须已经存在
-G ##指定附加组,这个组必须存在
-c ##用户说明
-d ##用户家目录
-s ##用户所使用的shell,/etc/shells记录了用户能使用shell的名字
6.用户删除
userdel -r 用户名称 -r表示删除用户信息及用户的系统配置
7.组的建立
groupadd -g ##建立组
groupdel 组名字 ##删除组
###########watch -n 1 'tail -n 3 /etc/passwd /etc/group;echo ====;ls -l /home;echo ===;ls -l /mnt'#######
8.用户id信息查看
id 参数 用户
-u ##用户uid
-g ##用户初始组id
-G ##用户所有所在组id
-n ##显示名称而不是id数字
-a ##显示所有信息
useradd westos 建立westos用户
userdel -r westos 删除wesyos 用户
useradd -u 6666 westos 建立一个uid为6666的westos的用户
useradd -r westos 删除westos用户
建立一个gid(组)为6666的用户westos,首先看这个组是否存在(出生组),若不存在则应先建立groupadd -g 6666 westos
再建立用户 useradd -g 6666 westos
userdel -r westos 删除用户
建立一个拥有附加组的westos用户,则首先这个附加组必须存在再建立用户 比如说已存在id为48的组则建立为
useradd -G 48 westos
useradd -c “********“ westos 建立一个说明参数为*********的westos用户
useradd -d /home/xd westos 建立一个家目录为/home/xd的westos用户
useradd -s /bin/tcsh westos 建立一个用户使用的shell为/bin/tcsh的westos用户
看你的shell都有哪些的命令 cat /etc/shells中有nologin的是不能登陆的
9.用户信息更改
usermod 参数 用户
-l ##更改用户名称
-u ##更改uid
-g ##更改gid
-G ##更改附加组
-aG ##添加附加组
-c ##更改说明
-d ##更改家目录指定
-md ##更改家目录指定及家目录名称
-s ##更改shell
-L ##冻结帐号
-U ##解锁
eg:
useradd westos 新建用户westos
usermod -l linux westos 更改用户名将westos改为linux
usermod -l westos linux 将名称linux改为westos
usermod -u 6666 westos 更改用户uid为6666
usermod -g 21 westos(21这个组id必须存在才可以更改) 更改用户组id为21
usermod -G 21 westos(21这个组必须存在) 添加用户附属组id21,此时westos用户比以前多一个组
usermod -G 48 westos(48这个组必须存在)添加用户附属组id48,此时上一个21组便不再属于westos
usermod -aG 21 westos (21存在) 此时在上个命令已经添加附属组48的情况下再添加了一个21的附属组,此时westos多了两个附
usermod -c "westos user" westos 更改westos的参数为westos user
usermod -d /home/xd westos 更改westos的家目录
hostname 查看主机名
hostnamectl 查看主机名,系统版本等详细信息
10、用户权力的下放
用户的建立与删除等一些命令只有在超级用户下才可以运行,而普通用户要可以操作这些命令时就需要权力的下放为了保证环境的纯净我们首先用超级用户新建一个用户
(1)在系统中超级用户可以下放普通用户不能执行的操作给普通用户
下放权力配置文件:/etc/sudoers
(2)下放权力的方法
*)超级用户执行visudo进入编辑/etc/sudoers模式
*)格式:
获得权限用户 主机名称=(获得到的用户身份) 命令
test desktop0.example.com=(root) /usr/sbin/useradd
test用户能在desktop0.example.com以超级用户身份执行/usr/sbin/useradd
3.执行下放权限命令
sudo 命令 ##如果第一次执行sudo需要输入当前用户密码
在/etc/sudoers中如果设置如下:
test desktop0.example.com=(root) NOPASSWD: /usr/sbin/useradd
表示用户调用sudo命令的时候不需要自己密码
eg:
useradd linux 新建用户linux
passwd linux 修改用户linux的密码
在超级用户下下放权力
visudo
在文件第100行左右写入 linux(你刚建的用户名) 主机名(hostname出来的名字)=(root) NOPASSWD: /usr/sbin/useradd, /sbin/userdel (意思为将linux用户赋予root用户的权力在主机名的机子上可以新建和删除用户)保存
切换到普通用户 su - linux
新建用户sudo useradd westos 建立用户westos
删除用户sudo userdel westos 删除用户westos (sudo 是指让系统在命令之前读取你刚编写的文件)