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

文章目录

  • 前言
  • 一、用户与用户组
    • 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.mzph.cn/news/4912.shtml

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

相关文章

MacOS触控板缩放暂时失灵问题解决

我的系统版本为Monterey 12.5.1,亲测有效 直接创建脚本xxx.sh,并在终端执行脚本bash xxx.sh即可解决此问题,脚本内容如下: #!/bin/bashkillall Finder #kill Finder如不需要可以删除 killall Dock #kill Dock 如不需要可以删…

【wxWidgets】使用布局控件进行窗口布局

使用布局控件进行窗口布局 窗口布局基础 为了在各种环境中都能使窗口拥有合适的位置和大小,可能需要在OnSize事件中计算每一个窗口的大小并设置新位置,当然使用窗口布局控件可以更方便地实现 如果选择使用布局控件,可以通过自己编写或者使用…

【汉诺塔问题分析】

一、背景 汉诺塔问题是一种经典的递归问题,它由法国数学家Huygens在1665年发现,也是一道有趣的数学难题。这道问题的主要目的是将三根柱子上的一堆盘子移动到另一根柱子上,移动过程中每次只能移动一个盘子,并且大盘子不能放在小盘…

[QT编程系列-10]:C++图形用户界面编程,QT框架快速入门培训 - 4- QT画图与动画

目录 4. QT画图与动画 4.1 QT的绘图系统 4.2 案例目标 4.3 绘制过程 4.4 更换控件的icon 4.5 案例2 4.6 坐标轴 4. QT画图与动画 4.1 QT的绘图系统 QT(也称为Qt Framework)是一种流行的跨平台应用程序开发框架,它提供了丰富的图形用户…

集群基础1——集群概念、LVS负载均衡

文章目录 一、基本了解二、LVS负载均衡2.1 基本了解2.2 工作模式2.2.1 NAT模式2.2.2 DR模式2.2.3 LVS-TUN模式2.2.4 LVS-FULLNAT模式 三、调度器算法四、ipvsadm命令 一、基本了解 什么是集群? 多台服务器做同一件事情。 集群扩展方式: scale up&#xf…

2023年7月北京/广州/深圳制造业产品经理NPDP认证招生

产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…

C# 移除链表元素

203 移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 示例 1: 输入:head [1,2,6,3,4,5,6], val 6 输出:[1,2,3,4,5] 示例 2&#x…

2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同?

2023-07-14:讲一讲Kafka与RocketMQ中存储设计的异同? 答案2023-07-14: 在Kafka中,文件的布局采用了Topic/Partition的方式,每个分区对应一个物理文件夹,且在分区文件级别上实现了顺序写入。然而&#xff0…

WIN无法访问linux开启的SAMBA服务器

WIN无法访问linux开启的SAMBA服务器 打开搜索框“管理Windows凭据” 点击编辑

Camtasia Studio 2023保存为mp4格式的视频的详细教程,Camtasia的视频导出功能

很多用户刚接触Camtasia Studio,不熟悉如何保存mp4格式的视频。在今天的文章中小编为大家带来了Camtasia Studio 2023保存为mp4格式的视频的详细教程介绍。 1、 打开Camtasia Studio。 Camtasia Studio- 2023 win: https://souurl.cn/1JFEsn Camtasia …

06_本地方法接口+07_本地方法栈

一、本地方法? 本地方法就是Java调用非Java代码的接口。 本地方法的作用是融合不同的编程语言为Java所用,它的初衷是融合 C、C程序 二、为什么要使用Native Method? 三、本地方法栈 Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于…

【Linux】Docker 基本管理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Docker 基本管理 Docker 概述Docker 核心概念Docker 安装部署Docker 镜像操作Docker 容器操作 Docker 概述 Docker是一个开源的应用容器引擎,基于go语言开发并遵…

spring复习:(40)全注解的spring AOP

零、需要的依赖&#xff1a; <dependency><groupId>org.aspectj</groupId><artifactId>aspectjrt</artifactId><version>1.8.9</version></dependency><dependency><groupId>org.aspectj</groupId><arti…

AHB协议理解

从小父亲就教育我&#xff0c;做一个对社会有用的人&#xff01; 目录 Chapter1 AHB Block Diagram Ginput signal lnput signals Output Signal Chapter3 Transfers AHB接口Overview Chapter6 Data Buses HWDATA HRDATA Chapter1 Introduction AHB: Advanced High-performanc…

奇迹MU架设教程:SQL Server 2008数据库的安装教程

不管是搭建什么游戏&#xff0c;都是有数据库的&#xff0c;奇迹MU用的是SQL 数据库&#xff0c;根据服务器系统选择SQL server版本&#xff0c;我比较喜欢用Windows server 2008R2系统&#xff0c;所以我安装的是SQL server 2008。作为架设奇迹很重要的数据库程序&#xff0c;…

【Ubuntu】安装docker-compose

要在Ubuntu上安装Docker Compose&#xff0c;可以按照以下步骤进行操作&#xff1a; 下载 Docker Compose 二进制文件&#xff1a; sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/loc…

ThreeJS打造自己的人物

hello&#xff0c;大家好&#xff0c;我是better&#xff0c;今天为大家分享如何使用Three打造属于自己的3D人物模型。 人物建模 当下有很多人物建模的网站&#xff0c;这里给大家分享的 Ready Player Me - Create a Full-Body 3D Avatar From a Photo 前往这个网址&#xff…

C#List转IList方法

最近工作中使用到了C#的List和IList。 这里参考百度上的资料&#xff0c;总结一下。 IList使用命名空间&#xff1a; using System.Collections; List<T>类:表示可通过索引访问的对象的强类型列表&#xff0c;提供用于对列表进行搜索、排序和操作的方法。 IList<T&…

​​Layui之用户管理实例(对数据的增删改查)

目录 ​编辑一、R工具介绍&#xff08;&#xff09; ​编辑二、数据表的增删改查 ​编辑2.1我们先得从查询数据库的语句入手 2.2优化dao类 2.4UserAction类 2.5前台的页面实现增删改查操作 2.6 userManage页面JS 2.7user新增、修改iframe层js 前言 上一篇我分享了…

试玩python的web框架 flask、fastapi、tornado、django

文章目录 一、Flask入门案例 [官网](https://flask.net.cn/quickstart.html) [其它参考](https://zhuanlan.zhihu.com/p/104273184?utm_id0)二、FastAPI入门案例 [官网](https://fastapi.tiangolo.com/zh/) [w3cschool教程](https://www.w3cschool.cn/fastapi/fastapi-feature…