Linux权限

1. 用户分类与切换

Linux用户分为两种,超级用户(root)和普通用户,root基本不受权限的约束,普通用户受权限的约束(root类似windows的管理员,但是Linux下的root比windows下的管理员权限高)

su/su - 完成普通用户向root用户的切换,

我们看到,su命令下,虽然切换成了root,但还是在普通用户的家目录 下;Ctrl+D或eixt退出回到普通用户

但是su -命令下,在root目录 下;能通过Ctrl+D退出回到普通用户

两种情况都能通过su 普通用户名 完成root用户向普通用户的切换

切换到root使用的是root的密码,推荐root和普通用户密码不一致,有助于区分学习,到底输的是谁的密码

  • su

  • su -

在root下不用密码切换到任意普通用户

也可以通过sudo进行单条指令的提权,但是需要进行相关设置,添加到系统信任白名单

输的是该用户的密码


ls /home 查看家目录,查看创建的普通用户(lighthouse不是我创建的)

2. 权限

2.1 概念

  1. 认证的是身份(和具体的用户有关,因为角色由用户充当)
  2. 权限也和属性有关,比如文件可读可写,但是.txt一般不可执行

2.2 文件类型

group其实是用于项目管理的,给group内的成员和其它成员不同的权限,有利于项目管理

ls /dev/tty* 可加选项 查看字符设备 tty是终端的意思

字符设备在进行数据输入输出时是以字符为单位将数据传输到内存当中的进程等

文件类型
mkfifo 文件名 创建管道文件

管道文件可以用于通信,其中一个进程A向管道文件写入内容,另一个进程B可以从管道文件中读,注意,如果没有进程从管道读取内容,进程A会一直被阻塞

gcc 文件名 进行编译,默认得到a.out,通过./a.out进行执行,然后a.out命名为a.exe或b都可以通过同样的方式去执行,可以得出结论,Linux下不以后缀名作为判断依据,根据文件内容

但是gcc下还是以文件后缀为准,gcc是一款编译器,一款软件,Linux不以后缀名为准,不代表Linux上的其它软件也是如此

但是root不受权限的限制,下图我们看到root不是test.txt的owner或group,root是test.txt的others,给到other的是r,也就是只读,但是root能对test.txt写

2.3 权限管理

只有文件的拥有者和root可以修改文件的权限
chmod u-rwx,g-rwx,o-rwx 文件名
chmod u+rwx,g+rwx,o+rwx 文件名

也可用chmod a-rwx 文件名 所有用户剥夺所有权限

我们可用二进制0/1来标识是否有该权限,三位二进制可表示0~7,所以也可用八进制进行权限修改,chmod 三位八进制 文件名


chown 用户名 文件名 把文件的拥有者给用户,只能在root下执行,因为如果在普通用户下执行,需要另一个用户同意,另一个用户没办法同意

chgrp 用户名 文件名 把文件的所属组给用户,只能在root下执行,因为如果在普通用户下执行,需要另一个用户同意,另一个用户没办法同意

chown 用户名1:用户名2 文件名 把文件的拥有者、所属组分别改为用户1,用户2

不需要进行other的更改,因为更改了owner和group,自然other随之改变

-l 是软链接文件

那么root和普通用户在文件系统中充当什么角色呢?owner, group或者others

获得的权限以第一个匹配到的角色为主,按照owner, group, others的顺序进行匹配,先匹配owner,如果一个用户既是owner又是group,那就以第一个匹配到的owner为主,只有owner的权限,没有group的权限

我们看到guchen用户作为owner有r,作为group有rw,但guchen账号没有w权限

我们看到默认给目录文件的权限是775,普通文件是664,为什么呢?

其实默认给目录文件的是777,普通文件的是666,最终权限=默认权限&(~umask),就是说默认权限-umask代表的权限,umask是说我不让你有什么权限,你就不能有;如果对应默认权限有,就剔除;如果本来就没有,那还是没有

~umask我允许你有的权限与上你本来就有的权限,才是最终权限

Linux的umask是0002,也可以修改

umask 0三位八进制 将八进制权限位设为1就可以让默认生成的文件不具有该权限

目录权限 x 可进入,如果没有x,只有rw,不可进入目录,不能在目录新建文件

而且tree d1,如果没有x权限,是看不到d1的内容的,也不能对d1的文件进行读、修改(重命名、写等)

没有x权限,不能删目录的文件,查到的文件很多信息是未知的

如果没有r,有wx,不可读d1,但是能进入d1(有x权限),能在目录里创建文件、读文件、修改文件(重命名、写)、删除文件


没有w,只有rx,可进、索引目录,可以读、写目录中的文件,不能新建、重命名、

只有w权限,不可进入、读目录,不能读、修改、重命名、删除目录的文件

只有r,不能进入目录,可以显示目录包含的文件名及类型,不能读、写、重命名目录的文件,

只有x,可以进,不可以读目录,可以写、读目录包含的文件,但是不可以给目录包含的文件重命名或者删除

因为有些时候需要共享协作,因此在/home下由root建立共享文件夹shared,在shared下guchen用户创建文件log.txt,并且权限是600,xuer作为other没有任何权限,但是可以删除这个文件

因为一个文件是否可以被删除不是由文件本身决定的,而是由文件所在目录的权限决定的,为了防止上述现象,如果去除shared目录other的w权限,那guchen亦或是任何人都没有办法写入shared,本来设置的共享没有意义;那么为了做到只能由文件创建者或root删除自己创建的文件,引入粘滞位的概念,chmod o+t 目录名,把文件所在目录other权限的x变为t,即可做到,t是x的一种特殊形式

系统有默认用于共享的目录tmp

相关推荐
Gofarlic_oms12 小时前
Windchill用户登录与模块访问失败问题排查与许可证诊断
大数据·运维·网络·数据库·人工智能
我是小疯子662 小时前
Python变量赋值陷阱:浅拷贝VS深拷贝
java·服务器·数据库
xqhoj2 小时前
Linux——make、makefile
linux·运维·服务器
文亭湖畔程序猿2 小时前
Debian 12 日常命令 & nano 快捷键速查表
运维·debian
张童瑶2 小时前
Linux 在线安装编译Python3.11
linux·运维·python3.11
ziqibit2 小时前
debian Live with Persistence 持久化U盘的debian系统
运维·debian
Shi_haoliu2 小时前
SolidTime 在 Rocky Linux 9.5 上的完整部署流程
linux·运维·nginx·postgresql·vue·php·laravel
lifejump3 小时前
Pikachu | XXE
服务器·web安全·网络安全·安全性测试
Lkygo3 小时前
LlamaIndex使用指南
linux·开发语言·python·llama