面试题-3

基础相关

1.使用创建文件的命令一次性批量创建(oldboy1,oldboy2,oldboy3,oldboy4,oldboy5)这几个文件
[root@yinwucheng ~]# touch oldboy{1..5}
2.使用一条命令创建/lao/nan/hai
[root@yinwucheng ~]# mkdir -p /lao/nan/hai
3.只显示/etc/passwd文件的第五行(3种方法)
[root@yinwucheng ~]# awk 'NR==5' /etc/passwd
[root@yinwucheng ~]# grep '^lp' /etc/passwd
[root@yinwucheng ~]# sed -n 5p /etc/passwd
4.阐述软硬链接的区别

软链接:相当于windows的快捷方式,删除软链接对源文件无影响,删除源文件则软链接失效
硬链接:和我们通常的备份相似,删除硬链接源文件照常可以用,他们都是同一个inode

5.阐述linux系统下命令的执行流程

第一步:看命令是不是以绝对路径的方式运行
第二步:判断是不是设置了别名
第三步:看命令是外置命令还是内置命令
第四步:若是内置命令,可直接执行,若是外置,再次查看是否有缓存 hash
第五步:通过$PATH变量查找命令,若有 可直接执行,没有的话会报错 command not found

awk相关

1.取出IP地址(3种方式)
[root@yinwucheng ~]# ifconfig eth0 |awk 'NR==2{print $2}'
[root@yinwucheng ~]# ifconfig eth0 |sed -n 2p |sed -r 's#^.*inet (.*)net.*$#1#g'
[root@yinwucheng ~]# ifconfig eth0 |grep 'inet ' | awk '{print  $2}'
2.筛选出/etc/passwd文件中以a开头,并且以nologin结尾的行
[root@yinwucheng ~]# grep '^a.*nologin$' /etc/passwd
3.将“access.log”上传至你的linux服务器

(1)统计出该文件出现过多少个IP地址

[root@yinwucheng ~]# awk '{print $1}' access.log |sort -n |uniq -c |sort -n |wc -l

(2)统计该文件内某一时间内,用户访问的次数最多(例如[01/Aug/2019:11:12:18 在第四列),并按照倒序进行排序

[root@yinwucheng ~]# awk '{print $4}' access.log |sort -n |uniq -c |sort -n

(3)过滤出所有用户请求是GET的行(第六列),并统计每种状态的数量

[root@yinwucheng ~]# awk '{print $6}' access.log |sort -n |uniq -c |sort -n
4.取出/etc/passwd中以“:”为分隔符,第三列(用户UID)以0结尾的行
[root@yinwucheng ~]# awk -F ":" '{print $3}' /etc/passwd |grep '0$'
5.使用hostnamectl查看当前系统信息,取出系统名称与系统版本信息
[root@yinwucheng ~]# hostnamectl |awk 'NR==1{print $3}'
[root@yinwucheng ~]# hostnamectl |awk 'NR==7{print $4,$5}'
6.使用"netstat -lntp"查看当前linux服务器开放的网络端口,过滤出远程连接服务关键字"sshd",取出该服务所占用的端口号"22"
1.获取所有的内容,包含我们需要的值
2.筛选出需要的行
3.取出对应的值
[root@yinwucheng ~]# netstat -lntop |grep 'sshd' |awk '{print $4}' |awk -F ":" '{print $NF}'
[root@chengyinwu ~]# netstat -lntp |grep 'sshd' |awk -F "[ :]+" '{print $5}'

vim相关

1.在vim内操作如下指令,并写出指令对应的理解

(1)命令模式

G:到文件最后一行首行	  gg:到文件顶端首行   5gg:到文件第5行   
$到这行的行尾	  ^到这行的开头	ctrl+f:向下翻页	   ctrl+b:向上翻页
yy复制	3yy:复制3行	 p(小写):粘贴至光标下边	  P(大写):粘贴至光标上边    
dd:删除光标所在行   5dd:删除光标以下5行
dG:从光标删至文件结尾	D:删除并保留空行		
u:撤销操作   x(小写):删除光标所在处一个字符		X(大写):删除光标前一个字符	
r:替换光标所在的一个字符	R:可以连续替换	

(2)命令模式进入编辑模式

	i:进入编辑模式					I:进入编辑模式,光标跳转到当前行的开头					a:向右一个字符插入		
	A:到文件行尾进行插入				o(小写):下一行插入				O(大写)上一行插入

(3)末行模式

	:w保存当前所操作的			:w!强制保存				   :q退出
	:q!强制退出					:wq保存并退出					:wq!强制保存并退出
	:x保存并退出					ZZ(shift+zz)保存并退出		  :number显示行号
	/进入搜索					n:向下查找						  N:向上查找
	:set nu 显示行号
2.在根下创建一个data目录,复制/etc/passwd文件到data目录下,使用vim打开/data目录下的paaswd,光标跳转至最顶端

(1)1行到5行的bin替换成oldboy

  :1,5s#bin#oldboy#g

(2)将匹配到的第一行root替换成123

  :1s#root#123#g

(3)将所有nologin替换成student

  :%s#nologin#student#g

(4)可视块模式删除整个文本所有行的第一个字符

   ctrl+v

(5)可视块模式整个文本所有行的行首插入#号

ctrl+v

(6)可视行模式删除第3行到第6行

shift+v  选中3-6行   按d

(7)将该文件另存为家目录

:w /root/file.txt

VIM相关

1:vim四种模式都是如何进入的
普通模式  vim
编辑模式  i
命令模式  :  /
视图模式  ctrl+v  shift+v
2:vim中如何显示行号
:set nu
3:对比/etc/sysconfig/network-scripts/ifcfg-lo与/etc/sysconfig/network-scripts/ifcfg-eth0(ens32)的区别

image.png

[root@www ~]# cat proxy.conf
server {
	Listen 8080;
	Server_Name vim.OldboyEDU.com;
	location / {
		proxy_pass http://127.0.0.1:8080;
		proxy_set_header Host $http_host;
		proxy_set_header X-Forward-for;
		proxy_intercept_errors on;
		proxy_next_upstream error timeout;
		proxy_next_upstream_timeout 3s;
		proxy_next_upstream_tries 2;
		error_page 500 502 403 404 = /proxy_error.html;
	}
	location = /proxy_error.html {
		root /code/proxy;
	}
}
4.修改vim.OldboyEDU.com为vim.oldboy.com
:%s#OldboyEDU#oldboy#g
5.在server_name行下插入一行 root /code;
o向下插入一行   输入root /code;
6.复制5-14行的内容,然后将其粘贴到14行下面
shift+v  选中5-14行 y复制
14gg  p粘贴
7.删除与proxy_set_header相关的两行全部删除.
定位到这两行 依次用dd删除
8.如上操作完成后,在13-20行前面加上#号
ctrl+v  选中13-20行开头那列  按I --->输# --->敲ESC
9.在普通模式下复制Server_Name所在的行以及该行的下两行,一共三行内容,粘贴至root /code/proxy;这一行的下面
3yy ---> p
10.删除21-23的行,然后保存当前文件
shift+v  选中21-23行 --->敲D ---> :w保存

用户管理相关

1.root的UID与gid是多少
[root@yinwucheng ~]# id
uid=0(root) gid=0(root)
2.用户信息文件etc/passwd由 ':' 为分割符, 分为7个字段,其中每个字段分别代表的含义是
root:x:0:0:root:/root:/bin/bash
    1.root用户
    2.密码占位符
    3.用户uid
    4.组gid
    5.注释信息
    6.用户家目录
    7.登录的shell
3.用户密码文件/etc/shadow由 ':' 为分割符, 分为9个字段,其中每个字段分别代表的含义是
cyw:!!:18113:0:99999:7:2:66275:
第一列:cyw   用户名称
第二列:!!    密码为一长串字符,!!则表示无密码
第三列:18113 最近一长变更密码,从1970年到现在,过了多少天
第四列:0     密码最少使用天数,0无限制
第五列:99999  密码最长使用天数,默认99999不过期
第六列:7      密码到期前,系统会在密码前7天提前变更密码
第七列:2      密码到期后,密码过期后2天强制提示变更用户密码
第八列:66275  账户失效时间,从1970年起,账户在这个日期前可使用,到期后失效
4.每个用户都有一个唯一的UID,UID是怎么区分用户的
用户UID        系统定义
0              超级管理员,最高权限,有极强的破坏能力
1-200          系统用户,用来运行系统自带的进程,默认已创建
201-999        系统用户,用来运行用户安装的程序,此类用户无法登陆系统
1000+          普通用户,正常可以登陆系统的用户,权限较小,执行的任务有限
5.统计/etc/passwd的总行数
wc -l /etc/passwd
6.新建用户u1、u2,密码是redhat,属于同一个附加组grp1,用户u2不允许登陆到系统中
groupadd grp1
useradd u1 -G grp1 -s /bin/bash
passwd u1

useradd u2 -G grp1 -s /sbin/nologin
passwd u2
7.查看用户u1的uid和gid信息
id u1
uid=5003(u1) gid=5004(u1) groups=5004(u1),5003(grp1)
8.创建组distro,其GID为2019
groupadd -g 2019 distro
9.创建用户olddir,其ID号为1005,基本组为distro
useradd olddir -u 1005 -g distro -s /bin/bash
10.创建用户oldman,其ID号为1100,家目录为/home/linux
useradd oldman -u 1100 -d /home/linux -s /bin/bash
11.给用户oldman添加密码,密码为oldboyedu
echo "oldboydey" |passwd --stdin oldman
12.创建用户slackware,其ID号为2002,基本组为distro,附加组peguin;
[root@yinwucheng ~]# useradd slackware -u 2002 -g distro -G peguin -s /bin/bash
13.退出root账户,用admin账户登录,在其家目录下建立一个名为oldboy的文件,并用长格式列出oldboy文件

image.png

14.创建用户harry,要求harry的uid为3000,shell设置为不可登陆shell,观察如下文件/etc/passwd , /etc/shadow,
[root@yinwucheng ~]# useradd harry -u 3000 -s /sbin/nologin

[root@yinwucheng ~]# cat /etc/passwd |tail -1
harry:x:3000:3000::/home/harry:/sbin/nologin
[root@yinwucheng ~]# cat /etc/shadow |tail -1
harry:!!:18113:0:99999:7:::
15.shadow文件中密码为*号和!!代表什么?
* 代表账户已锁定
!!代表无密码

awk相关

1.查看/etc/passwd文件里的第一行,将其倒置输出,要求输出结果为“/bin/bash❌0:0:root:/root:root”
[root@yinwucheng ~]# head -1 /etc/passwd |awk -F ":" '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}'
2.只显示/etc/passwd文件的第五行
[root@yinwucheng ~]# awk 'NR==5' /etc/passwd
3.使用ifconfig查看网卡信息,仅筛选出IP地址
[root@yinwucheng ~]# ifconfig |awk 'NR==2{print $2}'
4.将access.log"上传至你的linux服务器
	(1)统计出该文件IP地址出现的次数,并按正序对其进行排序
[root@yinwucheng ~]# awk '{print $1}' access.log |sort -n |uniq -c |sort -n
	(2)统计该文件内HTTP状态返回码出现的次数(例如200,404,403,在第九列),并按照倒序进行排序
[root@yinwucheng ~]# awk '{print $9}' access.log |sort -n |uniq -c |sort -nr
	(3)过滤出所有状态返回码是200的行,并将这些返回码为200行的全部替换成300
[root@yinwucheng ~]# grep -o '200' access.log |sed 's#200#300#g
5.匹配/etc/passwd里包含root关键字的行(要求至少两种方法,分别使用awk和grep)
方法1:
[root@yinwucheng ~]# awk '/root/' /etc/passwd
方法2:
[root@yinwucheng ~]# grep 'root' /etc/passwd
6.以“:”为分隔符,取出/etc/passwd第一行的最后一列的内容
[root@yinwucheng ~]# awk -F ":" 'NR==1 {print $NF}' /etc/passwd
7.取出以“:”为分隔符,第三列(用户UID)以0结尾的
方法1:
[root@yinwucheng ~]# awk -F ":" '{print $3}' /etc/passwd |grep '0$
方法2:
[root@yinwucheng ~]# awk -F ":" '$3~/0$/  {print $3}' /etc/passwd
8.使用hostnamectl查看当前系统信息,取出kernel内核版本信息(如3.10.0-693.2.2.el7.x86_64)
[root@yinwucheng ~]# hostnamectl |awk 'NR==9 {print $3}'
9.使用"netstat -lntp"查看当前linux服务器开放的网络端口,过滤出远程连接服务关键字"sshd",取出该服务所占用的端口号"22"
[root@yinwucheng ~]# netstat -lntp |grep 'sshd' |awk '{print $4}' |awk -F ":" '{print $NF}'
10.用awk获取/etc/passwd文件中第三行的倒数第二列字段
[root@yinwucheng ~]# awk -F ":" 'NR==3 {print $(NF-1)}' /etc/passwd

用户权限相关

1.对名为fido的文件用chmod 551 fido进行了修改,则它的权限信息是(C)
A.-rwxr-xr-x
B.-rwxr--r--
C.-r-xr-x--x
D.-rw-r-xr-x
2.改变文件所有者的命令为(C)
A.chmod
B.touch
C.chown
D.cat	
3.linux中,文件权限读,写,执行的三种标志符号依次是(A)
A.rwx
B.rox
C.orx
D.wrx
4.如果执行命令"chmod 746 file.txt"那么该文件的权限是?(A)
A.rwxr--rw-
B.rw-r--r--
C.--xr--rwx
D.jrwxr-r--
5.linux文件权限一共10位长度,分成四段,第三段代表的含义是
 (指所属于这个组的成员对于这个文件具有,可读可写可执行的权限 )
6.当用户zabbix对/testdir 目录有写和执行权限时,该目录下的只读文件file1 是否可修改和删除?
   强制可以修改也能删除
7.复制/etc/fstab文件到/var/tmp下,设置文件所有者为wangcai读写权限,所属组为sysadmins组有读写权限,其他人无权限
[root@yinwucheng ~]# cp /etc/fstab /var/tmp/
[root@yinwucheng ~]# cd /var/tmp/
[root@yinwucheng /var/tmp]# useradd wangcai
[root@yinwucheng /var/tmp]# groupadd sysadmins
[root@yinwucheng /var/tmp]# ll 
total 4
-rw-r--r--. 1 root root 501 Aug  6 20:07 fstab
[root@yinwucheng /var/tmp]# chown wangcai:sysadmins fstab
[root@yinwucheng /var/tmp]# chmod 660 fstab
[root@yinwucheng /var/tmp]# ll
-rw-rw----. 1 wangcai sysadmins 501 Aug  6 20:07 fstab
8.创建下面的用户、组和组成员关系,用户natasha,使用admins作为附属组,用户harry,也使用admins作为附属组,用户sh,不可交互登录系统,natasha,harry,sh密码都是centos
[root@yinwucheng ~]# groupadd admins
[root@yinwucheng ~]# useradd natasha -G admins
[root@yinwucheng ~]# useradd harry -G admins
[root@yinwucheng ~]# useradd sh -s /sbin/nologin
[root@yinwucheng ~]# echo "centos" |passwd --stdin natasha
Changing password for user natasha.
passwd: all authentication tokens updated successfully.
[root@yinwucheng ~]# echo "centos" |passwd --stdin harry
Changing password for user harry.
passwd: all authentication tokens updated successfully.
[root@yinwucheng ~]# echo "centos" |passwd --stdin sh
Changing password for user sh.
passwd: all authentication tokens updated successfully.
9.修改jack的uid为666,用户名改为jacky
[root@yinwucheng ~]# useradd jack -u 777
[root@yinwucheng ~]# usermod jack -u 666 -l jacky
[root@yinwucheng ~]# id jacky
uid=666(jacky) gid=7782(jack) groups=7782(jack)
10.把jacky的密码设置为123
[root@yinwucheng ~]# echo "123" |passwd --stdin jacky 
Changing password for user jacky.
passwd: all authentication tokens updated successfully.
11.切换控制台,用jacky帐户登录系统
su - jacky
12.将rose加入到root组,用命令查看是否加入成功,查看/etc/group中root组中有无rose
[root@yinwucheng ~]# useradd rose
[root@yinwucheng ~]# usermod rose -G root
[root@yinwucheng ~]# grep 'root' /etc/group
root:x:0:rose
13.以root身份建一个目录/test,查看这个目录的默认权限是?
[root@yinwucheng ~]# ls -ld /test/
drwxr-xr-x. 2 root root 6 Aug  6 17:55 /test/     755
14.进入/test目录中,建一个文件abc,查看其默认的权限为?
[root@yinwucheng /test]# ls -ld abc 
-rw-r--r--. 1 root root 0 Aug  6 17:56 abc       644
15.转换为普通用户jacky登录,看能否进入/test目录,能否在里面创建文件,能否用vim编辑abc文件并保存退出
可以进去   不能创建文件  没权限   编辑保存不了
16.新建一个用户oldwoman,密码123,授予该用户可以使用ls命令操作任何目录,切换到该用户验证权限
[root@yinwucheng ~]# useradd oldwoman
[root@yinwucheng ~]# echo "123" |passwd --stdin oldwoman
Changing password for user oldwoman.
passwd: all authentication tokens updated successfully.
[root@yinwucheng ~]# visudo
加入  oldwoman  ALL=(ALL)     /usr/bin/ls
[root@yinwucheng ~]# visudo -c
/etc/sudoers: parsed OK
17.将oldwoman用户的权限改为可以使用所有命令,并切换至该用户创建文件oldwoman.txt验证
oldwoman  ALL=(ALL)     ALL
vim oldwoman.txt
18.使用"ls -l /"以长格式查看根目录,写出每一列所代表的含义

image.png

19.当用户mysql对/data/DB目录无读权限,但是拥有写和执行权限,意味着能做哪些操作,无法做哪些操作?
可以创建,可以删除文件
不能查看目录下面有哪些文件 相当于不能使用ls
20.将root密码修改为"bgx123"
passwd 
bgx123
原文地址:https://www.cnblogs.com/yinwu/p/11369399.html