【Linux】权限管理

发布时间:2023年12月22日

简介

多任务系统是同一时间进行多个任务;多用户系统是指多个用户可以在同一时间使用同一台计算机。然而一个典型的计算机可能只有一个键盘和一个监视器,但是它仍然可以被多个用户使用,例如,在工作中,如果一台计算机连接到一个网络或者因特网,那么远程用户通过 ssh(安全 shell) 可以登录并操纵这台电脑,并且远程用户也能运行图形界面应用程序,并且图形化的输出结果会出现在远端的显示器上。

为了使多用户特性付诸实践,那么必须发明一种方法来阻止用户彼此之间受到影响。毕竟, 一个用户的行为不能导致计算机崩溃,也不能乱动属于另一个用户的文件,于是便有了我们说的权限管理。常见的一些命令如下:

  • id:显示用户身份信息。
  • chmod:更改用户权限。
  • su:以另一个用户身份运行 shell。
  • sudo:以另一个用户身份执行命令。
  • chown:更改文件所有者。
  • chgrp:更改文件组所有权。
  • passwd:更改用户密码。

用户身份和权限

使用id命令,可以查看身份信息:

在这里插入图片描述

从结果可以看到,当用户创建帐户之后,系统会给用户分配一个号码,叫做用户 ID 或者 uid,然后,为了符合人类的习惯,这个 ID 映射到一个用户名。系统又会给这个用户分 配一个原始的组 ID 或者是 gid,这个 gid 可能属于另外的组当用户创建帐户之后,系统会给用户分配一个号码,叫做用户 ID 或者 uid,然后,为了符合人类的习惯,这个 ID 映射到一个用户名。系统又会给这个用户分 配一个原始的组 ID 或者是 gid,这个 gid 可能属于另外的组。

权限:对于文件和目录的权限是根据读取、写入和执行来定义的。

ls -l foo.txt
# 输出
-rw-rw-r-- 1 me me 0 2008-03-06 14:52 foo.txt

-rw-rw-r-- 这十个字符代表文件的属性,第一个字符-表示文件类型属性,第一个字符常见属性对应的文件类型如下:

  • -:一个普通文件。
  • d:一个目录。
  • l:一个符号链接。
  • c:一个字符设备文件,这种文件类型是指按照字节流来处理 数据的设备。比如说终端机或者调制解调器。
  • b:一个块设备文件,这种文件类型是指按照数据块来处理数 据的设备,例如一个硬盘或者 CD-ROM 盘。

剩下九个字符rw-rw-r-- 代表文件模式,有三个部分分别代表着文件所有者、文件组所有者和其他人的读、写和执行权限。

常见的权限模式有:

  • r:允许列出目录中的内容,前提是目录必须设置了可执行属性(x)。允许打开并读取文件内
    容。
  • w:允许在目录下新建、删除或重命名文件,前提是目录必须设置了可执行属性(x)。允许写入文 件内容或截断文件。但是不允许对文件进行重命名或删除,重命名或删除是由目录的属性决定的。
  • x:允许进入目录。允许将文件作为程序来执行,使用 脚本语言编 写的程序必须设置为可读才能被执行。

权限属性的一些示例:

  • -rw-r--r--:一个普通文件,对文件所有者来说可读可写,文件所有者的组成员可以读该文件,其他所有人都可以读该文件。
  • -rwxr-xr-x:一个普通文件,对文件所有者来说可读、可写、可执行。也可以被其他的所有人读取和执行。
  • -rwx-––-:一个普通文件,对文件所有者来说可读、可写、可执行。其他人无法访问。
  • drwxrwx-–:一个目录,文件所有者以及文件所有者的组成员可以访问该目录,并且可以在该目录下新建、重命名、删除文件
  • drwxr-x-–:一个目录,文件所有者可以访问该目录,并且可以在该目录下新建、重命名、删除文件,文件所有者的组成员可以访问该目录,但是不能新建、重命名、删除文件。

更改权限

使用chmod命令,可以更改文件或目录的权限,但是要注意只有文件的所有者或者超级用户才能更改文件或目录的。chmod命令支持两种不同的方法来改变文件模式:八进制数字表示法或符号表示法。

每个八进制数字代表3个二进制数字,对应的文件模式或权限如下:

OctalBinaryFile Mode
0000-–
1001–x
2010-w-
3011-wx
4100r–
5101r-x
6110rw-
7111rwx
# 查看权限
ls -l foo.txt
-rw-rw-r-- 1 me me 0 2008-03-06 14:52 foo.txt
# 更改权限
chmod 600 foo.txt
# 再次查看权限
ls -l foo.txt
-rw------- 1 me me 0 2008-03-06 14:52 foo.txt

通过传递参数“600”,我们能够设置文件所有者的权限为读写权限,而删除用户组和其他人 的所有权限。虽然八进制到二进制的映射看起来不方便,但通常只会用到一些常见的映射关系: 7 (rwx),6 (rw-),5 (r-x),4 (r–),和 0 (-–)。

八进制常用示例有

  • 600:只有所有者有读和写的权限。
  • 644:所有者有读和写的权限,组用户只有读的权限。
  • 666:每个人都有读和写的权限。
  • 700:只有所有者有读、写和执行的权限。

chmod命令支持一种符号表示法,来指定文件模式。符号表示法分为三部分:更改会影响 谁,要执行哪个操作,要设置哪种权限。通过字符“u”、“g”、“o”和“a”的组合来指定要影 响的对象,如下所示:

  • u:”user” 的简写,意思是文件或目录的所有者。
  • g:用户组。
  • o:”others” 的简写,意思是其他所有的人。
  • a:”all” 的简写,是”u”, ”g” 和“o”三者的联合。

如果没有指定字符,则默认使用 “all”。执行的操作可能是一个“+”字符,表示加上一个 权限,一个“-”,表示删掉一个权限,或者是一个“=”,表示只有指定的权限可用,其它所有 的权限被删除。

  • u+x:为文件所有者添加可执行权限。
  • u-x:删除文件所有者的可执行权限。
  • +x:为文件所有者,用户组,和其他所有人添加可执行权限。等价于 a+x。
  • o-rw:除了文件所有者和用户组,删除其他人的读权限和写权限。
  • go=rw:给文件所属的组和文件所属者/组以外的人读写权限。如果 文件所属组或其他人已经拥有执行的权限,执行权限将被移除。
  • u+x,go=rw:给文件拥有者执行权限并给组和其他人读和执行的权限。 多种设定可以用逗号分开。

一些人喜欢使用八进制表示法,而另一些人则非常喜欢符号表示法。符号表示法的优点是, 允许你设置文件模式的某个属性,而不影响其他的属性。

以另一个用户身份执行命令

使用su命令用来以另一个用户的身份来启动 shell,通常会让你输入该用户的密码。

su [-[l]] [user]
# 使用超级用户
su -
# 不启动新的可交互shell,直接执行单个命令
su -c 'ls -l /root/*'

使用sudo命令以另一个用户身份执行命令,相对于su命令不用输入超级用户的密码,使用 sudo命令时,用户 使用他/她自己的密码来认证。susudo之间的一个重要区别是sudo不会重新启动一个 shell,也不会加载另一个用户的 shell 运行环境。因此执行命令不用单号引用起来。

# ls 
sudo ls -l /root/*

更改文件所有者

chown命令被用来更改文件或目录的所有者和用户组。使用这个命令需要超级用户权限。

chown user1 file.txt

更改文件组所有权

chgrp命令可以实现,chown命令只能更改文件所有权,而不是用户组所有权。

chgrp group1 file.txt

更改用户密码

使用passwd命令,来设置或更改用户密码,只要输入passwd命令,就能更改你的密码。shell 会提示你输入你的旧密码和你的新密码。

总结

通过本文中常见的权限控制命令介绍,可以更合理的设置文件和目录的权限,管理员也可以确保系统安全,并根据需要控制用户对不同资源的访问权限。

文章来源:https://blog.csdn.net/weixin_50357986/article/details/135149882
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。