当前位置:   article > 正文

Linux权限_linux给用户加权限

linux给用户加权限

目录

一、Linux权限的概念

二、Linux权限管理

1、文件访问者的分类

为什么需要这样的设计?

2、文件或目录的详细列表信息

3、文件类型

4、基本权限

5、文件权限值的表示方法

6、设置访问权限

chmod

用户符号:  

chmod命令权限值的格式:

① 用户表示符+/-=权限字符

②三位8进制数字

chown 

命令语法

基本用法

选项

示例

注意事项

chgrp

命令语法

基本用法

选项

示例

注意事项

umask

新建文件和目录默认权限

功能

file

命令语法

基本用法

选项

示例

使用场景

使用 sudo分配权限

(1)修改/etc/sudoers 文件分配文件

(2)使用 sudo 调用授权的命令

7、权限只被认证一次

8、目录的权限

9、粘滞位 


一、Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。
  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
命令:su [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

例一

例二

例三

二、Linux权限管理

Linux下,不以文件后缀来区分文件类型。
(并不代表不可以使用,在系统层面没意义,但是可以给自己看)

1、文件访问者的分类

  • 文件和文件目录的所有者:u---User
  • 文件和文件目录的所有者所在的组的用户:g---Group
  • 其它用户:o---Others

所有者 (User/Owner)

  • 定义:文件的所有者通常是创建文件的用户,或者是通过某些命令(如 chown)被指定为文件所有者的用户。
  • 目的:所有者对文件有最大的控制权,通常能够设置文件的权限和修改文件的内容。这样设计是为了确保文件的创建者或者指定的用户能够完全控制自己的文件资源。

所属用户组 (Group)

  • 定义:每个文件还关联有一个用户组,这通常是由创建文件时用户的默认组决定的,但也可能通过 chgrp 或 chown :groupname 命令被更改。
  • 目的:所属用户组的权限允许一组用户共享对文件的访问控制,而无需将所有用户都设置为文件的所有者。这在团队协作中尤其有用,因为团队成员可以被添加到同一个组中,从而共享对某些文件的访问权限。

其他用户 (Others)

  • 定义:除了文件所有者和所属用户组的成员之外的任何用户。
  • 目的:其他用户权限的存在确保了系统中非直接相关用户对文件的访问控制,防止未经授权的访问。这有助于保护数据的安全性和完整性,防止未授权用户读取、修改或执行敏感文件。

为什么需要这样的设计?

  • 安全性:通过限制对文件的访问,可以防止未经授权的用户访问敏感数据或进行潜在破坏性的操作。
  • 协作性:用户组的概念使得团队成员可以方便地共享文件,而不需要将文件的所有权转移给每一个需要访问文件的用户。
  • 灵活性:不同的用户和用户组可以有不同的权限,这使得管理员可以根据具体需求灵活地调整访问控制策略。

2、文件或目录的详细列表信息

  1. 第一列(drwxr-xr-x):表示文件或目录的权限模式。以字母和符号的形式表示了所有者、所属组和其他用户的权限。第一个字符表示文件类型,其中"d"表示目录。接下来的三个字符(rwx)表示所有者的权限,再接下来的三个字符(r-x)表示所属组的权限,最后的三个字符(r-x)表示其他用户的权限。

  2. 第二列(3):表示链接到该文件或目录的硬链接数。对于目录来说,这个数字表示该目录下的子目录和文件的数量。

  3. 第三列(root):表示文件或目录的所有者。

  4. 第四列(root):表示文件或目录的所属组。

  5. 第五列(4096):表示文件或目录的大小(以字节为单位)。对于目录来说,这个值通常是固定的。

  6. 第六列(Jan 23 10:32):表示文件或目录的最后修改时间。

  7. 第七列(lesson1):表示文件或目录的名称。

总计(total 8):表示当前目录下的文件和目录的总数。

3、文件类型

  • d:文件夹
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕、打印机、键盘和鼠标等串口设备)
  • s:套接口文件

4、基本权限

  1. 读(r/4 - 100):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限。
  2. 写(w/2 - 010):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限。
  3. 执行(x/1 - 001):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
  4. “—”表示不具有该项权限。

5、文件权限值的表示方法

  • 字符表示方法
Linux表示说明Linux表示说明
r - -只读- w -仅可写
- - x仅可执行rw -可读可执行
- wx可写可执行r - x可读可执行
rwx可读可写的可执行- - -无权限
  • 8进制数值表示方法
权限符号八进制二进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
- - -0000

6、设置访问权限

chmod

chmod 是 Linux 和类 Unix 系统中一个非常重要的命令,用于更改文件或目录的权限。chmod 的全称是 "change mode",它允许你修改文件或目录的访问模式,包括读(r)、写(w)和执行(x)权限。通过精确控制文件的权限,chmod 命令增强了系统的安全性和可管理性。

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限
用户符号:  
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户
chmod命令权限值的格式
① 用户表示符+/-=权限字符
  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

实例:

# chmod u+w /home/abc.txt
# chmod o-x /home/abc.txt
# chmod a=x /home/abc.txt

②三位8进制数字
# chmod 664 /home/abc.txt
# chmod 640 /home/abc.txt
root用户不受权限约束

chown 

chown 命令在 Linux 和 Unix 类似系统中用于改变文件或目录的所有者(owner)和所属用户组(group)。它的名字来源于英文 "change owner" 的缩写。这个命令通常由 root 用户或文件的当前所有者使用,因为它涉及到对文件权限的更改,而这通常需要较高的权限。

命令语法
chown [选项] [所有者][[[:]]所属组] 文件或目录
基本用法
  • 更改文件或目录的所有者:
    chown newowner filename
  • 同时更改所有者和所属组:
    chown newowner:newgroup filename
  • 如果只想更改所属组,可以省略所有者部分:
    chown :newgroup filename

 

选项

chown 命令支持一些选项来扩展其功能:

  • -R--recursive:递归地更改目录及其子目录下的所有文件和子目录的所有者和所属组。
  • -h--no-dereference:只更改符号链接本身的所有者和所属组,而不是链接指向的目标文件。
  • -v--verbose:详细显示更改的所有者和所属组的信息。
  • -f--silent:抑制错误信息,使命令在遇到问题时不显示错误消息。
  • -c--changes:只报告更改的文件,不报告未更改的文件。
示例
  • 将文件 example.txt 的所有者更改为 user1
    chown user1 example.txt
  • 将目录 mydir 及其所有子目录和文件的所有者和所属组更改为 user1 和 group1
    chown -R user1:group1 mydir
注意事项
  • 使用 chown 修改文件权限时要小心,特别是当递归更改目录时,因为这可能会影响到许多文件,导致意外的结果。
  • 通常情况下,只有 root 用户或者文件的当前所有者才有权限使用 chown 命令来更改文件的所有者。普通用户只能更改自己拥有的文件的所属组。

chgrp

chgrp 命令在 Linux 和类 Unix 系统中用于更改文件或目录的所属用户组(group)。这个命令的全称是 "change group",它允许你将一个文件或目录的所属组更改为系统中已存在的任何组。chgrp 命令通常由文件的所有者或具有 root 权限的用户使用,因为改变文件的组归属通常需要相应的权限。

命令语法
chgrp [选项] 组名 文件或目录
基本用法
  • 更改单个文件的所属组:
    chgrp newgroupname filename
  • 更改目录及其内部文件和子目录的所属组:
    chgrp -R newgroupname directoryname
    其中 -R 表示递归地更改目录内的所有文件和子目录。

选项

chgrp 支持以下选项来扩展其功能:

  • -R--recursive:递归地更改目录及其所有子目录和文件的所属组。
  • -h--no-dereference:仅更改符号链接本身的所属组,而不是链接所指向的文件或目录。
  • -v--verbose:详细显示哪些文件的所属组被更改了。
  • -f--silent--quiet:不显示错误信息,即使遇到问题也不显示。
  • -c--changes:类似于 -v,但只报告那些确实被更改的文件。
示例
  • 将文件 example.txt 的所属组更改为 developers
    chgrp developers example.txt
  • 将整个 projects 目录及其所有子目录和文件的所属组更改为 developers
    chgrp -R developers projects
注意事项
  • 当你使用 chgrp 更改文件的所属组时,你需要确保新组在系统中是存在的。如果尝试使用一个不存在的组名,chgrp 命令会失败并显示错误信息。
  • 只有文件的所有者或具有 root 权限的用户才能使用 chgrp 来更改文件的所属组。

umask

umask 命令用于设置或报告当前进程的文件权限掩码。文件权限掩码决定了新创建的文件和目录的默认权限,它是通过从默认权限中去除某些权限位来实现的。

新建文件和目录默认权限
  • 新建文件的默认权限是 0666(二进制 110110110),即所有者、所属组和其他用户都有读写权限。
  • 新建目录的默认权限是 0777(二进制 111111111),即所有者、所属组和其他用户都有读、写和执行权限。
功能
  1. 查看或修改文件掩码
  2. 实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask。
格式:umask 权限值

说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

这样,对于超级用户(默认掩码值为0022):

  • 666(默认文件权限) - 022(权限掩码) = 644(拥有者读写权限,同组用户和其他用户只有读权限)

对于普通用户(默认掩码值为0002):

  • 666(默认文件权限) - 002(权限掩码) = 664拥有者和同组用户具有读写权限,其他用户只有读权限)
实例

# umask //查看

# umask 044//设置

file

file 命令在 Linux 和类 Unix 系统中是一个非常有用的工具,用于确定文件的类型。它可以识别各种文件格式,包括文本文件、二进制文件、脚本、图片、音频、视频等多种类型,并且能够提供关于文件的详细信息,如编码格式、压缩类型、MIME 类型等。

命令语法
file [选项] 文件...
基本用法

运行 file 命令后,它会分析指定的文件,并输出每个文件的类型和相关信息。如果没有指定文件,则默认为标准输入,可以用来检测从管道传递过来的数据类型。

选项

file 命令支持多种选项,用于控制输出格式和行为:

  • -b:仅输出文件类型,不显示文件名。
  • -i:输出 MIME 类型和编码。
  • -L:如果遇到符号链接,显示链接指向的文件类型,而不是链接本身。
  • -m:使用指定的魔法数据库文件,而不是默认的。
  • -q 或 --quiet:静默模式,仅输出文件类型,不显示额外信息。
  • -v:详细模式,显示更多关于文件的信息。
  • -z:处理压缩文件时,自动解压并检测原始文件类型。
示例
  • 查看文件 example.txt 的类型:
    file example.txt
  • 获取多个文件的 MIME 类型和编码:
    file -i image.jpg audio.mp3
  • 静默模式下查看文件类型,适用于脚本中:
    file -qb document.pdf

输出示例

假设我们运行 file 命令检查一个文本文件:

  1. $ file sample.txt
  2. sample.txt: ASCII text

在这个例子中,file 命令告诉我们 sample.txt 是一个 ASCII 文本文件。

使用场景

file 命令在多种场景下都非常有用,包括但不限于:

  • 确认文件是否符合预期的格式,比如在上传文件前检查。
  • 在脚本中自动识别文件类型,以便进一步处理。
  • 故障排除时,帮助诊断文件损坏或格式错误的问题。
  • 安全审计时,确认文件的实际内容与声明的内容是否一致。

使用 sudo分配权限

用户未添加到信任列表并使用sudo指令时 如下图

(1)修改/etc/sudoers 文件分配文件
格式:接受权限的用户登陆的主机 =(执行命令的用户) 命令

# vim /etc/sudoer

vim /etc/sudoers:这个命令是使用vim编辑器打开/etc/sudoers文件。/etc/sudoers是一个特殊的系统文件,用于配置sudo的权限规则。通过编辑这个文件,可以为特定的用户或用户组分配sudo权限。

 添加用户到信任列表之后,按下w加 !强制保存后退出即可 。

(2)使用 sudo 调用授权的命令
  • $ sudo –u 用户名 命令
实例:

$sudo -u root /usr/sbin/useradd u2

7、权限只被认证一次

当用户既是目录的拥有者也是所属组时,如果去掉拥有者所有权限,将无法进入该目录,这是因为如果用户如果同时为拥有者和所属组,则只关注用户的拥有者权限。

8、目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中.
  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.
只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限。

在UNIX和类UNIX系统中,如果用户对一个目录具有写权限,那么该用户可以删除该目录中的文件,即使该用户对这些文件没有写权限。这是因为在UNIX文件系统中,删除一个文件实际上是修改包含该文件的目录。

假设有一个目录`/home/zhangsan`,其中包含一个文件`file.txt`,并且用户"zhangsan"是该目录的所有者。

1. 首先,我们创建一个文件`file.txt`:

 $ touch /home/zhangsan/file.txt

2. 然后,我们将文件的权限设置为只读:

$ chmod 400 /home/zhangsan/file.txt

3. 接下来,我们将目录`/home/zhangsan`的权限设置为可写:

 $ chmod 700 /home/zhangsan

现在,用户"zhangsan"对文件`file.txt`只有读权限,但对目录`/home/zhangsan`具有写权限。

现在,如果用户"lisi"(不是文件的所有者)尝试删除文件`file.txt`,他将能够成功删除它,尽管他没有对文件的写权限:

$ rm /home/zhangsan/file.txt

这是因为用户"lisi"对目录`/home/zhangsan`具有写权限,所以他可以修改该目录,包括删除其中的文件。

这种设计是为了方便用户管理自己的文件和目录,但也需要小心谨慎地设置文件和目录的权限,以确保只有授权的用户能够访问和修改文件。

同一目录下,不同用户所创建的文件能否被对方删除,取决于目录是否提供提供写权限。

如果大家所有用户都在一个共同的路径下,对该目录具有读写执行权限,如何同时满足以下条件呢?
  1. 当多个用户共享一个目录,需要在该目录下,进行读写,创建删除文件
  2. 但是自己只能删除自己的, 而不能删除别人的 (虽然具有写权限w 则可以互删的,但是不满足此条件)

为了满足上述两个条件,粘滞位登场 

9、粘滞位 

  • 粘滞位(Sticky Bit)是一种文件系统权限的特殊标志,用于控制对目录中文件的删除权限。当粘滞位被设置在一个目录上时,只有目录的所有者、文件的所有者和超级用户才能删除或重命名该目录中的文件;其它用户可以创建文件,但是只能删除自己的文件,不可以删除别人的文件。
  • 在UNIX和类UNIX系统中,粘滞位可以通过文件系统的权限模式来设置。当一个目录的粘滞位被设置时,该目录的权限模式会以一个加号(+)和粘滞位标志(t)结尾。例如,一个具有粘滞位的目录权限模式可能是drwxrwxrwt。
  • 要设置粘滞位,可以使用chmod命令,并在权限模式中添加一个加号(+)和粘滞位标志(t)。例如,要将粘滞位设置在目录上,可以运行以下命令:
chmod +t directory_name

只有目录的所有者或超级用户才能设置或取消粘滞位。粘滞位对于确保公共目录中的文件安全性非常有用,防止意外删除或修改他人的文件。 

总结:

粘滞位只能给目录设置,一般是谁设置,谁才能取消。

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
  • 超级管理员删除
  • 该目录的所有者删除
  • 该文件的所有者删除
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/968917
推荐阅读
相关标签
  

闽ICP备14008679号