linux权限管理
0.介绍
linux是多用户,多任务系统。文件系统是一种数据抽象 文件权限针对下面三种对象:属主,属组,其他人
用户:分为管理员和普通用户
- 管理员:root用户,id=0
- 普通用户分为系统用户(用来执行系统程序,不能登录用来管理系统,id在1-499),可登录用户(id >500)
组:容器,映射用户群和访问权限
程序执行的过程
操作系统为了安全,将系统分层,每个进程在用户模式下,只能执行部分命令;如果想执行一些系统命令,需要切换到内核模式去执行,通过发起系统调用,让内核代替程序去执行相关命令。 例如:当执行mkdir /tmp/a.txt 命令时,程序将发起系统调用,具体流程如下 用户模式->内核模式->内核创建文件
权限管理过程
操作系统执行一个文件时,需要经过下面三个步骤 认证->授权->审计
- 先判断当前用户是否是文件属主,还是属组;如果都不是,则为其他人
- 确定好属于哪个对象后,再查看该对象是否有执行的权限
例如:当我们启动linux,进入登录界面时,登录程序是由系统用户启动的,这个进程启动后将作为守护进程
进程具体分为以下三类
进程类型 | 作用 |
---|
daemon | 守护进程:例如用户登录,图形界面以系统用户身份在后台运行。 | interactive | 交互式进程:用户在命令行中手动发起的 | real time | 实施进程 |
1.权限管理
可以修改文件属主,该属组,改文件权限等操作 linux分为三种:读取r,写入w,执行x; 执行execute的意思是:拥有能够运行的权限,能被内核执行,通常是二进制文件或者脚本文件,二进制文件通常在文件开头有一些标志,标志可以执行。
对于文件来说
文件在创建时,默认只有读和写权限,没有执行权限
权限名 | 使用权限命令 |
---|
读r | cat,less,more | 写w | nano,vim | 执行x | 对文件来说可运行,可发起一个进程 |
对于目录来说
目录在创建时,默认有读写执行权限 注意:删除文件不属于目录的权限,只能删除属主的文件
权限名 | 使用权限命令 | 效果 |
---|
读r | ls | 可以对目录执行ls命令,不允许使用ls -l,不能cd到目录中 | 写w | touch File | 可以在目录中创建文件,可以删除目录本身 | 执行x | cd 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生效,如果想永久生效,则需要写入配置文件中
- 创建文件:使用666-mask
- 文件默认不能有执行权限,任何一类用户有执行权限则+1
- 例如:666-023=643 因为文件默认不能有执行权限,所以最后一位加1,即644
- 创建目录:使用777-mask
|