(七)Linux学习笔记基于centos7+secureCRT8.5

本文详细介绍了Linux系统中文件权限的管理,包括文件的三个对象(用户、主组和其他人)、三种权限(读、写、执行)以及如何使用chmod、chown和chgrp命令来改变文件权限和所有者。此外,还讲解了umask设置默认权限和特殊权限(SUID、SGID、SBIT)的概念及其应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言
Linux中一切皆文件。
所以这里的权限(文件权限)、用户(文件所属对象)都与文件紧密关联。

Linux文件权限

Linux是一个多用户多任务的系统,经常会有多个用户登录并在自己的home目录下面建立自己的文件与文件夹。Linux为了更好地管理这些多用户下的文件,因此针对文件设置了3个不同对象。

1.文件所属对象包括:
文件拥有者 user——U,一般为当前登录并创建该文件的用户
文件所有者主组中的用户 group——G
其他人 others——O

2.权限分为三类:
普通权限
默认权限
特殊权限

一、普通权限——r、w、x

普通权限包括:
Read读 r 4
Write写 w 2
Execute执行 x 1
(重点)对于文件与目录意义不同:
在这里插入图片描述

查看所有
ll  看下当前目录下所有文件及目录的详细信息
ll -d */  查看当前目录下所有目录的详细信息

查看具体文件
ls -l <文件名>  列出文件的详细信息
等同于 ll <文件名>

查看具体目录
ls -ld <目录名>  列出目录的详细信息
等同于 ll -d <文件名>

以下命令运行结果中:
第一列表示的是权限
第二列表示有多少文件名链接到这个节点(i-node)上
第三列表示这个文件的拥有者
第四列表示这个文件的所属群组
第五列表示文件大小,默认单位为字节(Bytes)
第六列为创建这个文件的日期和最近修改日期
第七列为文件名,点 . 代表隐藏文件

在这里插入图片描述

权限一共通过 10 个字符来表示,以下是具体解释:
在这里插入图片描述

改变文件权限和属性

修改权限命令:
1.chmod:改变文件权限,即change mode
	第一种方式:字母 r w x
	第二种方式:数字 4 2 1
2.chown:改变文件所有者,即change owner
3.chgrp :改变文件所属群组,即change group

1.chmod命令——修改文件的普通权限

chmod命令,即change mode修改权限,由超级用户即管理员或由文件的所有者(一般是文件的创建者)来操作。

一般,目录rx权限同时具备
能不能删除文件取决于是否对其所在目录有w权限


两种方式:

①字母
chmod [u,g,o,a] [+ - =] <文件名/目录名>
r可读
w可写
x可执行

u 文件所有者
g 文件所有者主组中的用户
o 其他人
a 指all所有代表三类用户

=表示赋予指定权限
+代表增加权限
-代表去除权限

②数字(常用)
chmod [数字1][数字2][数字3] <文件名/目录名>
数字范围{1、2、3、4、5、6、7}
第1个数字代表对文件所有者u的权限
第2个数字代表对文件所有者主组中的用户g的权限
第3个数字代表对其他人o的权限

r 表示 4
w 表示 2
x 表示 1
在这里插入图片描述
rwx权限=4+2+1=7
rw-权限=4+2=6
r-x权限=4+1=5
r–权限=4
-wx权限=2+1=3
-w-权限=2
–x权限=1

字母

在文件所有者或root用户登录情况下运行以下命令
chmod [u,g,o,a] [+ - =] <文件名/目录名>

+增加权限
chmod o+r <文件名/目录名>   给其他人增加读权限
chmod g+x <文件名/目录名>   给同文件群组用户增加执行权限
chmod a+r <文件名/目录名>    给所有u、g、o用户增加读权限

-去除权限
chmod a-x <文件名/目录名>
chmod o-r <文件名/目录名>

=指定权限,原则:有啥权限赋啥,不要加-短杠,-后权限被屏蔽,不作数
chmod g=rx <文件名/目录名>
chmod u=rx <文件名/目录名>
chmod o=w <文件名/目录名>

数字(常用)

在文件所有者或root用户登录情况下运行以下命令
chmod [数字1][数字2][数字3] <文件名/目录名>

为每类用户直接指定所具有的权限
chmod 777 <文件名/目录名>
chmod 755 <文件名/目录名>
chmod 644 <文件名/目录名>

2.chown命令——改变文件所有者、改变文件所属组

chown命令,即change owner修改所有者,由超级用户即管理员来操作。
chown 还可以直接修改文件所属组

root用户下运行以下命令
以下<用户名>指不是文件所有者且系统中存在的用户名
以下<文件名>皆可替换为<文件名/目录名>

chown <用户名> <文件名>        改变文件所有者

chown :<组名> <文件名>          改变文件组名
等同于 chgrp <组名> <文件名>

chown <用户名>:<组名> <文件名>   改变文件所有者及组名

chown <用户名>: <文件名>        改变文件用户名及组名,组名为用户名的主组
等同于 chown <用户名>. <文件名>

3.chgrp命令——改变文件所属组

chgrp命令,即change group修改文件所属组,由超级用户即管理员或由文件的所有者(一般是文件的创建者)来操作。

chgrp <组名> <文件名/目录名>  改变文件组/目录组

二、默认权限——目录最大权限777、文件最大权限666

umask命令
设置创建目录、文件时的默认权限
用户创建目录时的默认权限=目录的最大权限777-该用户的umask值后三位
用户创建文件时的默认权限=文件的最大权限666-该用户的umask值后三位
文件的最大权限在目录的基础上-111去除掉文件的x执行权限,因为x执行权限是文件的最高权限,保证安全性。

1.对于root用户

在这里插入图片描述
默认情况下,umask=0022
目录默认权限:777-022=755
文件默认权限:666-022=644

2.对于普通用户

在这里插入图片描述
默认情况下,umask=0002
目录默认权限:777-002=775
文件默认权限:666-002=664

3.修改umask值

临时修改umask值,重启后失效
umask 0123

不建议修改umask值!!!

三、特殊权限——冒险位、强制位、粘滞位

1、SUID
冒险位,主要对命令、或者二进制文件,设置了SUID,那么其它用户在执行该文件时,就会以该文件的属主权限来执行。
2、SGID
强制位,主要针对目录进行授权,共享目录,设置了SGID,其它任意用户在该目录下所创建的文件或目录,它们的属组用户都会与父目录相同。
3、SBIT
粘滞位,主要针对目录,设置了SBIT,即便该目录对所有用户都有写的权限,除了root用户,其它用户也只能对自己所创建的文件进行删除移动。

特殊权限
通常权限所在位置为普通执行权限x处,rwx → rws、rwt
之前讲到的设置文件、目录的默认权限取的是umask值的后3位,umask值一共有4位,第一位是作为特殊权限,4代表冒险位,2代表强制位,1代表粘滞位

1.冒险位——set uid【SUID】、代表数字4

问题引入
1、普通用户可不可以修改密码?
答:是可以的,使用passwd命令修改自己的密码
2、/etc/shadow 文件的作用是什么?
答:存储加密后的用户密码的文件
3、/etc/shadow 文件的权限是怎么样的?
答:----------. 1 root root 1627 5月 17 00:10 /etc/shadow
4、普通用户是否可以修改/etc/shadow 文件?
答:不可以,因为这个文件对于普通用户来说,没有任何权限,所以不能读取,也不能写入。
5、那么普通用户,为什么可以修改密码?
答:
①因为使用了passwd 这个命令
②passwd命令在文件拥有者U权限位上,原本是x权限,变成了s权限
③s权限在文件拥有者U权限位,又叫做SetUID权限,简称SUID
作用:因为在使用有SUID权限的文件或命令时,会以该文件的拥有者身份去执行该命令。

这个权限针对命令、脚本程序而言,对目录、文件无效。
如果该属主权限位上有执行权限,则会显示(小写)s。
如果该属主权限位上没有执行权限,则会显示(大写)S,无效。
在这里插入图片描述

授权/去除SUID

授权
chmod u+x <文件名>
chmod 4xxx <文件名>

去除
chmod u-x <文件名>

2.强制位——set gid【SGID】、代表数字2

问题引入
1、普通用户可不可以使用locate命令查找?
答:是可以的
2、/var/lib/mlocate/mlocate.db 文件的作用是什么?
答:locate命令在一个叫 mlocate.db 的数据库下搜索。这个数据库位于 /var/lib/mlocate/mlocate.db ,它包含了系统里所有文件的索引,并且一天自动更新一次。
3、/var/lib/mlocate/mlocate.db 文件的权限是怎样的?
答:-rw-r-----. 1 root slocate 3076452 5月 21 11:08 /var/lib/mlocate/mlocate.db
4、普通用户是否可以读/var/lib/mlocate/mlocate.db 文件?
答:不可以,因为这个文件对于普通用户others来说,没有任何权限,所以不能读取,也不能写入。
5、那么普通用户,为什么可以使用locate查找?
答:
①任何使用locate命令的用户自动成为slocate组成员,可以查 mlocate.db 数据库。
②locate命令在文件同组者G权限位上,原本是x权限,变成了s权限
③s权限在文件同组者G权限位,又叫做SetGID权限,简称SGID
作用:因为在使用有GUID权限的文件或命令时,会以该文件的同组者身份去执行该命令。

这个权限针对目录。如果某个目录具有s权限,则任何用户在该目录下创建的文件或目录的属组都会强制继承父目录的的属组
使用Sgid可以使得多个用户之间共享一个目录的所有文件变得简单。

在这里插入图片描述

授权/去除SGID

授权
chmod g+s <目录名>
chmod 2xxx <目录名>

去除
chmod g-s <目录名>

查看
ls -ld <目录名>
ll -d <目录名>

3.粘滞位——sticky bit【SBIT】、代表数字1

这个权限针对公共目录而言。如果某个目录具有t权限,则这个目录下面的文件,只有root和文件所有者可以删除。

如果该其它用户权限位上有执行权限,则会显示(小写)t。
如果该其它用户权限位上没有执行权限,则会显示(大写)T,无效。

在这里插入图片描述
授权/去除SBIT

授权
chmod o+t <公共目录名>
chmod 1xxx <公共目录名>

去除
chmod o-t <公共目录名>

加锁【修改和查看文件或目录的属性】

只有root管理员才能运行以下命令

对文件/目录加锁
chattr {+、-、=} {i、a}  <文件名/目录名>
选项i:
	对文件 不允许对文件进行rm mv(改名),也不能添加和修改
	对目录 只能修改目录下文件的数据,不允许建立和rm 文件
选项a:
	对文件 只能对文件增加数据,不能rm,不能修改,(服务器日志文件)
	对目录 只允许在目录中建立和修改文件,不能rm,增加[vi,echo]

查看锁 
lsattr <文件名>
lsattr -d <目录名>
lsattr -a

sudo命令

在这里插入图片描述
在这里插入图片描述

su -  输入密码,切换root用户
su - <用户名>   切换账户
vi /etc/sudoers  
等同于 visudo    编辑授权文件  授权文件中包含各用户允许操作
第100行 root ALL=(ALL) ALL
IP地址  以什么身份  具体可带参(-h)命令路径【如which shutdown命令的结果写入】
一条命令占一行
man 5 sudoers
sudo -l  查看管理员对当前登录用户授予了哪些命令

实验1,为普通用户授予useradd命令
1.1查看当前命令所在文件夹
which useradd
1.2添加权限
vi /etc/sudoers
101 G   光标移动到101行
i   进入插入模式
输入内容   <普通用户名> ALL=(ALL) /usr/sbin/useradd   
按esc返回命令模式
:wq!强制保存退出
以useradd登录
1.3执行授权命令
sudo useradd userzs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值