Ubuntu学习笔记(二)——文件属性与权限

news2024/11/26 4:24:36

文章目录

  • 前言
  • 一、用户与用户组
    • 1.用户(文件拥有者)
    • 2.用户组
    • 3.其他人
  • 二、Linux用户身份与用户组记录文件
      • 1. /etc/passwd
      • 2. /etc/shadow
      • 3. /etc/group
  • 三、文件属性与权限
    • 1. 查看文件属性的方法(ls)
    • 2.文件属性详细介绍
        • 2.1 权限
        • 2.2 链接
        • 2.3 文件(或目录)的拥有者
        • 2.4 文件(或目录)所属用户组
        • 2.5 文件的容量大小
        • 2.6 文件的创建日期或是最近的修改日期
        • 2.7 文件名
    • 3. 修改文件属性和权限
        • 3.1 修改文件所属用户组(chgrp)
        • 3.2 修改文件拥有者(chown)
        • 3.3 修改文件权限(chmod)


前言

前面介绍了Ubuntu系统的目录结构以及路径(相对路径和绝对路径),但是我们知道服务器的Ubuntu经常是多个人同时使用,因此在Ubuntu系统中同一个的文件相对于不同的用户往往有不同的权限。下面讲简单介绍一下Linux服务器的用户与用户组的概念,然后介绍文件的属性和权限。

一、用户与用户组

在Linux系统中,每个文件都有相当多的属性与权限,其中最重要的概念就是文件的拥有者了。在介绍文件的属性和权限之前,必须要介绍用户、用户组以及其他人的概念,因为文件的属性和权限就是相对于这三个身份的人来设置的。

1.用户(文件拥有者)

由于Linux是个多人多任务的系统,因此可能常常会有多人同时使用这台主机来进行工作的情况发生,为了考虑每个人的隐私以及每个人喜好的工作环境,因此文件拥有者的身份就相当重要了。
比如你有一些保密的文件,存储在你自己的家目录下。你不想让其他人看到文件的内容,这时你就可以设置只有文件拥有者才能看和修改这个文件的内容,那么其他人就无法查看文件的内容,因为权限不够。

2.用户组

可以想象成用户组的概念类似于你的家人一样,组内的其他人就是你的家人,你们可以同时生活在家中,比如共同使用客厅和厕所等等,然后呢,你自己的卧室家人也可以进来,但是如果你不想让除了自己的其他人进入你的卧室,你也可以给自己的卧室上锁,这样就只有你能进入,而其他人就进不来。用户组的概念还有就是区别于其他人,你可以将其他人想象成家人之外的人。

用户组最有用的功能之一就是当你在团队进行协同工作的时候。比如有两个团队a和b在使用同一台Linux服务器,a组中有组员1、2、3,b组中有组员4、5、6。两组处于竞争关系,上司命令两组都要完成一个项目文件,完成的差的将被裁员。在写项目文件的时候,由于组内人员是一个团队,因此必须要组内人员都能查看并且修改项目文件,但是不能让另一个组的人访问并修改自己的项目文件。这时就可以设置项目文件的权限,通过设置的自己的文件只有自己的组内人员具有查看和修改的权限即可。这就是用户组的使用方式,a组和b组就是一个用户组,可以在组内设置自己的权限。
比如项目经理需要同时查看两组的进度,那么项目经理就需要同时拥有访问组a和组b的文件的权限,这时可以设置项目经理这个用户既属于组a也属于组b即可。因为在Linux中,每个账户都可以有多个用户组的支持。

可能读者又有疑惑了,怎么知道哪些人是一个组,哪些人不是一个组呢?这个问题我们放到后面的用户管理章节再介绍,在这里,我们着重讲的是文件的权限概念,因此我们目前只需要了解Linux系统中的用户、用户组和其他人的概念,并知道文件的权限都是相对于这三个身份的人设置的即可。

3.其他人

前面已经提到了,其他人就是用户组外的人,可以另外设置一层权限来毙掉用户组外的人访问文件的权限。在上面介绍的组a和组b中,组a的所有人相对于组b来说,都是其他人。反之亦然。

上面已经介绍了三种身份的用户,但是还有一个特殊的人物需要介绍一下,它就是“万能的天神”,root账户。root在Linux中具有至高无上的权限,它可以操作任何系统中的文件。因为使用root用户的时候需要当心。

二、Linux用户身份与用户组记录文件

1. /etc/passwd

默认情况下,所有的系统上的账号与一般身份的用户,还有天神root用户的相关信息,全部都记录在/etc/passwd这个文件中。

2. /etc/shadow

系统所有用户的个人密码都记录在/etc/shadow文件中,但是文件中的密码都是加密的,我们打开后并不能看到真正的密码。

3. /etc/group

系统中所有的组名以及id都记录在/etc/group这个文件中。

三、文件属性与权限

1. 查看文件属性的方法(ls)

通过ls可以查看目录中的文件,仅仅输入ls后面不加目录的时候,输出的是当前所在目录的文件,加上目录之后,则是输出的所加的目录下的文件内容。详细的使用方法如下所示:经常使用的两个参数是 -a-l-a可以列出目录下的所有文件,包括隐藏的文件;-l则是列出文件的详细信息,包括文件的属性、权限等等信息。如果同时使用 -a-l,则是使用-al,这样就可以同时显示两个参数的内容了,ls -al 这个命令也可以简写为 ll

[root@www ~]# ls [-aAdfFhilnrRSt] 目录名称
[root@www ~]# ls [--color={never,auto,always}] 目录名称
[root@www ~]# ls [--full-time] 目录名称
选项与参数:
-a  :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-A  :全部的文件,连同隐藏档,但不包括 ... 这两个目录
-d  :仅列出目录本身,而不是列出目录内的文件数据(常用)
-f  :直接列出结果,而不进行排序 (ls 默认会以档名排序!)
-F  :根据文件、目录等资讯,给予附加数据结构,例如:
      *:代表可运行档; /:代表目录; =:代表 socket 文件; |:代表 FIFO 文件;
-h  :将文件容量以人类较易读的方式(例如 GB, KB 等等)列出来;
-i  :列出 inode 号码,inode 的意义下一章将会介绍;
-l  :长数据串列出,包含文件的属性与权限等等数据;(常用)
-n  :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在帐号管理提到!)
-r  :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
-R  :连同子目录内容一起列出来,等於该目录下的所有文件都会显示出来;
-S  :以文件容量大小排序,而不是用档名排序;
-t  :依时间排序,而不是用档名。
--color=never  :不要依据文件特性给予颜色显示;
--color=always :显示颜色
--color=auto   :让系统自行依据配置来判断是否给予颜色
--full-time    :以完整时间模式 (包含年、月、日、时、分) 输出
--time={atime,ctime} :输出 access 时间或改变权限属性时间 (ctime) 
                       而非内容变更时间 (modification time)

2.文件属性详细介绍

在这里,以鸟哥的Linux私房菜中的代码段为例来介绍文件的属性。在书中,作者是使用 su - 切换身份成为root后, 使用“ ls -al ”看看,会看到下面的内容:

[dmtsai@study ~]$ su -  # 先来切换一下身份看看
Password:
Last login: Tue Jun  2 19:32:31 CST 2015 on tty2
[root@study ~]# ls -al
total 48
dr-xr-x---.  5    root     root    4096  May 29 16:08 .
dr-xr-xr-x. 17    root     root    4096  May  4 17:56 ..
-rw-------.  1    root     root    1816  May  4 17:57 anaconda-ks.cfg
-rw-------.  1    root     root     927  Jun  2 11:27 .bash_history
-rw-r--r--.  1    root     root      18  Dec 29  2013 .bash_logout
-rw-r--r--.  1    root     root     176  Dec 29  2013 .bash_profile
-rw-r--r--.  1    root     root     176  Dec 29  2013 .bashrc
drwxr-xr-x.  3    root     root      17  May  6 00:14 .config               <=范例说明处
drwx------.  3    root     root      24  May  4 17:59 .dbus
-rw-r--r--.  1    root     root    1864  May  4 18:01 initial-setup-ks.cfg  <=范例说明处
[    1    ][  2 ][   3  ][  4 ][    5   ][    6     ] [       7          ]
[  权限   ][链接][拥有者][群组][文件大小][ 修改日期 ] [      文件名        ]

在这里要介绍的就是列出的7列内容,分别是1:权限 2链接 3文件拥有者 4文件所属群组 5文件大小 6修改日期 7文件名下面讲对这些内容进行详细的介绍。

2.1 权限

权限的介绍以下图为例,权限这一栏一共有10个字符。
在这里插入图片描述
第一个字符代表的是这个文件的类型,例如目录、文件、链接文件等等

  • 当为[ d ]则是目录
  • 当为[ - ]则是文件
  • 当为[ l ]则是链接文件(link file)
  • 当为[ b ]则是设备文件里面的可供储存的周边设备(可随机存取的设备)
  • 当为[ c ]则是设备文件里面的串行端口设备,例如键盘、鼠标(一次性读取设备)

接下来的字符中,以三个为一组且均为[rwx]的三个参数的组合。其中,[r]代表可读(read)[w]代表可写(write)[x]代表可执行(execute)。要注意的是这三个权限的为止不会改变,如果没有某个权限则是用-来代替。

  • 第一组为文件拥有者可具备的权限
  • 第二组为加入此用户组的账号的权限
  • 第三组为非本人且没有加入本用户组的其他账户的权限

2.2 链接

链接表示有多少文件名链接到此节点(inode)。每个文件都会将它的权限与属性记录到文件系统inode中,不过,我们使用的目录树却是使用文件名来记录,因此每个文件名就会链接到一个inode,这个属性记录的就是有多少不同的文件名链接到相同的一个inode号码。

2.3 文件(或目录)的拥有者

表示这个文件属于的那个用户。

2.4 文件(或目录)所属用户组

表示文件所属的用户组。注意,这个用户组可以与文件拥有者没有关系。

2.5 文件的容量大小

容量的默认单位为Bytes

2.6 文件的创建日期或是最近的修改日期

这一栏的内容分别为日期(月/日)。如果这个文件修改的时间距离现在太久,那么时间部分会仅显示年份。如下面所示。

[root@study ~]# ll /etc/services /root/initial-setup-ks.cfg
-rw-r--r--. 1 root root 670293 Jun  7  2013 /etc/services
-rw-r--r--. 1 root root   1864 May  4 18:01 /root/initial-setup-ks.cfg
# 如上所示,/etc/services 为 2013 年所修改过的文件,离现在太远之故,所以只显示年份;
# 至于 /root/initial-setup-ks.cfg 是今年 (2015) 所创建的,所以就显示完整的时间了。

2.7 文件名

如果文件名之前多了一个点.,则代表这个文件为隐藏文件。

3. 修改文件属性和权限

在这一节,我们将介绍几个常用于用户组、拥有者、各种身份的权限修改的命令。

chgrp:修改文件所属用户组
chown:修改文件拥有者
chmod:修改文件的权限,SUID,SGID,SBIT等特性

这三个命令都需要root权限才能执行,因此可以直接使用su -来切换成root用户,也可以使用sudo命令来启用root权限,但是这需要登陆的账号具有sudo权限才行。要给用户添加权限一般是需要在/etc/sudoers添加和root那行一致的内容,保存退出才可。

3.1 修改文件所属用户组(chgrp)

chgrp就是change group的缩写。修改命令的格式如下:

chgrp [-R] 所属组 文件名(目录名)

-R: 进行递归(recursive)修改,亦即连同子目录下的所有文件、目录都更新为属于这个用户组,常常用在修改某一目录内所有文件的情况下

下面以鸟哥的Linux的私房菜中的内容为例,详细看下使用方法,其中登录的是root账号,修改了initial-setup-ks.cfg文件的所属用户用户组为users

[root@study ~]# chgrp users initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root users 1864 May  4 18:01 initial-setup-ks.cfg
[root@study ~]# chgrp testing initial-setup-ks.cfg
chgrp: invalid group:  `testing' <== 发生错误讯息啰~找不到这个群组名~`

修改文件的所属组必须为已有的用户组,上面的当改文件的所属组为testing时,由于Linux中没有这个组,所以就会报错。

3.2 修改文件拥有者(chown)

chown就是change owner的缩写,使用者必须是已经存在系统中的账号,也就是在/etc/passwd这个文件中有记录的使用者名称才可以。chown的用途还挺多的,他还可以顺便直接修改群组的名称,修改命令的格式如下:

chown [-R] 帐号名称 文件或目录
chown [-R] 帐号名称:群组名称 文件或目录

-R: 进行递归(recursive)修改,亦即连同子目录下的所有文件、目录都更新为属于这个用户组,常常用在修改某一目录内所有文件的情况下

范例:

范例:将 initial-setup-ks.cfg 的拥有者改为bin这个帐号:
[root@study ~]# chown bin initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 bin  users 1864 May  4 18:01 initial-setup-ks.cfg

范例:将 initial-setup-ks.cfg 的拥有者与群组改回为root:
[root@study ~]# chown root:root initial-setup-ks.cfg
[root@study ~]# ls -l
-rw-r--r--. 1 root root 1864 May  4 18:01 initial-setup-ks.cfg

3.3 修改文件权限(chmod)

权限的设置方法有两种,分别是使用数字或者是符号来进行权限的变更。我觉得数字修改权限更方便,所以在这我只讲数字更改文件权限的方法。
Linux文件的基本权限就有9个,分别是拥有者(owner)、所属群组(group)、其他人(others)三种身份各自自己的读(read)、写(write)、执行(execute)权限。使用数字修改文件的权限,每个权限都可以由一个数字来代替,如下:

r: 4
w: 2
x: 1

每种身份拥有者(owner)、所属群组(group)、其他人(others)的各自的三个权限读(read)、写(write)、执行(execute)需要累加,,例如文件的权限为:[-rwxrwx---],该文件的权限数字为770,计算如下:

owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0

修改文件权限的命令为:

chmod [-R] xxx 文件或目录
#xxx就是各个身份的权限数字

-R: 进行递归(recursive)修改,亦即连同子目录下的所有文件、目录都更新为属于这个用户组,常常用在修改某一目录内所有文件的情况下

举例来说,如果要将.bashrc这个文件所有的权限都设置启用,那么就需要设置数字权限777

范例:

[root@study ~]# ls -al .bashrc
-rw-r--r--. 1 root root 176 Dec 29  2013 .bashrc
[root@study ~]# chmod 777 .bashrc
[root@study ~]# ls -al .bashrc
-rwxrwxrwx. 1 root root 176 Dec 29  2013 .bashrc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/770356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python多个if代码优化

一、背景 大量的if … elif…代码非常难看,也很难维护。扩展不太方便 二、优化方案 以下栗子展示不同的角色获取折扣信息。 1、正常写法 def discount_algorithm(user_role):if user_role admin:discount 0.1return discountelif user_role msp:discount 0.…

【protobuf】socket.io序列化和反序列化

1.背景 后台利用socket.io发送websocket消息&#xff0c;加密用到protobuf 2.反序列化时遇到问题 Traceback (most recent call last): File "D:/locust/Nigeria/test3.py", line 40, in <module> play.ParseFromString(decode_spin_str) google.proto…

Cesium 实战 - 通过 Blender 将模型组件拆解为独立子模型

Cesium 实战 - 通过 Blender 将模型组件拆解为独立子模型 拆分模型1.导入模型&#xff08;J15.glb&#xff09;2.拆分模型3.保存模型 完整代码在线示例 上篇博客介绍了 Cesium 实战 - AGI_articulations 扩展&#xff1a;模型自定义关节动作 这篇接着介绍一下&#xff0c;模型…

【Redis】高可用之三:集群(cluster)

本文是Redis系列第6篇&#xff0c;前5篇欢迎移步 【Redis】不卡壳的 Redis 学习之路&#xff1a;从十大数据类型开始入手_AQin1012的博客-CSDN博客关于Redis的数据类型&#xff0c;各个文章总有些小不同&#xff0c;我们这里讨论的是Redis 7.0&#xff0c;为确保准确&#xf…

YZ04:文本批量替换使用说明文档

【分享成果&#xff0c;随喜正能量】达摩祖师说&#xff1a;“不谋其前&#xff0c;不虑其后&#xff0c;不恋当今。”你內心安适&#xff0c;就会宠辱不惊&#xff0c;俯仰无愧&#xff0c;从一天到一年&#xff0c;从一年到一生&#xff0c;秒秒感受安详&#xff0c;活在至真…

MySQL-数据库读写分离(中)

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a; 小刘主页 ♥️努力不一定有回报&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️学习两年总结出的运维经验&#xff0c;以及思科模拟器全套网络实验教程。专栏&#xf…

常见java知识点1

目录 1 什么是Spring框架&#xff1f;Spring框架有哪些主要模块&#xff1f; 2 使用Spring框架有什么好处&#xff1f; 3 Java常用的包&#xff08;列举六个&#xff09; 4 Arraylist 和 Linkedlist 的区别 5 HashMap和Hashtable的区别 6 Java中常见的…

vue-sticky简单使用(实现吸顶效果)

参考链接 vue-sticky&#xff1a;在页面滚动时将指定元素固定在窗口上的某个位置 生效条件如下&#xff1a; 1、父元素不能设置 overflow:hidden 或者 overflow:auto 属性 2、至少指定 top 、bottom 、left 、right 4 个值中的一个&#xff0c;否则只会处于相对定位 3、父元素…

OpenCVForUnity(六)图像的对比度和亮度

文章目录 前言公式讲解Unity嵌套循环实现使用convertTo实现亮度和对比度调整:伽马矫正 前言 图片处理中这也是非常常用的功能,下面我们一起来学习一下如何在OpenCVForUnity中修改图像的对比度亮度 图像处理中的常见算子可以将一个或多个输入图像转换为输出图像。这些变换包括点…

tdengine超级表创建

tdengine有官网文档&#xff0c;这里就把实际使用的SQL贴出来吧。 创建超级表&#xff1a; CREATE STABLE superTable(time TIMESTAMP, val double) TAGS (point varchar(100));执行SQL后会创建一个叫superTable的超级表。 建完超级表后再创建子表&#xff0c;SQL如下&#…

8、PHP访问权限配置与报错处理:You don‘t have permission to access this resource.

这是由于阿帕奇服务器的权限设置导致的。 解决办法&#xff1a; 1、由于我们之前已经设置了虚拟主机&#xff0c;我们在WAMPserver中&#xff0c;找到添加虚拟主机的配置文件的路径 2、打开这个文件&#xff0c;修改相应的虚拟主机的访问权限&#xff0c;Require后面改为all …

Cesium Terrain Builder (CTB) 简单使用_地形切片

Cesium Terrain Builder (CTB) 简单使用_地形切片 目录 Cesium Terrain Builder (CTB) 简单使用_地形切片 官网地址&#xff1a; winr&#xff08;cmd&#xff09;打开命令提示符工具运行&#xff1a; Create a GDAL Virtual Dataset (optional) Create Cesium Terrain fi…

CentOS系统下Docker安装部署Strapi

Nodejs 16 安装 移除旧版本的 node yum remove -y nodejs npm使用以下命令将存储库添加到系统 curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -配置存储库之后可以安装 yum install -y nodejs查看版本 node -v下载 yarn 包管理 curl -sL https://dl.yar…

数字化时代,智能文件工具让办公升级

无论是在办公室还是在学校&#xff0c;文件管理是我们日常工作中不可或缺的一环。传统的文件整理方式可能需要花费大量的时间和精力&#xff0c;而且常常容易出现混乱和遗漏。然而&#xff0c;随着科技的不断进步&#xff0c;我们现在有幸生活在一个数字化时代&#xff0c;因此…

ELK(elasticsearch+logstash+kibana+beats)

什么是ELK Elasticsearch&#xff1a;Elasticsearch&#xff08;以下简称ES&#xff09; 是一个分布式、RESTful 风格的搜索和数据分析引擎&#xff0c;能够解决不断涌现出的各种用例。 ES是 Elastic Stack 的核心&#xff0c;采用集中式数据存储&#xff0c;可以通过机器学习来…

ylb-接口2首页产品数据和接口3产品列表

总览&#xff1a; 1、service处理&#xff08;分页查询&#xff09; 在api模块下service包&#xff0c;创建一个产品接口ProductService&#xff1a;&#xff08;目前方法为分页查询queryByTypeLimit(Integer pType,Integer pageNo,Integer pageSize)&#xff09; package…

如何破解中小企业数字化转型难点?建议来了!

打开任何一个搜索引擎&#xff0c;只要输入“中小企业数字化转型”&#xff0c;关于痛点、难处的文章就会铺面而来&#xff0c;难在哪里&#xff0c;其实很好解答&#xff0c;关键在于&#xff0c;如何解决这一个个难处。 PS&#xff1a;给大家整理了一份完整版的《中小企业如…

物理层 ———— 奈氏准则 香农定理

1. 失真的现象----码间串扰 2.奈氏准则 eg: 3.香农定理 eg: 3.两个准则的比较

excel表格设置下拉选项

excel表格设置下拉选项 最后保存&#xff0c;即可设置完成。

RAM Failed to establish a new connection: [Errno 11001] getaddrinfo failed

在跑RAM(​Recognize Anything Model​)的时候报了一个错: Failed to establish a new connection: [Errno 11001] getaddrinfo failed ① 没有帮助我解决&#xff0c;对大家可能有用&#xff1a; 查到别人的解决方案是&#xff1a; 开放C:\Windows\System32\drivers\etc\hos…