1.文件默认不能建立为执行权限,必须手工赋予执行权限。所以文件的默认权限最大为666。这样能保护系统安全。
2.默认权限要换算成对应的字母权限在相减而不是数字。
3.建立文件或目录之后的默认权限,为666减去umask的值。
计算方式如下:
- 文件默认最大权限666,umask=022
-rw-rw-rw- 减去 -----w–w- 等于 -rw-r–r-- (644)
- 文件默认最大权限666,umask=033
-rw-rw-rw- 减去 -----wx-wx 等于 -rw-r–r-- (644)
其实是做了一个逻辑与的运算。
目录的默认权限:
1.目录默认权限最大是777。
2.目录默认权限换算成字符在相减。
3.建立目录之后的默认权限,是777减去umask的值。
修改umask的值:
使用umask + 值,比如umask 0000;
不过这样只是临时生效,要永久修改就要修改环境变量配置文件/etc/profile
1.3、ACL(Access Control List )权限
linux系统中一个文件只有一个所属组,一个所有者,acl权限是解决用户对文件权限不足,也就是用户身份不够的情况下。打算让某个用户对这个文件有权限,不用考虑这个用户是哪个所有组
还是其他人。用acl给这个用户赋予权限。ACL权限 是解决用户对文件身份不足的问题(该用户不属于 拥有者 所属组 其他人)。系统是否支持ACL是与文件系统有关的。
首先查看系统分区中ACL权限是否开启,命令如下:
先看下分区情况
[root@localhost tmp]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 39134548 29770328 9364220 77% /
devtmpfs 923152 0 923152 0% /dev
tmpfs 933636 80 933556 1% /dev/shm
tmpfs 933636 9128 924508 1% /run
tmpfs 933636 0 933636 0% /sys/fs/cgroup
/dev/mapper/centos-home 19105792 33080 19072712 1% /home
/dev/sda1 508588 177692 330896 35% /boot
.host:/ 127927292 118371212 9556080 93% /mnt/hgfs
tmpfs 186728 12 186716 1% /run/user/42
tmpfs 186728 0 186728 0% /run/user/0
因为我安装的是centos7,所以我的系统文件系统是xfs类型,用xfs_growfs命令查看,如果文件系统是ext2/ext3/ext4可以用dumpe2fs命令查看指定分区详细文件系统信息。
[root@localhost tmp]# xfs_growfs /dev/sda1
meta-data=/dev/sda1 isize=256 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0 spinodes=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
查看系统是否支持ACL,使用dmesg命令(可以帮助用户了解系统的启动信息,可以查看ACL信息)查看,发现xfs文件系统是默认支持ACL权限的。
查看ACL权限:
设定ACL权限:
setfacl 选项 文件名
选项:
-m:设定ACL权限。
-x:删除指定的ACL权限。
-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
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Linux运维工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Linux运维知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip1024b (备注Linux运维获取)
为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!
这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。
本份面试集锦涵盖了
- 174 道运维工程师面试题
- 128道k8s面试题
- 108道shell脚本面试题
- 200道Linux面试题
- 51道docker面试题
- 35道Jenkis面试题
- 78道MongoDB面试题
- 17道ansible面试题
- 60道dubbo面试题
- 53道kafka面试
- 18道mysql面试题
- 40道nginx面试题
- 77道redis面试题
- 28道zookeeper
总计 1000+ 道面试题, 内容 又全含金量又高
- 174道运维工程师面试题
1、什么是运维?
2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?
3、现在给你三百台服务器,你怎么对他们进行管理?
4、简述raid0 raid1raid5二种工作模式的工作原理及特点
5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?
7、Tomcat和Resin有什么区别,工作中你怎么选择?
8、什么是中间件?什么是jdk?
9、讲述一下Tomcat8005、8009、8080三个端口的含义?
10、什么叫CDN?
11、什么叫网站灰度发布?
12、简述DNS进行域名解析的过程?
13、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
3、RabbitMQ是什么东西?
14、讲一下Keepalived的工作原理?
15、讲述一下LVS三种模式的工作过程?
16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?
17、如何重置mysql root密码?
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-oEUq2iXx-1712529801303)]