为什么每个 sudo 执行的可执行文件都需要 sudo?

为什么每个 sudo 执行的可执行文件都需要 sudo?

我为 qtcreator 运行 sudo,现在无法更改我的 project_name.user.creator 文件。它说没有权限。我还使用 sudo 运行 ping 命令,现在没有 sudo 就无法使用它。你知道如何去除它吗?

ls -l /bin/ping
-rwxr-xr-x 1 root root 61240 Nov 10  2016 /bin/ping

ls -ld /usr/share/applications/*creator*
-rw-r--r-- 1 root root 354 Jul 21  2016 /usr/share/applications/qtcreator.desktop


ping 8.8.8.8
ping: socket: Operation not permitted sudo ping 8.8.8.8

sudo ping 8.8.8.8 [sudo] password for default:
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=1.22 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=1.38 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=1.29 ms
^C
--- 8.8.8.8 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.229/1.301/1.380/0.074 ms
default@martin-bogdanov:/home$

答案1

解释

当您使用它执行命令时,sudo仅意味着正在执行该命令的用户是root

因此,如果您正在执行的命令创建了任何文件,这些文件的ownergroup ownerfields 将设置为root.

根据文件(以及可执行文件)的权限,这可能会阻止其他用户读取/写入/执行它们。

例子

ls -l /bin/ping这是我电脑上的输出:

-rwxr-xr-x 1 root root 61168 Feb 11  2017 /bin/ping

我将解释-rwxr-xr-xroot root部分。

第一个字符 ( -) 代表文件的类型。
-表示常规文件。
d表示目录。
等等。

接下来的 3 个字符 ( rwx) 代表 允许的操作owner

r能够读取文件。
w能够写入文件。
x能够执行文件。

接下来的 3 个字符 ( r-x) 表示组成员允许执行的操作group owner

r能够读取文件。
- 不是能够写入文件。
x能够执行文件。

最后 3 个字符 ( ) 表示既不是该组也不是该组成员的r-x用户所允许的操作。 ownergroup owner

r能够读取文件。
- 不是能够写入文件。
x能够执行文件。

root root意味着ownerroot用户,group owner是组root

通用解决方案

要将owner和更改group owner为您的用户帐户,您可以随时使用

sudo chown username:groupname file_name

groupname默认情况下与username您没有手动更改它相同。)

这会将文件的字段更改userusername和。group ownergroupnamefile_name

特定 ping 问题的解决方案

钢铁起子约翰·W·史密斯指出,您还需要一点setuid才能ping正常工作。可以找到说明这里这里

因此,这将解决以下问题ping

sudo chmod u+s /bin/ping

相关内容