Linux 中的用户与文件权限

版权声明: https://blog.csdn.net/ShadowySpirits/article/details/82939847

一、用户与用户组

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

每个用户账号都拥有一个惟一的用户名和各自的口令。

用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。

//查看用户
id user

//查看当前用户
who am i

//添加用户
useradd user

//设置密码
passwd user

//删除用户
userdel -r user

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。

//查看用户所在组
groups user

//加入组
gpasswd -a user group
#把用户user加入到group组;
#加入组后user获取到user组及group组所有权限
 
//移出组
gpasswd -d user root
#把用户user移出group组;



二、文件权限

ls 命令列出文件详情(ll 是 ls -l):

长格式显示文件内容

每列依次表示:

文件类型与权限 连接的文件数 用户 用户所在的组 文件大小(字节)最后修改日期 文件名


第一列第一位表示文件类型,有以下几种:

  1. 普通文件(regular file)第一个字符为[ - ]
    包括:
    ①纯文本档(ASCII):这是Linux系统中最多的一种文件类 型,称为纯文本档。是因为内容为我们⼈人类可以直接读到的数据,例如数字、字母等等。
    ②二进制文件(binary): 你的Linux中的 可执行文件(scripts, 文字型批处理文件不算)就是这种格式的。
    ③数据格式文件(data):有些程序在运作的过程当中会读取某些特 定格式的档案,那些特定格式的档案可以被称为数据⽂文件 (data file)。一般用cat看到的都是乱码。

  2. 目录(directory): 第一个字符为[ d ]

  3. 连接文件(link)第⼀一个字符为[ l ]

  4. 设备和设备文件

包括:①块设备文件,即一些存储文件,如硬盘、软盘等,第一个字符为 [ b ]

​ ②字符设备文件,即一些串行端口的接口文件,如键盘、鼠标等, 第一个字符为[ c ]

  1. 套接字(sockets)第一个字符为[ s ] 。还被称为数据接口文件,这种类型的文件通常被用在网络上的数 据连接。我们可以启动一个程序来监听客户端的请求,而客户端就 可以通过数据接口文件来进行数据通信。

  2. 管道(FIFO,pipe)第一个字符为[ p ]


第一列后九位是权限列表:

权限详情

如上图,可以将权限分为三组:

  1. 文件和文件目录的所有者:u—User

    一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

    ls ‐ahl 命令可以看到文件的所有者

    也可以使用 chown 用户名 文件名 来修改文件的所有者

  2. 文件和文件目录的所有者所在的组的用户:g—Group

    当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组

    ls ‐ahl 命令可以看到文件的所有组

    也可以使用 chgrp 组名 文件名来修改文件所在的组

  3. 其它用户:o—Others

    除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

每个权限部分可选字符选项如下:

  1. r: read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。

  2. w:write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。

  3. S:set如果在所有者权限部分,表示该文件不能被执行和设置为set-user-ID模式。如果在组权限部分,表示该文件不能被执行和设置为set-group-ID模式。

  4. s:如果该字符在所有者权限部分,表示该文件可执行和设置为set-user-ID模式。如果设置在组权限部分,表示该文件可执行和设置为set-group-ID模式。

    s位的说明:

    一般来说,一个运行中的程序为运行这个程序的用户所拥有。但如果该程序是suid/guid程序,则运行的程序则为文件所有者拥有,运行中的程序在程序运行期间拥有文件所有者的全部权限。
    如果一个普通用户运行了一个属于根用户的带s标志的程序,那么,该程序将不考虑用户权限,而是自动拥有在系统中读/写任何文件及目录的特权。

    这样做,有一定的好处,但一般我们不建议采用s位,要严格设置这种权限,避免破坏性。

  5. x:execute对⽂文件⽽而⾔言,具有执⾏行⽂文件的权限; 对于目录来说,具有进⼊目录的权限

  6. -:无(读,写,执行,setuid等)权限

以下两个字符只能用于其它用户:

  1. T 沾滞位设置(1000模式),但不能执行或者搜索。

  2. t 沾滞位设置(1000模式),并可以执行或搜索。(该字符较常见一般用于授予目录,作用为任何人可以在该目录中创建文件,但是该文件只有创建者可删除。见/tmp目录权限)

    t位的说明:

    程序的t属性表示粘滞位,即告诉系统在程序完成后在内存中保存一份运行程序的备份,如该程序常用,可为系统 节省点时间,不用每次从磁盘加载到内存。由本人注明:是保存在虚拟内存中,而不是物理内存中。

    目录的t属性,设置了目录的T属性后1000,由只有该目录的所有者及root才能删除该目录


需要注意的是:
  1. 如果有某目录的 w 权限那么就可以删除该目录下的任意文件(无论有无该文件的权限)
  2. 如果没有目录的 x 权限,那么无法进入该目录使其成为工作目录,但是仍然可以看到该目录的内容,但是无法对该目录下的文件进行读写操作(即使有该文件的读写权限)
  3. 一般使用八进制表示 rwx 权限:r=4,w=2,x=1
//设置文件的访问权限
chmod [参数] 权限文件名

//修改文件的拥有者
chown [参数]  用户名   文件名

//修改文件或目录的所属组
chgrp [参数]  用户组名  文件名

猜你喜欢

转载自blog.csdn.net/ShadowySpirits/article/details/82939847