一、权限的基本概念
1、什么是权限
权限:在计算机系统中,权限是指某个计算机用户具有使用软件资源的权利。
2、权限设置目的
文件权限的设置目的:是像让某个用户有权利操作文件
3、权限的三种分类
- 普通权限
用户正常情况去操作文件所具有的权限(rwx) - 特殊权限
用户对某个文件夹操作有特殊需求,需要对用户进行限制;而普通权限的权限过大,不适用与工作情况。 - 默认权限
用户创建的文件或文件夹,都会有一个权限。这个是设置在配置文件中的。
4、普通权限
☆ 普通权限
读权限、写权限、执行权限、没有权限;读权限 = r、写权限 = w、执行权限 = x
☆ 读权限对文件以及目录的影响
-
针对普通文件
一个普通文件拥有r权限,说明可以查看该文件的内容(cat/head/tail/less/more等命令查看)
-
针对目录
一个目录拥有r权限,说明可以查看该目录里的内容(ls命令列出)
☆ 写权限对文件以及目录的影响
-
针对普通文件
一个普通文件拥有w权限,说明可以修改该文件的内容(输出重定向,只写不看)
如果想使用vi/vim编辑器编辑文件的内容,除了拥有w权限以外,还需要为其添加一个r权限。
- 针对目录
一个目录拥有w权限,说明可以在该目录里创建、删除、重命名等操作(mkdir/touch/mv/rm等)
☆ 执行权限对文件以及目录的影响
- 针对普通文件
一个普通文件拥有x权限,说明可以执行该文件(一般程序文件、脚本文件、命令都需要执行权限)
当我们在Linux操作系统中,如果想要执行一个文件,除了给它一个x权限以外还需要为其添加一个r权限。
-
针对目录
一个目录拥有x权限,说明可以进入或切换到该目录里(cd命令)
☆ 用户的分类
UGO指的是什么?UGO,指的是用户身份,每个字母代表不同的用户身份。
-
U(the user who owns it)
文件的拥有者(owner),默认为文件的创建者
-
G(other users in the file’s group)
在文件的所属组(默认是创建文件的用户的主组)里的用户
-
O(other users not in the file’s group)
既不是文件的创建者,也不在文件属组里的用户,称为其他人
注意:
除了上面ugo以外,还有一个字母a(all users),表示所有用户,包含ugo
5、获取文件的普通权限
# ls -l 文件名称
或者
# ll 文件名称
# ls -ld 目录名称
或者
# ll -d 目录名称
-横岗:代表普通文件,d代表目录(文件夹),l代表link(软链接,类似Windows中的快捷方式)
234列为一组:文件拥有者权限
567列为一组:组内用户权限
8910列为一组:其他用户权限
6、l软链接
在Windows操作系统中,用于表示链接关系的文件被称之为快捷方式。但是在Linux操作系统中,我们把这种链接关系产生的链接文件就称之为“软链接”
# ln -s 目标文件 软链接文件(要求使用绝对路径)
案例:给网卡文件在当前的家目录下创建一个软链接(快捷方式)
# ln -s /etc/sysconfig/network-scripts/ifcfg-ens33 /root/ifcfg-ens33
7、更改文件的普通权限
☆ 字母形式
# chmod [选项] ugo +-= rwx 文件名称
选项说明:
-R :递归设置
(+ \-与=等于号的区别?答:+ - 号代表在原有权限的基础上,增加或减少权限,= 号代表首先清空原有用户的权限,然后在根据ugo设置来重新分配权限。)
案例:更改文件linux.txt的权限,文件拥有者拥有rwx权限,组内用户拥有rw权限,其他用户拥有r权限。
# chmod u=rwx,g=rw,o=r linux.txt
☆ 数字形式
编号 权限 取值
1 r 4
2 w 2
3 x 1
# chmod [选项] 数字权限(3位) 文件或目录名称
案例:更改文件linux.txt的权限,文件拥有者拥有rwx权限,组内用户拥有rw权限,其他用户拥有r权限。
# chmod 764 linux.txt
8、给用户设置密码
① passwd命令
# passwd => 自己给自己改密码
或
# passwd 其他用户名称 => 更改其他用户的密码
② echo结合管道为用户设置密码
# echo '密码' |passwd --stdin 用户名称
二、高级权限(了解)
1、冒险位权限(SETUID)
- 冒险位,指文件操作者(用户)临时拥有文件拥有者的权限
- 冒险位,一般针对的是命令或者脚本文件
案例:passwd命令,其就拥有了冒险位权限
# which passwd
# ll /bin/passwd
-rwsr-xr-x. 1 root root 27832 Jun 10 2014 /bin/passwd
移除冒险位权限
# chmod u-s /bin/passwd
添加冒险位权限
# chmod u+s /bin/passwd
或
# chmod 4755 /bin/passwd
passwd命令之所以需要冒险位s权限,主要原因在于修改密码时,其需要更改/etc/shadow文件。
2、强制位权限(SETGID)
-
强制位,一般针对的是目录
如果一个目录拥有强制位,那么任何用户在该目录里所创建的任何文件的属组都会继承该目录的属组。
强制位,用字母表示是s或S;数字表示是2
强制位的设置:
chmod g+s 文件名
或者chmod 2xxx 文件名
3、粘滞位权限(STICKY)
粘滞位,一般针对的是公共目录,其权限大部分为777
如果一个公共目录拥有粘滞位,那么该目录下的文件,只有root和文件的创建者可以删除,其他人只能自己管理自己。(A用户不能删除B用户创建的文件)
防止误删除别人的文件
# ll -d /tmp
移除粘滞位权限
# chmod o-t /tmp
添加粘滞位权限
# chmod o+t /tmp
或
# chmod 1777 /tmp
三、默认权限(了解)
1、什么是默认权限
当我们创建一个文件时,其默认都有拥有权限。这个权限就称之为“默认权限”
2、默认权限的来源
想了解文件的默认权限,首先要知道,系统中有一个umask值
# umask
每个人的umask可能不同,超级管理员一般为022,普通用户一般为002
普通文件默认权限 = 文件的最高权限 - 022 = 666 - 022 = 644
普通文件夹默认权限 = 文件夹的最高权限 - 002 = 777 - 022 = 755
3、家目录中的一些隐藏文件
全局配置文件(针对所有用户所有进程)
/etc/profile
系统和用户的环境变量信息,当用户第一次登录时,该文件被读取
/etc/bashrc
每个运行的bash信息(系统别名、函数及默认权限的定义),当bash被打开时,该文件被读取
局部配置文件(针对某个特定用户以及用户的所有进程)
~/.bashrc
当前用户的bash信息,当用户登录和每次打开新的shell时该文件被读取
~/.bash_profile
当前用户的环境变量,当用户登录时,该文件被读取
~/.bash_history
保存当前用户历史命令的文件
~/.bash_logout
当用户退出bash或者终端时,会首先执行该文件里的代码,然后再退出
全局就是针对所有用户有效的,而局部就是只针对当前这个用户有效的。
四、文件的属主和属组
1、什么是属主与属组
属主:文件的拥有者 属组:文件的所属组
2、为什么要修改属主与属组
软件安装方式一共有三种情况:YUM安装、RPM安装、源码安装
源码安装的软件(纯源码、已经编译过,只需要简单配置就可以使用),软件的运行有要求:要求文件的拥有者必须是谁谁谁,文件的所属组必须是谁谁谁。
3、更改文件拥有者
# chown [选项] 新文件拥有者 文件或目录
选项说明:
-R:递归设置
own = owner缩写,代表主人
案例:把/usr/local/mysql文件夹的文件拥有者设置为mysql
# chown -R mysql /usr/local/mysql
4、更改文件的所属组
# chgrp [选项] 新文件所属组 文件或目录
选项说明:
-R:递归设置
grp = group缩写,代表组
案例:案例:把/usr/local/mysql文件夹的文件所属组设置为mysql
# chgrp -R mysql /usr/local/mysql
5、同时修改属主与属组
# chown [选项] 新文件拥有者:新文件的所属组 文件或目录
选项说明:
-R:递归设置
# chown -R mysql:mysql /usr/local/mysql