一、作业内容
1.创建一个用户user1,用root身份给user1修改密码为redhat。
提示:创建用户用useradd user1
2.切换到user1用户,给自己修改一个密码,密码任意。
3. 在/root/目录中创建一个以自己的汉语拼音为名字的文件,例如zhangsan.txt。并写入名字、年龄、出生日期、性别,每一项占一行,保存并退出。
4. 查找系统中所有与passwd关键词相关的man 帮助章节。
5.分别写出man帮助的第1,5,8章节是做什么的?
1、Standard commands (标准命令)
用户在shell换机中可以操作的指令或可执行文件
5、File formats (文件格式)
配置文件或者是某些档案的格式
8、Administrative Commands (管理员命令)
系统管理员可用的命令
6.创建一个目录/data
7.将 /etc/目录拷贝到data 并且重命名为 config
8.将config 目录中的shadow 文件拷贝/tmp
9.将config 下的shadow文件更名为password
10.更新/etc/目录下面所有文件的时间戳(注意不是/etc目录本身的时间戳)
11.在/tmp下创建一个空文件test1,并且通过文本编辑器来验证时间戳的更改
12.清空/tmp目录
13.给/data目录改名,更名为RHCE
14.创建目录/tmp/a/b/c/d/e/f这样的目录树结构
15.将/usr/share/doc/zip目录下的所有文件拷贝至/tmp
16.查看/etc/profile 文件的时间戳。并尝试用touch修改A time和M time
17.用file查看文件/etc/profile的文件类型,并将windows里面的一个pdf文件复制到虚拟机里面,用file来查看该pdf文件的类型。(选做)
二、知识点补充
用户管理
1.添加用户
常用语法:useradd [选项] 用户名
如:useradd user1
当创建用户成功后,会自动的创建和用户同名的家目录
也可以通过 useradd -d 指定目录 新的用户名
,给新创建的用户指定家目录
如:useradd -d /home/group1 user1
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】
-c comment:添加注释
案例:添加选项,创建用户lisi,让lisi属于501主组,附加组500,自选靓号666。
注意:查看用户的主组可以查看passwd文件,查看附加组可以查看group文件。
2.用户管理
①修改密码
常用语法:passwd 用户名
如:passwd user1
②修改用户
常用语法:usermod [选项] 用户名
usermod 选项 用户名
Usermod:user modify,用户修改
常用选项:
-g:表示指定用户的用户主组,选项的值可以是用户组的id,也可以是组名
-G:表示指定用户的用户附加组,选项的值可以是用户组的id,也可以是组名
-u:uid,用户的id(用户的标识符),系统默认会从500之后按顺序分配uid,如果不想使用系统分配的,可以通过该选项自定义【类似于腾讯QQ的自选靓号情况】
-l:修改用户名
案例:修改zhangsan用户主组为500,附加组改为501
#usermod -g 500 -G 501 zhangsan
案例:修改zhangsan用户用户名,改为wangerma
#usermod -l 新的用户名 旧的用户名
#usermod -l wangerma zhangsan
③删除用户
常用语法:userdel 用户
情况一:删除用户user1,但是要保留home目录
userdel user1
情况二:删除用户user1以及用户主目录
userdel -r user1
注意:1.在实际项目开发中,一般不会连用户主目录一起删除
2.已经登录的wangerma用户删除的时候提示删除失败,但是没有登录的lisi用户可以正常删除。
解决办法:简单粗暴,kill对应用户的全部进程
提示:所有跟用户操作的命令(除passwd外)只有root超级管理员有权限执行。
④查询用户
常用语法:id 用户
如:id user1
⑤切换用户
常用语法:su - 用户
如:su - user1
用户组管理
1.添加用户组
常用语法:groupadd [选项] 组名
如:groupadd group1
常用选项:
-g:类似用户添加里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字,如果自己不指定,则默认从500之后递增;
2.删除用户组
常用语法:groupdel 用户组名
如:groupdel group1
注意:当如果需要删除一个组,但是这个组是某个用户的主组时,则不允许删除;如果确实需要删除,则先从组内移出所有用户。
3.用户组编辑
常用语法:groupmod [选项] 用户组名
常用选项:
-g:类似用户修改里的“-u”,-g表示选择自己设置一个自定义的用户组ID数字
-n:类似于用户修改“-l”,表示设置新的用户组的名称
案例:修改Administrators用户组,将组ID从502改成520,将名称改为admins
权限管理
语法:chmod [选项] 权限模式 文档
注意事项:
常用选项:
-R:递归设置权限 (当文档类型为文件夹的时候)
权限模式:就是该文档需要设置的权限信息
文档:可以是文件,也可以是文件夹,可以是相对路径也可以是绝对路径。
注意点:如果想要给文档设置权限,操作者要么是root用户,要么就是文档的所有者。
1.字母形式
给谁设置:
u:表示所有者身份owner(user)
g:表示给所有者同组用户设置(group)
o:表示others,给其他用户设置权限
a:表示all,给所有人(包含ugo部分)设置权限
如果在设置权限的时候不指定给谁设置,则默认给所有用户设置
权限字符:
r:读
w:写
x:表示执行
-:表示没有权限
权限分配方式:
+:表示给具体的用户新增权限(相对当前)
-:表示删除用户的权限(相对当前)
=:表示将权限设置成具体的值(注重结果)【赋值】
例如:需要给anaconda-ks.cfg文件(-rw-------.)设置权限,要求所有者拥有全部的权限,同组用户拥有读和执行权限,其他用户只读权限。
答案:
#chmod u+x,g+rx,o+r anaconda-ks.cfg
提示:当文档拥有执行权限(任意部分),则其颜色在终端中是绿色。
2.数字形式
r=4 w=2 x=1 rwx=4+2+1=7
(chmod u=rwx,g=rx,o=x 文件目录名)相当于 (chmod 751文件目录名)
案例演示
将/home/abc.txt文件的权限修改成rwxr-xr-x,使用给数字的方式实现
chmod 755 /home/abc.txt
面试题:用超级管理员设置文档的权限命令是#chmod -R 731 aaa,请问这个命令有没有什么不合理的地方?
拥有者:7=4+2+1=读+写+执行
同组用户:3=2+1=写+执行
其他用户:1=1=执行
注意:在写权限的时候千万不要设置类似于上面的这种“奇葩权限”。如果一个权限数字中但凡出现2与3的数字,则该权限有不合理的情况。
查看和修改文件时间
1.查看文件时间及相关命令
①stat查看文件时间
File: "install.log"
如:stat install.log
说明:Access访问时间。Modify修改时间。Change状态改变时间。可以stat *查看这个目录所有文件的状态。
②ls查看文件时间
相应的通过ls 查看时也有三个时间:
• modification time(mtime,修改时间):当该文件的“内容数据”更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性。
• status time(ctime,状态时间):当该文件的”状态(status)”改变时,就会更新这个时间,举例来说,更改了权限与属性,就会更新这个时间。
• access time(atime,存取时间):当“取用文件内容”时,就会更新这个读取时间。举例来说,使用cat去读取 ~/.bashrc,就会更新atime了。
相关语法如:
ls -l --time=ctime install.log (查看文件的状态时间)
ls -l --time=atime install.log (查看文件的存取时间)
注意:ls参数里没有--mtime这个参数,因为我们默认通过ls -l查看到的时间就是mtime
2.修改文件时间
创建文件我们可以通过touch来创建。同样,我们也可以使用touch来修改文件时间。touch的相关参数如下:
-a : 仅修改access time。
-c : 仅修改时间,而不建立文件。
-d : 后面可以接日期,也可以使用 --date="日期或时间"
-m : 仅修改mtime。
-t : 后面可以接时间,格式为 [YYMMDDhhmm]
注:如果touch后面接一个已经存在的文件,则该文件的3个时间(atime/ctime/mtime)都会更新为当前时间。若该文件不存在,则会主动建立一个新的空文件。
常用语法:touch [选项] 文件
如:touch install.log
案例:
1. 同时修改文件的修改时间和访问时间
touch -d "2021-07-29 16:29:30" install.log
2. 只修改文件的修改时间
touch -m -d "2021-07-29 16:29:30" install.log
3. 只修改文件的访问时间
touch -a -d "2021-07-29 16:29:30" install.log