linux权限管理

0.介绍

linux是多用户,多任务系统。文件系统是一种数据抽象
文件权限针对下面三种对象:属主,属组,其他人

  • 属主:拥有者
  • 属组:所属的组
  • 其他人:不属于上述两类

用户:分为管理员和普通用户

  • 管理员:root用户,id=0
  • 普通用户分为系统用户(用来执行系统程序,不能登录用来管理系统,id在1-499),可登录用户(id >500)

组:容器,映射用户群和访问权限

程序执行的过程

操作系统为了安全,将系统分层,每个进程在用户模式下,只能执行部分命令;如果想执行一些系统命令,需要切换到内核模式去执行,通过发起系统调用,让内核代替程序去执行相关命令。
例如:当执行mkdir /tmp/a.txt命令时,程序将发起系统调用,具体流程如下
用户模式->内核模式->内核创建文件

权限管理过程

操作系统执行一个文件时,需要经过下面三个步骤
认证->授权->审计

  1. 先判断当前用户是否是文件属主,还是属组;如果都不是,则为其他人
  2. 确定好属于哪个对象后,再查看该对象是否有执行的权限

例如:当我们启动linux,进入登录界面时,登录程序是由系统用户启动的,这个进程启动后将作为守护进程

进程具体分为以下三类

进程类型作用
daemon守护进程:例如用户登录,图形界面以系统用户身份在后台运行。
interactive交互式进程:用户在命令行中手动发起的
real time实施进程

1.权限管理

可以修改文件属主,该属组,改文件权限等操作
linux分为三种:读取r,写入w,执行x;
执行execute的意思是:拥有能够运行的权限,能被内核执行,通常是二进制文件或者脚本文件,二进制文件通常在文件开头有一些标志,标志可以执行。

对于文件来说

文件在创建时,默认只有读和写权限,没有执行权限

权限名使用权限命令
读rcat,less,more
写wnano,vim
执行x对文件来说可运行,可发起一个进程

对于目录来说

目录在创建时,默认有读写执行权限
注意:删除文件不属于目录的权限,只能删除属主的文件

权限名使用权限命令效果
读rls可以对目录执行ls命令,不允许使用ls -l,不能cd到目录中
写wtouch File可以在目录中创建文件,可以删除目录本身
执行xcd NEWDIR、ls -l可以对目录执行ls -l,能cd到目录

其实,在操作系统中,目录也是以一条记录的形式存在一张表中,每个目录都有存放的属性信息,而且每个目录中还有一张文件表(FCB),用来记录目录里面存放的信息。
我们有读权限,我们就可以看见目录的属性。
我们有写权限,我们就可以往文件表(FCB)中写入内容。
我们有执行权限,我们就可以cd到目录中,对目录中的文件和目录进行其他操作。

2.权限管理命令

chmod改变文件或目录的权限

使用方法如下

chmod [选项] 文件
  -R 递归修改,改变目录时可以改变目录中的文件
  --reference=/path/to/somfile FILE   以这个文件的权限为标准修改权限

使用ls -ld /etc显示目录本身的权限信息

示例:/home/openstack及其内部的文件,属组和其他用户没有任何访问权限

[root@node1 ~]# chmod go=--- /home/openstack
[root@node1 ~]# ls -ld /home/openstack/
drwx------ 5 openstack openstack 128 4月  30 23:05 /home/openstack/
方法一:使用权限数字修改权限

chmod 640 1.txt
例如:640,代表属主有读r和写w权限,属组有读r权限,其他没有权限

权限可以用数字表示:
777:rwx rwx rwx
640:rw- r-- —
755:rwx r-x r-x
600:rw- — —

方法二:使用u,g,o,a修改权限

修改某一类或某些类,分别三列分别属主u,属组g,其他o,所有a

chmod u=rw 1.txt   
chmod uo=rw 1.txt
chmod a=r 1.txt   使用a可以改三类用户权限,使其都只有读r权限
chmod g=r,o=--- 1.txt 
方法三:使用u,g,o,a修改权限配合±,

只操作某类用户的某些位权限

chmod u+w 1.txt  属主加上写w权限
chmod a-x 1.txt     
chmod +x 1.txt   所有用户均增加执行权限x,a可以省略

chown改变文件的属主,属组

只有管理员有这个权限

chown 选项 用户  
选项:
  -R 递归修改,改变目录时可以改变目录中的文件
  --reference=/path/to/somfile FILE   以这个文件的权限为标准修改权限

chown还可以修改组权限

chown 用户:组 文件
chown :组 文件
chown 用户.组 文件

示例:改变/home/openstack及其目录文件的属主属组均为openstack

[root@node1 ~]# chown -R openstack:openstack /home/openstack
[root@node1 ~]# ls -ld /home/openstack/
drwx------ 5 openstack openstack 128 4月  30 23:05 /home/openstack/

chgrp 修改文件属组

只有管理员有这个权限

chgrp  选项  文件
选项:
  -R 递归修改,改变目录时可以改变目录中的文件
  --reference=/path/to/somfile FILE   以这个文件的权限为标准修改权限

umask修改用户创建的文件文件和夹默认权限

umask遮罩码,仅对当前shell生效,如果想永久生效,则需要写入配置文件中

  1. 创建文件:使用666-mask
  • 文件默认不能有执行权限,任何一类用户有执行权限则+1
  • 例如:666-023=643 因为文件默认不能有执行权限,所以最后一位加1,即644
  1. 创建目录:使用777-mask
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐