linux权限

一.Linux权限的概念

1.两种用户

linux中一共有两种用户,超级用户(root)和普通用户。

linux一开始启动的时候,默认只有超级用户,符号用#区分。还有普通用户,符号用$区分。而普通用户需要我们在超级用户下使用命令来实现。

为什么root叫超级用户?其实就是像Windows下的管理员一样,它的权限最高,可以在操作系统下做任何想做的事情,不受任何的限制;但是普通用户只能做一些有限的事情。

正是因为root的权限太高了,我们可能误操作,不小心删除一些重要文件什么的,故而我们需要一个普通用户来完成各种操作。

创建普通用户:adduser+用户的名字。设置该用户的登录密码:passwd+用户的名字。

命令:su [用户名]

功能:切换用户

举个例子:当前为root账户,使用su [用户名]可以直接切换到普通用户去;当前为普通用户使用su root,提示输入密码,输入正确,即可切换到超级用户去。

2.su和su -命令的区别

超级用户切换到普通用户,直接使用su [用户名]即可直接跳转到普通用户去。

但是普通用户切换到普通用户,和普通用户切换到超级用户,是有很大讲究的。

使用su命令,该用户的环境变量是不会改变的,而环境变量是用来定义操作系统环境的,因此系统环境如果没有随用户身份交换,很多命令是无法执行的。

比如张三用户切换到root用户,使用su root,看似用户被切换到了root用户,但是$PATH环境变量依然是张三用户的,因此当前工作环境中,并不包含 /sbin、/usr/sbin等超级用户命令的保存路径,这就导致很多管理员命令根本无法使用。

使用env | grep 用户名,查看当前的处于哪个用户下:

image-20240527105333596

这里虽然是#,看起来是root用户,实际上为csj用户。

所以你想要完全的切换用户,使用su -命令。

二.Linux权限管理

1.文件访问者的分类(人)

一共分为三类:

①文件和文件目录的所有者:u-User。

②文件和文件目录的所有者所在的组的用户:g-Group。

③其他用户:o-Others。

使用ls命令可以列出该目录下的所有子目录与文件。

image-20240524115405680

第一个红色的圆圈就是文件和文件目录的所以者,第二个绿色的圆圈就是文件和文件目录的所有者所在的组的用户。

其他用户当然我们看不到,只要不是所有者和用户组的都是属于其他用户,例如一个人陌生人(其他用户)想要进入你家(用户组),你(用户)肯定不会让他进来,也肯定不会把你的隐私(用户拥有的文件)给他看。

2.文件类型和访问权限(事务属性)

2.1文件类型

image-20240527105522966

使用ls命令列出文件的信息,第一个字符就是代表文件的类型。

linux下文件类型分为以下类型:

①d:文件夹。(使用mkdir创建出来的文件就是文件夹)

②-:普通文件(使用touch创建出来的文件)

③l:软链接(类似于Windows的快捷方式)

④b:块设备文件(例如硬盘,光驱等,存放在dev文件中)

⑤p:管道文件

⑥字符设备文件(例如屏幕等串口设备,也是存放在dev文件中)

⑦s:套接口文件

2.2访问权限

后面的9位依次就是三个文件访问者的权限,一共rwx三个权限。

i.读(r/4):Read对文件而言,具有读取文件内容的权限(如果拥有者没有r权限,那么就无法使用cat命令查看文件内容);对目录来说,具有浏览该目录信息的权限(如果目录没有r权限,那么就无法使用ll命令浏览目录的信息)。

ii.写(w/2):Write对文件而言,具有修改文件内容的权限(没有w权限,vim进入文件,没法修改文件;或者使用echo输出重定向的方法也没办法);对目录来说具有删除移动目录内文件的权限(rm和mv命令就没法使用)。

iii.执行(x/1):execute对文件而言,具有执行文件的权限(./执行文件);对目录来说,具有进入目录的权限(使用cd命令进入目录)。

iv.“—”:表示不具有该项权限。

3.文件权限值的表示方法

image-20240527115323706

image-20240527115408820

4.文件访问权限的设置方法

文件访问权限的命令为chmod。

a)chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项:

  • -R:递归修改目录文件的权限(目录下面有很多目录和文件,避免手动一个一个修改权限,我们可以使用-R递归实现,一次到位)。
  • 说明:只有文件的拥有者和root才能修改文件的权限。

chmod命令权限值的格式:

①用户表示符+,-,=权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
  • 用户符号:
  • u:拥有者(user)
  • g:拥有者同组用(group)
  • o:其它用户(other)
  • a:所有用户

例如chmod u+w test,chmod g-r test。

②三位8进制数字

例如chmod 775 test(就是给拥有者设置rwx权限,给所属组设置rwx权限,给其他人设置rx权限)。

b)chown

功能:修改文件的拥有者。

格式:chown [参数] 用户名 文件名。

实例:

chown zhangsan test,chown -R wanghai file。

可以修改文件的拥有者,自然可以修改所属组。

c)chgrp

功能:修改文件或目录的所属组。

格式:chgrp [参数] 用户组名 文件名。

常用选项:-R 递归修改文件或目录的所属组。

d)umask

功能:查看或修改文件掩码。

新建文件夹默认权限=0666

新建目录默认权限=0777,但实际上你所创建的文件和目录,看到的权限往往不是上面这个值,目录是0775,文件是0664。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask &~umask。

格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

image-20240527145935898

image-20240527145859399

普通用户下目录文件:umask为0002,~就是按位取反的意思,~umask就是0775。然后和mask(0777)按位与之后就是0775,所以说普通用户下创建出来的目录文件,默认权限实际上是0775,这和umask是相关的。

实例:

# umask 755

# umask //查看

# umask 044//设置

三.目录的权限

可读权限:如果目录没有可读权限,那么就无法使用ls命令来查看目录中文件内容。

可写权限:如果目录没有可写权限,那么就无法在该目录下创建文件,或者删除该目录下的文件。

可执行权限:如果目录没有可执行权限,那么就无法使用cd命令进入到该目录。

于是问题来了~

换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写

权限. 这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下:

我们先在root用户下把/home目录的权限全开,然后在/home目录下创建一个文件,然后登录另外一个普通用户,试着看普通用户能否把这个新建的文件给删除掉。

image-20240527153959936

这里最后会提醒你是否要删除写保护的文件,你输入y,那么该文件就被删除了。

这当然不符合我们的预期,我们自己创建的文件,为什么别人可以删除该文件。于是粘滞位就被引了出来。

四.目录的权限引出的粘滞位

同样使用chmod命令,chmod +t 目录名,这就是给目录加上了粘滞位。

image-20240527154708503

image-20240527154727286

这里就算是你输入y,也不能删除该文件。

如果你要删除该文件,那么你只能是:

一.超级管理员

二.该目录的所有者

三.该文件的所有者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值