不管对于Linux或者windows来说,权限都是非常重要的一个环节。如果一个账号没有任何权限,那么他就相当于是一个摆设,放在那么没什么作用。那么如果说是一个超级管理员拥有所有的全选呢?那么属于为所欲为了!
1、权限介绍
在Linux中分别有:读、写、执行的权限
读权限:
对于文件夹来说,读权限影响用户是否可以列出目录结构
对于文件来说,读权限影响用户是否可以读取文件的内容
写权限:
对于文件夹来说,写权限影响用户是否可以在文件夹下:创建、删除、移动到、复制到文档
对于文件来说,写权限影响用户是否可以编辑文件的内容
执行权限:
一般都是对于文件来说,特别是脚本文件夹
对于文件来说,执行权限影响用户是否可以运行
对于文件夹来说,执行权限影响用户是否可以在文件夹内执行指令
2、身份介绍
3、Linux的权限查看
drwxr-xr-x .5 root root 4096 2月 16 19:44 . //一个标准的权限组成结构
// 只看着前面的10位组成。
// 第1位表示文件的类型,常见取值 d表示文件夹 -表示文件。只有第一"-"表示文件后面的9位"-"表示没有权限
// 第2-4位表示文件所有者身份权限的控制,取值r表示读取w表示写入x表示执行,如果是-表示没有权限。
// 第5-7位表示同组用户权限的控制,取值r表示读取w表示写入x表示执行,如果是-表示没有权限。
// 第8-10位表示其他用户的权限控制,取值r表示读取w表示写入x表示执行,如果-表示没有权限。
注意:除了rwx之外还有s、t(黏贴位,特殊权限位),权限控制的顺序不允许改变必须为rwx
4、权限设置
设置多个身份的权限时候,每个身份之间需要通过英文逗号分开。
案例:设置文件“~/php.txt”权限,要求所有者全部权限,同组用户拥有读权限、写权限,其他人拥有读权限
扩展:
在Linux系统中,创建文档的权限有一个默认值,以当前的系统为例,其创建文件夹之后的默认权限是755,创建文件之后的权限是644。
之所以会这样是受到了系统中umask(掩码)的值的影响,其是用于指定文档创建好之后的权限,umask默认为022。
5、属主与属组
属主:所属的用户(文件的所有者)
属组:所属的用户组(同组用户的组名称)
这两项信息在文档创建的时候会使用创建者的信息(用户名、用户所属的主组名称)。
之所以需要设置这个:如果有时候去删除某个用户,则该用户对应的文档的属主和属组信息就需要去修改(类似离职之前的工作交接)。
5.1、chown
作用:更改文档的所属用户(change owner)
语法:#chown [-R] 新的username 文档路径
[ root@locahost 桌面] # chown [-R] 新的username 文档路径
// -R还是表示的文件夹注意:修改所有者的人必须是root或者所有者自己,其他人无权修改所有者.
注意:修改所有者的人必须是root或者所有者自己,其他人无权修改所有者。
5.2、chgrp
作用:更改文档的所属用户组(change group)
语法:#chgrp [-R] groupname 文档的路径
6、sudo
在Linux中只有最高权限root才有reboot
,halt
,init
权限,普通用户如果也想拥有root账号操作命令,使用sudo就能解决这个问题。sudo能让root事先定义的特殊命令谁都能执行。默认的sudo文件是除了root以外没有别的用户配置(事先放权规则)
Sudo配置文件:/etc/sudoers
该文件默认只读,不允许修改,因此不能直接修改。
a. 配置sudo文件请使用“#visudo”,打开之后其使用方法和vim一致
[ root@locahost 桌面] # visudo
//即可打开sudoers操作方式与vim一致,进入visodu后使用数字 + gg快速定位到98行
98行数据: root ALL=(ALL) ALL
root:表示用户,如果是用户组,则需要写成"%组名"
ALL:表示运行登录的主机
(ALL):表示以谁的身份执行,ALL表示root
ALL:表示当前用户执行的命令,多个命令用,分隔
添加一行sodo权限的配置,让此用户可以添加用户
admin ALL=(ALL) /usr/sbin/useradd
注意:在写sudo权限规则的时候,不建议直接写命令,而是写命令的完整路径。使用which
指令名称 查看命令的完整路径
注意:在我们修改完sudoers
后,如果需要使用指令需要在执行的指令前加上sudo才能执行,不然执行不了
注意:如果需要查看当前用户可以执行那些指令 sudo -l
即可查看