Linux编程之权限系统与工具使用(二),2024年最新含面试题+答案

-b:删除所有的ACL权限。

-d:设定默认的ACL权限。

-k:删除默认的ACL权限。

-R:递归设定ACL权限。

1.4、sudo权限

sudo是linux系统管理指令,操作对象是系统命令。是允许让普通用户执行部分或者全部的系统管理员才能执行的命令的一个工具,限制某个普通用户有限的命令有root权限(比如说重启,备份,添加用户,ifconfig命令等)。sudo 执行时候不需要知道超级管理员的密码。

sudo是超级用户赋予普通用户权限才能使用,sudo为系统管理员提供配置文件,使用visudo命令(这个命令可以防止两个用户同时修改它,也能进行有限的语法检查)可以打开该配置文件:

[root@localhost ~]# visudo 这个命令实际是打开了/etc/sudoers文件

Sudoers allows particular users to run various commands as

the root user, without needing the root password.

Examples are provided at the bottom of the file for collections

of related commands, which can then be delegated out to particular

users or groups.

… …

在文件98行有个例子

格式解释: 用户名(给哪个用户赋予权限,这里是root) 被管理的主机地址(第一个ALL)= (可使用身份(第二个ALL),这个可以省略直接跟授权的命令) 授权的命令(要写绝对路径,命令写的越简单权限就越大,越详细普通用户获得权限就越小)
使用 man 5 sudoers 命令查看配置文件详细解释

普通用户没有关闭系统的权限,如下提示。

[song@localhost ~]$ shutdown -r now
==== AUTHENTICATING FOR org.freedesktop.login1.reboot ===
Authentication is required for rebooting the system.
Authenticating as: root
Password: Failed to execute operation: 连接超时
Must be root.
polkit-agent-helper-1: pam_authenticate failed: Authentication failure

在配置文件中最后一行给song用户添加shutdown权限并保存

用song账号登录并用sudo -l 命令显示出自己(执行 sudo 的使用者)的权限。

[song@localhost ~]$ sudo -l
[sudo] password for song:
匹配此主机上 song 的默认条目:
requiretty, !visiblepw, always_set_home, env_reset, env_keep=“COLORS
DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS”, env_keep+=“MAIL PS1
PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE”, env_keep+=“LC_COLLATE
LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES”, env_keep+=“LC_MONETARY
LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE”, env_keep+=“LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY”,
secure_path=/sbin:/bin:/usr/sbin:/usr/bin

用户 song 可以在该主机上运行以下命令:
(ALL) /sbin/shutdown -r now 这里song身份就被切换成ALL

这里用sudo命令后面加配置文件赋予的命令去执行,不能写错,不然会执行不了,如下。

[song@localhost ~]$ sudo /sbin/shutdown -h now
对不起,用户 song 无权以 root 的身份在 localhost.localdomain 上执行 /sbin/shutdown -h now。

所以写成配置文件里一模一样的就可以执行

[song@localhost ~]$ sudo /sbin/shutdown -r now

如果写多个可以用逗号分开

再看下

[song@localhost ~]$ sudo -l
匹配此主机上 song 的默认条目:
requiretty, !visiblepw, always_set_home, env_reset, env_keep=“COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS”, env_keep+=“MAIL PS1 PS2 QTDIR USERNAME
LANG LC_ADDRESS LC_CTYPE”, env_keep+=“LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES”, env_keep+=“LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE”,
env_keep+=“LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY”, secure_path=/sbin:/bin:/usr/sbin:/usr/bin

用户 song 可以在该主机上运行以下命令:
(ALL) /sbin/shutdown -r now, (ALL) /sbin/ls

上面的例子是给某个用户赋予权限,当然我们也可以给一组用户赋予权限。也是在配置文件中

Same thing without a password

%wheel ALL=(ALL) NOPASSWD: ALL

上面wheel是组名,前面要加上%号,其它设置和用户一样。

sudo命令主要参数说明:

1.5、文件的特殊权限SetUid & SetGid & Sticky BIT

linux系统文件中除了读(r),写(w),执行(x)权限外,还有s和t这两个特殊的权限。当s这个标志出现在文件所有者的x权限上时,此时就被称为SetUid(简称SUID),当s出现在用户组(g)上就是SetGid,当s出现在其他用户(o)上就是Sticky Bit(简称SBIT)。

SetUid的功能:

只有可执行的二进制程序才能设定SUID权限,就是这个文件可以执行才可以设定,否则不起作用。
命令执行者要对该程序拥有x(执行)权限。
命令执行者在执行该程序是获得该程序文件属主身份,打个比方,user1用户没有passwd文件的读取权限,那么user1用户希望能看见passwd文件内容,只能将自己的身份添加到passwd文件所属的用户组,或 者是用root用户登录,或者就是修改passwd的文件权限,也就是setuid这个特殊的文件权限。
SetUid权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效。

赋SUID权限方式:

数字赋予法:chmod 4755 文件名。

字母赋予法: chmod u+s 文件名 这里s就是SUID的意思,取消可以用chmod u-s 文件名。

普通用户不能设置SUID权限。要用root用户执行。

[song@localhost ~]$ chmod 4755 /bin/vi
chmod: 更改"/bin/vi" 的权限: 不允许的操作

下面有个文件aaa,并且用户对该文件拥有执行权限,我们去给该文件添加SUID权限。

红色箭头那里之前x变成了s,表示aaa文件拥有了s权限,同时aaa文件也变成了红色,表示不安全。

如果要是用户对aaa没有执行权限呢。我们创建一个新文件bbb,并修改其权限不包含执行权限。然后在赋予SUID。

这里变成了大S,这里大S表示不能正确使用的。

我们知道用户的密码是保存在/etc/shadow文件中,我们看下这个文件的权限

[root@localhost tmp]# ll /etc/shadow
---------- 1 root root 1696 5月 27 18:58 /etc/shadow

发现这个文件的权限是000,用户属主是root,那么除了root用户能修改密码外,用户自己同样也能修改密码,为什么没有写入这个文件的权限去修改密码,这是因为这个SUID功能。我们看下passwd这个命令就知道原因了。

[root@localhost tmp]# which passwd
/usr/bin/passwd
[root@localhost tmp]# ll /usr/bin/passwd
-rwsr-xr-x. 1 root root 27832 6月 10 2014 /usr/bin/passwd

首先passwd命令是可执行的,同时发现passwd命令默认就有SUID权限,而且任何用户对这个命令也有执行权限(最后有x),所以普通用户在执行这个命令的时候就会拥有这个命令所属主的身份,变成了root,命令执行完后这个身份就消失了又变成普通用户。

系统还有其他的命令也包含SUID权限,比如su命令。

SUID权限比较灵活,所以不能随意设置,不然会对系统造成潜在的危害。比如vi命令,如果添加SUID权限,那么普通用户获取root身份就可以修改所有的文件。

所以SUID(也包括SGID)权限原则:

关键的目录要严格控制写权限,比如根目录“/”,“/usr”目录等。
用户的密码设置要严格遵守密码三原则(复杂性,易记性,时效性)。
对系统中默认应该具有SUID,SGID权限的文件列表出来,定时检查有没有之外的文件被设置SUID,SGID权限。可以通过find命令查找。

[root@localhost tmp]# find / -type f ( -perm -04000 -o -perm -02000 ) -exec ls -lg {} ; 04000表示SUID 02000表示SGID -o表示或者的意思
find: ‘/proc/26739/task/26739/fdinfo/6’: 没有那个文件或目录
find: ‘/proc/26739/fdinfo/6’: 没有那个文件或目录
-rwsr-xr-x 1 root 0 5月 28 14:19 /root/tmp/aaa
-rwSr–r-- 1 root 0 5月 28 14:30 /root/tmp/bbb
-rwsr-xr-x. 1 root 32584 6月 10 2014 /usr/bin/fusermount
-r-xr-sr-x. 1 tty 15344 6月 10 2014 /usr/bin/wall
-rwsr-xr-x. 1 root 64200 3月 6 2015 /usr/bin/chage
-rws–x–x. 1 root 23960 3月 6 2015 /usr/bin/chfn
-rws–x–x. 1 root 23856 3月 6 2015 /usr/bin/chsh
-rwsr-xr-x. 1 root 44232 3月 6 2015 /usr/bin/mount
-rwsr-xr-x. 1 root 32064 3月 6 2015 /usr/bin/su
-rwxr-sr-x. 1 tty 19536 3月 6 2015 /usr/bin/write
-rwsr-xr-x. 1 root 78168 3月 6 2015 /usr/bin/gpasswd
-rwsr-xr-x. 1 root 41752 3月 6 2015 /usr/bin/newgrp

在上面我们新创建一个文件系统会根据umask的设置赋予新文件一个权限,那么umask的值是四位,如下:

[root@localhost ~]# umask
0022

可是我们通过chmod命令给文件赋予权限一般都是三位数字,比如755,644等,那么这个umask后三位022是基本默认权限,第一位0就是特殊权限。

1.6、chattr权限(不可改变位权限)

chattr命令用于改变文件属性,只针对root用户有效。

格式:chattr [ + - = ] [选项] 文件或目录,这里的[ + - = ]是控制文件的属性。

  • : 增加权限。
  • : 删除权限。

= : 赋予/等于某权限。

常用选项:

i: 即insert,不得任意更动文件或目录。

如果对文件设置i属性,那么不允许对文件进行删除,重命名,添加和修改数据,相当于锁定这个文件。如果对目录设置i属性,那么只能修改目录下的文件数据(文件数据保存在文件自己的数据块中),不允许建立和删除文件。
a:即append,让文件或目录仅供附加用途。

如果对文件设置a属性,只能在文件中添加数据(因为vi被禁用了,所以用echo >> 输出重定向追加的方式),不能删除也不能修改数据。如果对目录设置a属性,那么只允许在目录中新建和修改文件,不允许删除文件,可以适用于各种日志文件。

案例:

给文件添加i属性

[root@localhost tmp]# chattr +i aa.txt
[root@localhost tmp]# lsattr aa.txt 用lsattr命令查看
----i----------- aa.txt

不允许删除

[root@localhost tmp]# rm -rf aa.txt
rm: 无法删除"aa.txt": 不允许的操作

给目录添加i属性

[root@localhost tmp]# chattr +i dir
[root@localhost tmp]# lsattr -d dir
----i----------- dir
[root@localhost tmp]# cd dir
[root@localhost dir]# touch a.txt
touch: 无法创建"a.txt": 权限不够

1.7、Linux常用权限

1.600(rw------):只有root有读写权限。

2.644(rw-r–r–):只有root有读写权限;group用户和other用户只有读权限。

3.755(rwxr-xr-x):root有读、写、执行权限;group用户和other用户只有读、执行权限。

二、Linux下Vim工具使用介绍

所有的Unix Like系统都会内建vi文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是vim编辑器。vim具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

什么是vim?
Vim是从vi发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说,vi是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。vim则可以说是程序开发者的一项很好用的工具。

连vim的官方网站(http://www.vim.org)自己也说vim是一个程序开发工具而不是文字处理软件。

vim键盘图:

vi/vim的使用:
基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i:切换到输入模式,以输入字符。
x:删除当前光标所在处的字符。
::切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式;按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式:
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符;
ENTER,回车键,换行;
BACK SPACE,退格键,删除光标前一个字符;
DEL,删除键,删除光标后一个字符;
方向键,在文本中移动光标;
HOME/END,移动光标到行首/行尾;
Page Up/Page Down,上/下翻页;
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线;
ESC,退出输入模式,切换到命令模式;

底线命令模式:
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q:退出程序;
w:保存文件;
按ESC键可随时退出底线命令模式。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
img

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

9aa1f2c54.png)

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-9om4uI3u-1712685434690)]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值