Linux学习笔记之五(遗漏的补充)

接四。

我在想普通用户可以像这样吗?,上面是root是所有者。


可以看到lcl还是被拒绝了。


上面是root在属组里。下面root在o里。

root依旧是霸道横行,毫不讲理,总结上面几张图,root用户的权限还应该增加一条,无论root在u,g,还是o里,我的是我的,你们的(g,o的权限)也是我的,我猜想root用户的权限可能是ugo或的结果,那么当chmod u-x之后,root也无法执行/bin/cat就是自然的咯,而在没有u-x之前,是可以看的。


从上面的图可以看到chown命令之后flags就会消失。其实也不是因为所有者变化了,后面把u从root由改回去lcl,还是一样没有flags。对root也是一样。




提权

suid上面已经讲了很多了。图片里说都是以root执行,这个问题我们上面纠正过了,不过没有举例子,来举一个例子。


root还是依旧的不要脸。


可以看到lcl改密码的时候进程的uid就是lcl,但是由于lcl没有/etc/shadow的写权限,所以失败了。我现在给lcl加了一个w权限



确实是以文件所有和uid在跑进程。但是密码最后还是修改失败了。

这个说明其实改密码没有那么简单的。不是你在/etc/shadow加个写权限就能完成的,还需要其它操作,如果想知道还有什么其它操作,可以到

https://www.bilibili.com/video/av18945696/?p=4,前10分钟。

以上内容来自https://www.bilibili.com/video/av18945696?p=12。

前10分钟就可以了。

下面介绍提权的另一种方法sudo(super user do)

为什么给了一个浩克的图呢?这是一个比喻,普通用户“发怒”的时候可以行驶超级用户的权限(班纳博士变浩克),怎么做呢?前面我还曾经吐槽过。首先我们先来对比一下:

为什么lcl可以sudo,而a1不可以呢?看到原因是a1不在sudoers文件里面。这个文件在哪里呢?一般都会在/etc里面。确实有/etc/sudoers。我们可以简单visudo就打开。(visudo 的效果相当于vim /etc/sudoers,切到扩展命令模式:q可以退出)。

这两行的意思是 wheel组的用户可以在任何地方,以任何用户执行任何权限,但是需要输入这个用户的密码。下一行有个前面加注释#的那一行的区别是,不需要输密码。先来试一下,改为:

就真的不用输密码了。

那么也就是说,只要把用户加入wheel组里,我们就可以用sudo为所欲为了。但是怎么加入sudo呢?我们需要useradd或者usermod。

这两个命令都在sbin里只有有root权限的人才可以执行。而且/etc/sudoers和etc/group只有root才有写的权限。所以普通用户如果没有不是root的亲信(可以把wheel组的人看作是root的亲信)是不可能修改上面的配置文件的,这样我们可以理解为什么sudo的时候只需要输自己的密码而不是root的密码,因为是root的亲信嘛,root很信任它们。(当然我们甚至可以改为不用输任何密码)。我们演示一下普通用户成为root亲信的过程。


less和more

前面我们一直用cat看文件,但是其实一般用的更多的是less,more稍微简单一些,不过我觉得用vim就行了,想了解less和more的可以看,

https://www.cnblogs.com/lidabo/p/6196457.html。

补充

主要是列出一些漏掉的知识,前面用过很多次的就简单复习一下。

一个用户可以在多个组里,这其实我们都知道,最上面的superuser就是root,它是一个超级用户,很霸道。组是一个逻辑容器。访问文件的是进程,用户执行程序产生进程,进程会有一个uid和gid,那么进程会有相应的权限,当然还有高级权限setuid和setgid是可以提权的。为什么要创建组?因为如果你想对几个用户批量赋予权限,那么建立组效率会很高。

Linux看到的是uid和gid,root的uid和gid都是0。uid和gid是可以一样的,因为它们的表示意义不同,不会互相影响。

主组和附加组

这一块是新的内容,我们来看一下。

我们看到lcl是属于两个组的,但是gid只有一个,gid后面的我们称之为主组,groups里除了主组之外的成为附加组。我们前面一直在用的-G其实是加入附加组的意思。suppelementary是附加的意思,primary是主要的意思。-g才是改变主组的意思,我们创建用户的时候默认的主组都是和自己重名的组,因为用户必须属于一个主组,刚创建的时候如果不指定主组,那么就会是默认设置。

为什么要有主组和附加组呢?前面说过因为gid只有一个,那么主组和附加组的待遇能一样嘛?肯定是不能的对吧,应该以主组优先啊,因为gid就是主组的啊。当然,通过前面的学习,我们知道wheel这个组还有些特殊的,都是root的亲信或者走狗,里面的用户可以使用sudo命令,有了sudo,除了文件的x,其它都不是事,而且还可以拿别人的x来用,可谓是真不要脸。但是前面没有举过相应的例子,这里就举一下:


看到这个sudo还有有点奇葩的,改密码用了两个进程,我们前面用setuid提权的方式只有一个进程。就像这样:


主组优先,我们来看一个例子。首先呢,创建一个用户li,把它加入root组。

然后改root为主组。

上面看看出来一个事情,root组和root可是大相径庭。root可以为所欲为,但是root组里的用户不行,因为看到上面3的oot组对没有r权限时,主组是root的li还是没办法读3文件。直到我们给root组读权限之后,cat 3才没有报错。嘛,这样的安排还算合理,已经有root和root的走狗(wheel里的sudoers)可以对除了文件的x为所欲为了,如果再让root的家人(root组的成员)为所欲为,怕不是要天下大乱。root和root组权限不同也可以理解,因为先判断的是u,如果用户是root,就停止了,就像逻辑短路,后面是不是root组根本就不会判断到。看到上面会给人一种感觉,就是似乎附加组一点用都没有(目前学过的除了wheel)。

然而呢,在facl方式里的确有用。li的主组是root,li只是附加组。

我们给li组一个读的权限,就可以读了,把li组的权限删除,cat 3就会又被拒绝。

说明附加组只要在facl方式中才可以起作用,如果主组没有权限,看附加组的,就相当于是取所有属组权限的或。而在ugo方式里附加组归在o里面的,因为只有ugo,不是u,不是g,自动归到o里。主组和附加组就说到这里。

每一个进程都有一个用户yum -y install httpd的例子前面已经说过了,主要是为了说明不是所有进程的启动者都是root。

上面还告诉了我们/etc/passwd的读法,大家自己看看就行了。

注意下面的系统约定是centos6的,7里面1000开始都是普通用户,安装centos的时候设的lcl的id是1000。


不过系统用户和普通用户在权限上没有什么区别,只有root才是superuser。第二条,所有权力当然我们知道也不太准确,程序文件的x还是有一些限制的。第三条可以理解为,我的是我的,你的还是我的,看过前面的都知道是什么意思了。

前面也说过/etc/shadow里面的密码是加密过的,这里给出了加密方式。

创建用户和组我们都知道了,如何删除?上面给出了答案。



grep过滤函数我们就稍微看一下用法:

这个pattern和python里面的pattern差不多,最好是r'',还有里面可以用正则表达式,比如^l,表示以l开头。这里再稍微补充一下上面漏掉的一个内容。

前面说过/etc/group里面存着组的信息,但是我们还想有的组后面没有成员,怎么回事呢?

有两种可能,第一,组里确实没有成员,比如a1组。因为我们认为把a1的主组改了。还有可能这个组是和自己重名的用户的主组,就比如a2。如果组后面对应有成员,应该是这个组是后面成员的附加组,当然也有奇葩,就是lcl,lcl组后面还显示了lcl用户,这大概是lcl是因为安装虚拟机系统的时候设置的用户的缘故。下面是chage的用法,看到它是对修改密码天数间隔的一个限制。




关于shell用/sbin/nologin这个结果,你可以去

https://www.bilibili.com/video/av18740388/?p=6

43分开始看,我就不演示了,目前知道它是没办法在Xshell上用的就够了。

需要注意的是usermod 和gpasswd后面组和用户的顺序是反的。英文应该是没什么问题了。

其实还可以暴力添加和删除,vim /etc/group直接去修改也是可以的。

没改之前:


之后


删除也可以用类似的办法。其它的命令就不演示了,也很好理解,你们可以自己去试试。

以上是来自https://www.bilibili.com/video/av18740388/?p=9的补充。

touch是创建空文件,路径可以是绝对路径或者相对路径,要注意的是touch /home/file5 file6的意思是file6是创建在当前目录的,它是相对路径,而不是在/home,但是{}就不一样。



mkdir -p我们知道是递归创建,就是如果父目录没有,它帮你创建,-v呢?

似乎并没有什么意思,就是多了一个提示而已,不过这样不容易出错了,按照自己喜好来吧,-v可要可不要。

对于cp来说-v也只是起到一个提示的作用,也可以不要。

举一个例子

可以看到复制哪个文件是需要哪个文件的读权限的。按理说应该只需要文件复制目的地的w权限就可以了,不过我发现必须wx都有才能成功,不过这不是个例,其实是我们前面研究的还不够,在目录里创建和删除文件必须同时有wx才可以成功。


如果一个目录只有w权限,是没有办法创建和删除文件的(不举root用户的原因大家应该心知肚明)。

只有x权限也不可以创建和删除文件。

这里补了前面很大的一个知识漏洞,为什么文件删除和创建必须要wx同时都有呢?要w这个没什么好说的,为什么还要有x呢?我是这么理解的,touch cf/wo,这个命令里本身就有访问cf目录的含义,所以有x也应该的(可能你会觉得有点牵强)。



复制目录的时候,需要加一个-r,不管目录是不是空的。如果要复制的目录是空的,可以没有x权限,如果不是空的,则必须有x权限。

lcl没有对wqn空文件夹的x权限也可以移动,但是对有内容的666是不行的,lcl必须有666的x权限才可以复制。

cp 文件1 文件2也是可以的。

就是新建一个2文件,把1的内容,权限等等信息都拷贝过来。


移动就是剪切了,剪切的过程是要先删除,后创建,所以对目录权限的要求都是要求有wx的。

其它操作看一看图吧,我觉得后面写的解释很清楚了。rm加-f就是不会再问你了,不然就会很烦,会一直问你。

不要轻易用rm -rf /*,很危险。下面可以删除整个根目录,当然不要作死。

删除文件最好用相对路径,不然-r后果很严重。



我们要查看的是文本文件,前面其实也演示过,如果看二进制文件会有乱码。file 可以看文件类型。



less已经介绍过了。head,tail看指定的前面几行和后面几行,不写默认都是10行。

动态查看就是会更新的。动态查看只有^c退出了。taif=tail -f。


grep可以对文本文件内容过滤,格式前面也介绍过了。

以上来自

https://www.bilibili.com/video/av18740388/?p=9

45分钟开始有一个复杂的命令,有点意思的,不过还没学到,是进程管道的内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值