第三周作业!

1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。

答:本题思路:先用who命令列出当前登陆的用户信息,然后使用cut命令对字段进行分割,选出我们需要的字段,然后使用sort命令对结果进行排序,最后使用uniq命令来去重达到我们需要的效果。

[[email protected] ~]# who | cut -d‘ ‘ -f1 | sort | uniq
root

2、取出最后登录到当前系统的用户的相关信息。

答:id `who | tail -1 | cut -d" " -f1`

[[email protected] ~]# id `who | tail -1 | cut -d" " -f1`
uid=3005(openstack) gid=3005(openstack) groups=3005(openstack)

3、取出当前系统上被用户当作其默认shell的最多的那个shell。

答:解题思路:先使用cat命令查看passwd文件,然后以:号为分割符使用cut命令取出第七个字段也就是表示shell的那个字段,然后使用sort对其进行排序,避免统一shell分散至各处导致后面去重统计不准确,然后再使用uniq -c去重,并对重复次数进行记录,在使用sort -n对第一列以数值方式排序,最后一个就是使用最多的shell,使用tail -1取出,然后使用cut命令去掉前面不需要的数值,就是我们需要的结果了。

[[email protected]localhost ~]# cat /etc/passwd | cut -d‘:‘ -f7 | sort | uniq -c | sort -n | tail -1 | tr -s " " |cut -d"
 " -f3
 /sbin/nologin
[[email protected] ~]#

4、将/etc/passw d 中的第三个字段数值最大的后10个用户的信息全部改为大写后保存至/tmp/maxusers.txt文件中。

答:本题先读取/etc/passwd文件,然后用sort命令以:分割对第三个字段以数值进行排序,使用tail命令取出后十行,然后使用tr命令将小写转换为大写重定向输出至/tmp/maxuers.txt中。

[[email protected] ~]# cat /etc/passwd | sort -t‘:‘ -k3 -n | tail -10 | tr "a-z" "A-Z" >/tmp/maxusers.txt
[[email protected] ~]# cat /tmp/maxusers.txt
SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN
DBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGIN
POSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGIN
NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN
AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN
ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN
POLKITD:X:997:995:USER FOR POLKITD:/:/SBIN/NOLOGIN
SYSTEMD-NETWORK:X:998:996:SYSTEMD NETWORK MANAGEMENT:/:/SBIN/NOLOGIN
SYSTEMD-BUS-PROXY:X:999:997:SYSTEMD BUS PROXY:/:/SBIN/NOLOGIN
USER1:X:1000:1000::/HOME/USER1:/BIN/BASH

5、取出当前主机的IP地址,提示:对ifconfig命令的结果进行切分。

答:通过观察发现ifconfig命令下IP地址所在行以inet开头,所有用grep命令取出相关行数,这些行都是由多个空格分隔,用tr -s命令将多个空格改成一个空格,便于后面使用cut命令对行进行分割,经过多次分割,最后剩下IPV4地址和本地还回地址,考虑到实际有可能有多个地址,因此使用grep -v 显示除还回地址之外的所有ip。

[[email protected] ~]# ifconfig | grep ‘\<inet\>‘ | tr -s ‘ ‘ | cut -d‘ ‘ -f 3 | cut -d‘:‘ -f2 |grep -v "\<127\>"
192.168.199.147
[[email protected] ~]#

6、列出/etc目录下所有以.conf结尾的文件的文件名,并将其名字转换为大写后保存至/tmp/etc.conf文件中。

答:先使用ls命令列出所有*.conf结尾的文件,使用tr命令转换为大写输出重定向至指定位置。

[[email protected] etc]# ls -a /etc/*.conf | tr ‘a-z‘ ‘A-Z‘ >/tmp/etc.conf

7、显示/var目录下一级子目录或文件的总个数。

答:使用ls -l命令列出所有的文件或目录,由于每行第一个标识符表示不同的文件,因此可以使用grep删选出形同类型的文件,然后使用wc统计行数就是目录或者文件的个数了。

统计目录个数:

[[email protected] ~]# ls -l /var | grep "^d" | wc -l
18

统计文件个数:

[[email protected] ~]# ls -l /var | grep "^-" | wc -l
1

8、取出/etc/group文件中第三个字段数值最小的10个组的名字。

答:取出/etc/group下所有行,使用sort以第三个字段按数值大小进行排序,然后使用head取出前10个,使用cut命令取出我们需要的名字

[[email protected] ~]# cat /etc/group | sort -t":" -k 3 -n | head -10 | cut -d":" -f1
root
bin
daemon
sys
adm
tty
disk
lp
mem
kmem
[[email protected] ~]#

9、将/etc/fstab和/etc/issue文件的内容合并为同一个内容后保存至/tmp/etc.test文件中。

答使用cat命令打开多个文件,然后使用追加重定向至/tmp/etc.test中,测试结果如下图:

[[email protected] ~]# cat /etc/fstab /etc/issue >> /tmp/etc.test
[[email protected] ~]# cat /tmp/etc.test

#
# /etc/fstab
# Created by anaconda on Mon Aug  1 07:29:14 2016
#
# Accessible filesystems, by reference, are maintained under ‘/dev/disk‘
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=4c7002fa-bdd3-4f1e-8d15-8d73756bcdab /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_swap swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
CentOS release 6.8 (Final)
Kernel \r on an \m

10、请总结描述用户和组管理类命令的使用方法并完成以下练习:

答:用户管理类命令:

useradd:添加用户

使用格式1:useradd [OPTION] USERNAME

常用选项:-u UID-->指明用户的UID

-g GID-->指明用户的基本组ID

-c "COMMENT"-->用户的注释信息

-d /PATH/TO/SOMEWHERE-->以指定的路径为用户的家目录,指定的家目录最                                                                                                            好事先不存在,如果存在则需手动到/etc/skel下                                                                                                              复制用户的环境。

-s SHELL-->指定用户的默认SHELL,可用列表在/etc/shells文件中。

-G GROUP1[,GROUP2,GROUP3...]-->为用户指明附加组,可多个,以逗号分隔。

-r -->创建系统用户

使用格式2:useradd -D

常用选项:-s SHELL-->修改默认SHELL,关于useradd的默认值存放在/etc/default/useradd                                                     文件中,可以直接修改文件内容来达到修改默认值得目的。

id:查看用户的相关信息;

使用格式:id [OPTION] ..USER

常用选项:-u -->查看指定用户的UID

-g -->查看指定用户的基本组ID

-G-->查看指定用户所在附加组ID

-n-->显示用户

su:切换用户或以其他身份执行命令

使用格式:su [OPTION] [-] [USER [ARGS..]]

su Username-->非登录式切换,不会读取目标用户的配置文件

su - Username-->登录式切换,会读取目标用户的配置文件,完全切换

su [-] Username -c "COMMAND"-->换个身份执行命令,命令执行完成自动还

原为原来的身份

常用选项:-l -->su -l Username相当于su - Username

usermod:用户属性修改

使用格式:usermod [OPTION] USERNAME

常用选项:-u UID -->修改用户的UID

-g GID -->修改用户的基本组ID

-G GROUP1[,GROUP2,GROUP3...]-->修改用户的附加组ID,新附加组,原来的附                                                  加组将会被覆盖;若保留原有,则要同时使                                                      用-a选项,表示append.

-s SHELL -->新的默认shell

-c "COMMENT"-->新的注释信息

-d HOME -->新的家目录,原家目录中的文件不会同时移动至新的家目录,若                                                           要移 动,则同时使用-m选项

-L-->锁定用户

-U-->解锁用户

-e YYYY-MM-DD-->指明用户帐户过期日期

-f INACTIVE-->设定非活动期限

passwd:给用户添加密码

使用格式:passwd [OPTION] Username-->修改指定用户的密码,仅root有权限

passwd-->修改自己的密码,所有用户均有权限

常用选项:-l -->锁定用户

-u-->解锁用户

-n mindays-->指定最短使用期限

-x maxdays-->指定最大使用期限

-w warndays-->提前多少天开始警告

-i inactivedays-->非活动期限

--stdin-->从标准输入接受用户密码

echo "PASSWORD" | passwd  --stdin USERNAME

userdel:删除用户

使用格式:userdel [OPTION] ...USERNAME

常用选项:-r-->默认不删除用户的家目录,加此选项则删除

组管理类命令:

groupadd:添加组

使用格式: groupadd [OPTION] ...GROUP_NAME

常用选项:-g GID-->指明GID号

-r -->创建系统组  centos61-499,centos71-999

groupmod:修改组

使用格式:groupmod [OPTION] ...GROUP_NAME

常用选项:-n NEW_GROUP-->新的组名

-g GID-->新的GID

groupdel:删除组

使用格式:groupdel GROUP_NAME

gpasswd:组密码

使用格式:gpasswd [OPTION] ...GROU_NAME

常用选项:-a user :将user添加至指定组中

-d user:三层用户user的以当前组为组名的附加组

-A user1,user2,...:设置有管理权限的用户列表;

newgrp:临时切换用户的基本组;如果用户本不属于此组,则需要组密码;

(1)、创建组distro,其GID为2016;

答:groupadd -g 2016 distro

[[email protected] ~]# groupadd -g 2016 distro
[[email protected] ~]# cat /etc/group | tail -1
distro:x:2016:

(2)、创建用户mandriva, 其ID号为1005;基本组为distro;

答:useradd -u 1005 -g distro mandriva

[[email protected] ~]# useradd -u 1005 -g distro mandriva
[[email protected] ~]# id mandriva
uid=1005(mandriva) gid=2016(distro) groups=2016(distro)
[[email protected] ~]#

(3)、创建用户mageia,其ID号为1100,家目录为/home/linux;

答:useradd -u 1100 -d /home/linux mageia

[[email protected] ~]# useradd -u1100 -d /home/linux mageia
mandriva:x:1005:2016::/home/mandriva:/bin/bash
mageia:x:1100:1100::/home/linux:/bin/bash

(4)、给用户mageia添加密码,密码为mageedu;

答:echo "mageedu" | passwd --stdin mageia。

[[email protected] ~]# echo "mageedu" | passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.
[[email protected] ~]# cat /etc/shadow | tail -5
oprofile:!!:17013::::::
tcpdump:!!:17013::::::
gentoo:!!:17031:0:99999:7:::
mageia:$6$lXgx.iDE$cCVP3OUKxaDin89Iq7Q3hryTMcsvrLlAS2NF21QvgTiNATXTSfEt128g7nw1bbYOIRRnVL4zVMnFe5Vnblpmh0:17031
:0:99999:7:::

(5)、删除mandriva,但保留其家目录;

答:userdel mandriva  userdel默认不删除用户的家目录

[[email protected] ~]# userdel mandriva
[[email protected] ~]# ls /home
gentoo  linux  mandriva  #此处Linux目录仍存在
[[email protected] ~]#

(6)、创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;

答:groupadd pegui ; useradd -u 2002 -g distro -G peguin

[[email protected] ~]# groupadd peguin;useradd -u 2002 -g distro -G peguin slackware
[[email protected] ~]# cat /etc/passwd | tail -1
slackware:x:2002:2016::/home/slackware:/bin/bash
[[email protected] ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),2601(peguin)

(7)、修改slackware的默认shell为/bin/tcsh;

答:usermod -s /bin/tcsh slackware

[[email protected] ~]# usermod -s /bin/tcsh slackware
[[email protected] ~]# cat /etc/passwd | tail -1
slackware:x:2002:2016::/home/slackware:/bin/tcsh

(8)、为用户slackware新增附加组admins;

答:groupadd admins;usermod -G -m admins slackware

[[email protected] ~]# groupadd admins&&usermod -a -G admins slackware
[[email protected] ~]# id slackware
uid=2002(slackware) gid=2016(distro) groups=2016(distro),2601(pegui),2602(admins)
[[email protected] ~]#

(9)、为slackware添加密码,且要求密码最短使用期限为3天,最长为180天,警告为3天;

答:echo "mageedu" | passwd --stdin slackware && passwd -n 3 -x 180 -w 3 slackware

[[email protected] ~]# echo "mageedu" | passwd --stdin slackware && passwd -n 3 -x 180 -w 3 slackware
Changing password for user slackware.
passwd: all authentication tokens updated successfully.
Adjusting aging data for user slackware.
passwd: Success
[[email protected] ~]# cat /etc/shadow | tail -1
slackware:$6$kZJ/T3m/$U7TcYOizld8GXY3ckBqk/nq5NZL97DW0apIinJNyNEmqMtWR7nTnpDjM6sYV.ssPJ8rKN8Uwj3nSB26j2LgM/.:17
031:3:180:3:::

(10)、添加用户openstack,其ID号为3003, 基本组为clouds,附加组为peguin和nova;

答:groupadd clouds ;groupadd peguin ;groupadd nova ;useradd -u 3003 -g                 clouds -G peguin,nova openstack

[[email protected] ~]# groupadd clouds;groupadd peguin;groupadd nova;useradd -u 3003 -g clouds -G peguin,nova open
stack
[[email protected] ~]# id openstack
uid=3003(openstack) gid=2603(clouds) groups=2603(clouds),2604(peguin),2605(nova)

(11)、添加系统用户mysql,要求其shell为/sbin/nologin;

答:useradd -r  -s /sbin/nologin mysql

[[email protected] ~]# useradd -r -s /sbin/nologin mysql
[[email protected] ~]# cat /etc/passwd | tail -1
mysql:x:498:498::/home/mysql:/sbin/nologin

(12)、使用echo命令,非交互式为openstack添加密码。

答:echo "mageedu" | passwd --stdin opentack

[[email protected] ~]# echo "mageedu" | passwd --stdin openstack
Changing password for user openstack.
passwd: all authentication tokens updated successfully.
时间: 2024-08-08 09:40:19

第三周作业!的相关文章

《实时控制软件》第三周作业

一.Xenomai的简介 1.简介 Xenomai 是一种采用双内核机制的Linux 内核的强实时扩展.优先级高于Linux 内核,它负责处理系统的实时任务.Xenomai 无缝集成到Linux操作系统,从而无障碍所有的Linux软件栈源代码和更多的东西Xenomai 实时内核为开发强实时应用提供了丰富的功能, 主要包括实时线程调度与管理用户空间实时任务支持中断服务线程同步服务实时对象注册服务和动态内存申请等. 和典型的Linux实时方案( RTLinux和RTAI) 相比,Xenomai拥有自

《实时控制软件设计》第一周作业 欧梓峰 U201317662

CNC 插补计算程序分析 一.该系统有哪些强实时功能需求?需要对哪些实时事件进行实时响应,对允许的实时延迟的数量级进行估计. 答:该系统对如何控制刀具或工具的运动有强的实时控制需求,通过插补控制和位置控制以及主轴控制实现一边插补进行运算,一边进行加工,才能完成程序规定的加工任务,反过来讲,才能实时控制加工. 二.如果你是软件设计者,要实现这些实时功能,要设计几个实时任务? 答:①插补计算任务:对轮廓线的起点到终点之间再密集的计算出有限个坐标点,刀具沿着这些坐标点移动,来逼近理论轮廓,以保证切削过

《实时控制软件设计》第一周作业

《实时控制软件设计》第二周作业

 状态分析 由题目描述,只有两种不同事件,一个是车辆进入,一个是车辆离开,与之对应的传感器信号,起落杆信号,通行灯信号都是一同变化,因此可以简化成两种复合状态. 代码实现 传感器头文件 // // Created by zhuhaihao on 2016/12/4. // #ifndef STATEMACHINE_STATEMACHINE_H #define STATEMACHINE_STATEMACHINE_H class Sensor { public: Sensor(); Sensor(b

实时控制软件设计第二次编程作业

1 #include <iostream> 2 #include"robot.h" 3 /* run this program using the console pauser or add your own getch, system("pause") or input loop */ 4 5 int main(int argc, char** argv) { 6 Robot Robot(140,200,6,4); 7 jointframe JF; 8

《实时控制软件设计》第一次编程作业

//代码: #include <iostream> #include <Eigen/Dense> #include <cmath> using Eigen::MatrixXd; using namespace std; float pi=3.1415926; void mpoint(MatrixXd m) { MatrixXd T(1,2),A(1,2); cout<<"请输入移动距离:"; fflush(stdin); scanf(&q

2017-2018-1 20179205《Linux内核原理与设计》第九周作业

<Linux内核原理与设计>第九周作业 视频学习及代码分析 一.进程调度时机与进程的切换 不同类型的进程有不同的调度需求,第一种分类:I/O-bound 会频繁的进程I/O,通常会花费很多时间等待I/O操作的完成:CPU-bound 是计算密集型,需要大量的CPU时间进行运算,使得其他交互式进程反应迟钝,因此需要不同的算法来使系统的运行更高效,以及CPU的资源最大限度的得到使用.第二种分类包括批处理进程(batch process):实时进程(real-time process)以及交互式进程

《实时控制软件设计》读书笔记

读书笔记 在浅读过<构建之法:现代软件工程>第一章和邹欣老师的一些博文后,我对以下四个方面有了一些粗陋的认识. 一.      对软件工程的理解 <构建之法>第一章中对软件工程有着自己的理解.书中提到“软件=程序+软件工程”这一概念.同时,书中还指出软件工程包含软件需求分析.软件设计.软件构建.软件测试和软件维护这些领域.看过这些介绍后,我认为首先要弄请程序.软件.软件工程的区别.正如书中提到阿超的例子一样,程序只是完成某一项或几项简单任务的代码和数据结构集成:而软件则是能满足用户

马哥2016全新Linux+Python高端运维班第三周作业作答

                    马哥2016全新Linux+Python高端运维班第三周作业                                           1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可.     [[email protected] ~]# who | awk '{print $1 $NF}'| uniq -d     [[email protected] ~]# who     yicx     :0  

Linux内核设计第三周——构造一个简单的Linux系统

Linux内核设计第三周 ——构造一个简单的Linux系统 一.知识点总结 计算机三个法宝: 存储程序计算机 函数调用堆栈 中断 操作系统两把宝剑: 中断上下文的切换 进程上下文的切换 linux内核源代码分析 arch/目录保存支持多种CPU类型的源代码 其中的关键目录包括:Documentation.drivers.firewall.fs(文件系统).include init目录:含有main.c,内核启动相关的代码基本都在init目录下 start_kernal()函数为启动函数,初始化内