1.权限基础
- 权限是操作系统用来限制对资源访问的机制,权限一般分为读、写、执行。系统中每个文件都拥有特定的权限、所属用户及所有组,通过这样的机制来限制哪些用户、哪些组可以对特定文件进行什么样的操作
- 每个进程都是以某个用户的身份运行,所有进程的权限与该用户的权限一样,用户的权限大,该进程用户的权限就大
- 文件的三种权限:
注:目录必须拥有x权限,否者无法查看其内容
2.UGO模型
- Linux权限基于UGO模型进行控制:
- U代表User,G代表Group,O代表Other
- 每一个文件的权限基于UGO进行设置
- 权限三个一组(rwx),对应UGO分别设置
- 每一个文件拥有一个所属用户和所属组,对应UG,不属于该文件所属用户或所属组的使用O权限
- 命令ls -l可以查看当前目录下文件的详细信息
- 详细信息
-
- 相关权限
3.修改文件所属用户和组
- 命令chown用以改变文件的所有用户:chown 用户名 文件名,-R参数递归的修改目录下的所有文件的所属用户
- chown [-R] 用户名:用户组 文件名:变更文件及目录的拥有者和所属组(-R递归处理所有文件和文件夹)
- 命令chgrp用以改变文件的所属组:chgrp 用户组 文件名,-R参数递归的修改目录下的所有文件的所属组
4.修改权限
- 命令chmod用以修改文件的权限:chmod 模式 文件名;模式有如下格式:
- u、g、o分别代表用户、组和其他
- a可以代指ugo
- +、-代表加入或删除对应权限
- r、w、x代表三种权限
- -R同样是递归修改目录下文件的权限
- 数字方式修改权限
- 三个权限分别有三个数字表示:
- -r = 4
- -w = 2
- -x = 1
- 使用数字表示权限时,每组权限分别为对应数字之和示例
- rw=4+2=6
- rwx=4+2+1=7
- r-x=4+1=5
- 三个权限分别有三个数字表示:
5.默认权限
- 每一个终端都拥有一个umask属性,来确认新建文件、文件夹的默认权限
- umask使用数字权限方式表示,如:022
- 目录的默认权限是:777-umask
- 文件的默认权限是:666-umask
- 一般,普通用户的默认umask是002,root用户的默认umask是022
- 对于普通用户来讲:
- 新建文件的权限是:666-002=664
-
- 新建目录的权限是:777-002=775
-
- root用户:新建文件:644
-
- 命令umask用以查看设置umask值:umask 022,新建文件默认权限变为644
6.特殊权限
- 三个特殊权限
-
- suid:目的是让某些用户实现它原本没有权限去做的一些操作,通常用在可执行文件中,命令就是可执行文件
- 通常是给命令或可执行文件用的,命令或可执行文件都会去以一个用户的身份运行,之所以这样是为了限制命令能够去访问的资源,一般的命令都是谁去运行这个命令,我都是以这个命令的用户去运行,这个用户能够访问的权限都会传递给这个命令;
- 需求:希望用户执行某些命令获得额外的资源和功能;
- 比如一个命令可以修改操作系统的功能,它的所属用户是root,我让其他用户能够运行这个命令,即o权限设置为r-x,但是又不想开放这个功能,因为普通用户没有修改操作系统的权限,即使你o权限设置为r-x,但其他用户也做不了修改,给这个文件设置suid,普通用户去执行这个文件的时候并不是以用户的身份去执行,而是以这个命令所属用户的身份去执行
- 系统某些权限只有root用户才有,虽然给普通用户配置了相应的权限,但是仍然执行不了某些操作,所以给文件设置了suid后,普通用户就以所属用户的身份去操作这个文件;
- 比如命令passwd,用户的密码存放在/etc/shadow下面,除了root,其他所有用户什么权限都没有,所以给passwd设置了所属用户root的权限,可以修改密码
- suid:目的是让某些用户实现它原本没有权限去做的一些操作,通常用在可执行文件中,命令就是可执行文件
-
- sgid:设置了sgid的目录,所有新建的文件和文件夹都会继承(递归)该目录的所属组,方便权限控制
- sticky:设置了sticky的目录,对目录拥有写入权限的用户不能删除其他用户的文件,常用于同部门(组)员工可以相互访问其他的文件,但是无法删除其他用户的文件
- 设置特殊权限
- 设置suid:chmod u+s 文件名
-
- 设置sgid:chmod g+s 文件名
-
- 设置sticky:chmod o+t 文件名
- 与普通权限一样,特殊权限也可以使用数字方式表示
- -suid = 4
- -sgid = 2
- -sticky = 1
- chmod 6755 文件名:即同时拥有suid和sgid两个特殊权限