Ubuntu新手在这里!
我似乎无法弄清楚是什么机制决定是执行命令还是显示“权限被拒绝”错误。
例如,假设我们使用的是普通用户帐户,“chown --help”得到执行并工作正常,但实际上更改所有者会返回“权限被拒绝”错误。是什么赋予了?
在 /bin/chown 上使用 ls -l 告诉我们普通用户(其他人)具有执行权限。
ls -l /bin/chown
-rwxr-xr-x 1 root root 59904 Feb 7 2022 /bin/chown
我们可以执行此命令这一事实是否完全意味着我们可以以任何我们想要的方式使用它?
如果不是文件权限,命令是否有另一种机制来确定我们是否具有必要的权限?
系统不只是检查您是否可以执行命令,您可以执行的命令有很多。操作系统会检查您是否有权进行您尝试进行的更改。如果不这样做,那么您尝试运行的程序在尝试执行该操作后会收到错误消息。
例如,如果你想对其他人的文件运行 chmod 命令,而你没有组权限,并且文件不是 +w 表示“a”,所以类似于 rw-r--r--,那么有如果它是“jim”的文件而你是“joe”,你根本无法使用命令编辑或修改权限。操作系统正在阻止该操作,而不是程序本身。该程序只会将消息报告给您。事实上,该命令实际上可能会尝试执行您所要求的...即使它不能。
基本上,Linux 具有这样的文件安全基础结构:
根 > 所有者 > 组 > 所有其他
因此,在该列表中“更左”的人有权更改他们右侧任何人的权限或数据,而“所有其他人”则没有。
但是,你会遇到一个更复杂的问题……人们可以将程序作为“setuid”、“setgid”或其他名称运行。这意味着程序作为附加到文件的用户/组组合运行。它有时用于授予某人访问程序的权限。(不建议使用,建议给用户足够的权限。)
不管怎样,仅仅因为你可以运行任何程序并不意味着你可以用它做任何事情。:D