当前位置:首页 > linux基础 > 正文内容

Linux基本权限

5年前 (2019-08-29)linux基础669

1.什么是权限

我们可以把它理解为操作系统对用户能够执行的功能所设立的限制,主要用于约束用户能对系统所做的操作,以及内容访问的范围,或者说,权限是指某个特定的用户具有特定的系统资源使用权力。


2.为什么要有权限

因为系统中不可能只存在一个root用户,一定会存在多个用户,为了保护每个登陆用户的隐私和工作环境,所以就有了权限。(比如三个租客合租同一个房子,a租客要使用b租客的肥皂,那这个事情??)


3.权限与用户之间的关系

在Linux系统中,针对文件定义了三种身份,分别是属主(owner)、属组(group)、其他人(others),每一种身份又对应三种权限,分别是可读(readable)、可写(writable)、可执行(excutable)。

image.png

用户对文件资源,有三种角色ugo,当一个用户访问文件流程如下

1) 判断用户是否为文件所有者,如果是则按所有者的权限进行访问

2) 判断用户是否为文件所有组成员,如果是则按组的权限进行访问

3) 如果不是所有者,也不是该文件所属组,则按匿名权限进行访问


4.权限中的rwx分别代表什么含义

当我们使用ls -l查看一个文件的详细属性时,能看到每个文件都有一个9位基本权限位,比如: rwxr-xr-x其中每三位字符为一组,分别表示属主权限位,属组权限位,匿名权限位。

linux中基本权限位则是使用这9位字符来表示,主要控制文件属主(User)、属组(Group)、其他用户(Other)

字母含义对应权限
r(read)读取4
w(write)写入2
x(execute)执行1
-(没有权限)
0

PS: 如果权限位不可读、不可写、不可执行,则全部使用-作为占位符表示。


5.权限设置示例

文件示例: rwxrw-r-- alice hr file1.txt

Q1: alice对file1文件拥有什么权限?

Q2: jack 对 file1.txt 文件有什么权限? 前提:jack 属于 hr 组

Q3: tom 对 file1.txt 文件有什么权限?


5.1.修改一个文件的权限?

Q1: 为什么要设定权限,可以赋于某个用户或组 -- 能够以何种方式 -- 访问某个文件

Q2: Linux下使用chmod命令来变更权限,root用户可以变更所有文件的权限,而普通用户仅能变更属于自己的文件。


5.2.使用chmod设定权限示例

方式一: ugo
[root@qmf ~]# touch file                #创建文件
[root@qmf ~]# chmod a=rwx file            #给所有人添加读写执行权限
[root@qmf ~]# chmod a=-rwx file           #取消所有的权限
[root@qmf ~]# chmod u=rwx,g=rw,o=- file      #属主读写执行,属组读写,其他人无权限
[root@qmf ~]# chmod ug=rwx,o=r file         #属主属组读写执行,其他人读权限
[root@qmf ~]# ll file
-rwxrw-r-- 1 root root 0 Apr 13 03:29 file

方式二、number
#选项:  -R递归修改
[root@qmf ~]# touch file
[root@qmf ~]# chmod 644 file
[root@qmf ~]# chmod 600 file
[root@qmf ~]# ll file
-rw------- 1 root root 0 Apr 13 03:29 file

#针对目录设定权限
[root@qmf ~]# mkdir dir
[root@qmf ~]# chmod 777 dir/    #修改目录允许所有人访问
[root@qmf ~]# chmod -R 755 dir/   #修改目录及子目录权限
[root@qmf ~]# ll -d dir/
drwxr-xr-x 2 root root 6 Apr 13 03:34 dir/

5.3.权限设置案例

针对 hr 部门的访问目录/home/hr 设置权限,要求如下: 

1.root 用户和 hr 组的员工可以读、写、执行

2.其他用户没有任何权限

[root@qmf ~]# groupadd hr
[root@qmf ~]# useradd hr01 -G hr
[root@qmf ~]# useradd hr02 -G hr
[root@qmf ~]# mkdir /home/hr
[root@qmf ~]# chgrp hr /home/hr
[root@qmf ~]# chmod 770 /home/hr
[root@qmf ~]# ll -d /home/hr
drwxrwx--- 2 root hr 6 Apr 13 03:26 /home/hr

3.权限设置案例

在Linux中权限对文件和对目录的影响是有不同区别的。

权限 对文件的影响 对目录的影响

读取权限(r) 具有读取\阅读文件内容权限 具有浏览目录及子目录

写入权限(w) 具有新增、修改文件内容的权限 具有增加和删除目录内文件

执行权限(x) 具有执行文件的权限 具有访问目录的内容(取决于目录中文件权限)

文件权限实验案例:

#1.新建文件,并添加内容至文件中,默认文件匿名用户仅有读权限
[root@xuliangwei ~]# echo "date" > filename
[root@xuliangwei ~]# ll filename
-rw-r--r-- 1 root root 5 Jan 24 08:24 filename

#2.切换qmf普通用户
[root@xuliangwei ~]# su - qmf

#3.对文件拥有读取的权限,但qmf用户对文件没有执行和删除的权限
[qmf@xuliangwei ~]$ cat  /root/filename
date

#4.使用root增加x执行权限
[root@xuliangwei ~]# chmod o+x /root/filename
[root@xuliangwei ~]# ll /root/filename
-rw-r--r-x 1 root root 5 Jan 24 08:24 /root/filename

#5.测试x权限是否真的能执行该文件
[qmf@xuliangwei ~]$ /root/filename
Wed Jan 24 08:28:34 EST 2018

#6.增加w执行权限
[root@xuliangwei ~]# chmod o+w /root/filename
[root@xuliangwei ~]# ll /root/filename
-rw-r--rwx 1 root root 5 Jan 24 08:24 /root/filename

#7.测试执行权限
[qmf@xuliangwei ~]$ vim /root/filename


总结rwx对文件的影响

读取权限(r)具有读取\阅读文件内容权限

1.只能使用查看类命令cat、head、tail、less、more


写入权限(w)具有新增、修改文件内容的权限

1.使用vim编辑会提示权限拒绝, 但可强制保存,会覆盖文件的所有内容

2.使用echo命令重定向的方式可以往文件内写入数据,>>可以进行追加

3.不能删除文件,因为删除文件看的不是文件的属性,需要看上级目录是否有w的权限


执行权限(x)具有执行文件的权限

1.执行权限什么用都没有

2.如果普通用户需要执行文件,需要配合r权限


目录权限实验案例:

#示例1: 创建目录,并在该目录下创建文件,匿名用户对目录没有w权限,对文件有777权限 
[root@xuliangwei ~]# mkdir /dirname
[root@xuliangwei ~]# echo "test" >> /dirname/filename
[root@xuliangwei ~]# chmod 777 /dirname/filename

#普通用户验证权限,能正常查看,但无法删除
[qmf@xuliangwei ~]$ cat /dirname/filename
test
[qmf@xuliangwei ~]$ rm -f /dirname/filename
rm: cannot remove ‘/dirname/filename’: Permission denied

#示例2: 设置目录777权限,相当于匿名用户对目录有w权限,对文件没有任何权限
[root@xuliangwei ~]# chmod 777 /dirname/
[root@xuliangwei ~]# chmod 000 /dirname/filename

#普通用户验证权限
[qmf@xuliangwei ~]$ cat /dirname/filename
cat: /dirname/filename: Permission denied
[qmf@xuliangwei ~]$ rm -f /dirname/filename
[qmf@xuliangwei ~]$ touch /dirname/filename_2

总结rwx对目录的影响

读取权限(r),如果目录只有r权限: 具有浏览目录及子目录权限

1.可以使用ls命令浏览目录及子目录, 但同时也会提示权限拒绝

2.使用ls -l命令浏览目录及子目录,文件属性会带问号,并且只能看到文件名

总结: 目录只有r权限,仅仅只能浏览内的文件名,无其他操作权限


写入权限(w),如果目录只有w权限: 具有增加、删除或修改目录内文件名权限(需要x权限配合)

PS: 如果目录有w权限, 可以在目录内创建文件, 删除文件(跟文件本身权限无关)

不能进入目录、不能复制目录、不能删除目录、不能移动目录


执行权限(x),如果目录只有x权限

1.只能进入目录

2.不能浏览、复制、移动、删除


Linux权限总结与注意事项

文件r权限, 只给用户查看,无其他操作

文件rw权限, 可以查看和编辑文件内容

文件rx权限, 允许查看和执行文件、但不能修改文件----->PASS

文件rwx权限, 能读,能写,能执行,但不能删除,因为删除需要看上级目录的权限有没有w----->PASS

目录rx权限, 允许浏览目录内文件以及子目录、并允许在目录内新建文件, 不允许创建、删除文件和目录

目录wx权限, 能进入目录,能删除内容,能写入内容,但就是无法使用ls cat这样的命令----->PASS

目录rw权限, 能看,能写,但无法进入目录----->PASS

PS: 文件的 x权限小心给予,目录的 w权限小心给予。

PS: 文件通常设定的权限是644,目录设定的权限是755

PS: 控制目录权限755, 如果有普通用户需要操作目录里面的文件,在来看文件的权限


属主属组设置

在Linux中如何变更一个文件或者一个资源的属主和属组呢,可以使用chown、chgrp命令实现。

chown能设置属主和属组,chgrp仅能设置属组。(所以用哪个你懂的)


#chown 更改属主以及属组 -R:递归修改


#准备环境,创建文件和目录
[root@qmf ~]# mkdir dir/test1 && touch dir/file

#示例1: 修改所属主为bin
[root@qmf ~]# chown bin dir/

#示例2: 修改所属组为adm
[root@qmf ~]# chown .adm dir/

#示例3: 递归修改目录及目录下的所有文件属主和属组
[root@qmf ~]# chown -R root.root dir/


“Linux基本权限” 的相关文章

NFS文件共享存储

NFS文件共享存储

NFS基本概述NFS是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。NFS系统和Windows网络共享、网络驱动器类似, 只不过windows用于局域网, NFS用于企业集群架构中, 如果是大型网站, 会用到更复杂的分...

Shell介绍(一)变量、传参、数值运算

Shell编程1.什么情况下使用Shell1:安装CentOS系统 自动化安装操作系统(kickstart cobbler) 底层shell2:网络IP地址3:初始化操作系统(ntp时间同步,更改默认YUM源,SSH端口,SSH远程连接禁止DNS解析,禁止root登录,关闭seilnux,防火墙优化...

Shell介绍(四)条件表达式,字符串比对

条件表达式[ ]======test   []常用[ -f file ] 文件是否存在 且为普通文件 重点[ -e file ] 文件存在则为真[ -d file ] 目录存在则为真 重点[ -x file ] 文件有执行权限则为真[ -w file ] 文件可写则为真[...

自动化运维(一)Ansible安装及模块的使用

自动化运维(一)Ansible安装及模块的使用

1:Ansible安装1.什么是AnsibleAnsible是python 中的一套模块,系统中的一套自动化工具,只需要使用ssh协议连接及可用来系统管理、自动化执行命令等任务。2.Ansible优势1、ansible不需要单独安装客户端,也不需要启动任何服务2、ansible是python中的一套...

自动化运维(二)Ansible Playbook

自动化运维(二)Ansible Playbook

1.Playbook剧本1.playbook翻译过来就是“剧本”,那playbook组成如下play: 定义的是主机的角色task: 定义的是具体执行的任务playbook: 由一个或多个play组成,一个play可以包含多个task任务简单理解为: 使用不同的模块完成一件事情2.playbook的...

自动化运维(三)Ansible Playbook案例

自动化运维(三)Ansible Playbook案例

Playbook案例1.环境规划角色外网IP(NAT)内网IP(LAN)部署软件m01eth0:10.0.0.61eth1:172.16.1.61ansiblebackupeth0:10.0.0.41eth1:172.16.1.41rsyncnfseth0:10.0.0.31eth1:172.16....