权限不足,无法以 root 身份执行文件

权限不足,无法以 root 身份执行文件

最近我的 Ubuntu 系统出现了一些问题,所以我重新安装了系统。我有两个硬盘,一个用于系统,另一个用于文件、电影等。重新安装之前,我将 Teamspeak 3 文件夹从系统硬盘移到了另一个硬盘。

现在,重新安装后我无法启动 Teamspeak 3。我必须运行 ts3client_runscript.sh 文件才能启动它,但它说我没有权限。我在网上搜索过,但没有找到可以帮助我的东西。

我还注意到,在正在运行的 Teamspeak 3 中很多文件显示为绿色。

感谢您的帮助。 :)

无法以root权限执行.sh图片

答案1

我猜想在之前的系统上分配给您的用户的 UID(用户 ID)与新系统不同。尝试 terdon 的提示并检查哪个用户拥有第二个磁盘上的文件:

$ ls -l <directory>

如果此假设正确,所有者列将包含一个数字而不是您自己的用户名,或者其他用户名。还请检查组是否正确(通常与用户名相同)。

您可以使用 将所有者更改为新用户chown,无论是针对单个文件还是(下面的示例)针对完整目录树:

$ sudo chown -R <username> <directory>

如果需要,使用chgrp相同的方式更改组,或者将组名添加到chown

$ sudo chown -R <username>:<groupname> <directory>

不使用 chmod为此!如果不解决最初的问题,您将会弄乱权限。

答案2

概括

造成您遇到麻烦的另一个原因可能是数据分区可能使用noexecfstab 中的挂载选项进行挂载。

要评估这是否确实是原因,你应该看看两件小事:

  1. 配置文件/etc/fstab,其中包含(几乎)所有分区以及启动时应挂载的其他内容
  2. 输出mount

/etc/fstab

/etc/fstab是一个表格格式的配置文件,其中包含分区和其他内容(但与此问题无关)、它们的挂载点以及一些定义如何mount调用命令的参数。

例子

UUID=***** /               ext4    errors=remount-ro,noatime,discard 0       1
UUID=***** /boot           ext2    defaults,noatime        0       2
UUID=***** /boot/efi       vfat    noatime,umask=0077      0       1
UUID=***** /home           ext4    defaults,noatime        0       1
  • 我替换了 UUID 以提高可读性。
  • 除了 UUID,一行还可以以 /dev/ 节点名开头;例如/dev/sda1

查看包含 TeamSpeak3 文件夹所在挂载点的行。例如,如果您将 teamspeak 放在 /home/evgenie/ 上,则我的示例 fstab 中的最后一行就是您要查找的行。
在第四列中,您可以找到挂载参数(在我的情况下为 defaults,noatime)。如果显示为“defaults,noatime,noexec”,您将禁止在此分区/挂载点上执行所有操作。

mount 命令

现在让我们看一下 mount 命令的输出。这是我的示例,我过滤掉了与此示例无关的所有内容:

$ mount | grep /home
/dev/sdc1 on /home type ext4 (rw,noatime,data=ordered)

这基本上与中的相同/etc/fstab,但可能设置了一些额外的参数 - 例如“data=ordered”。

如果您noexec在那里发现...

.../etc/fstab以 root 身份在编辑器中打开您的(例如sudo nano /etc/fstab)并将其删除。
但它有一些安全隐患: noexec禁止从该分区执行脚本或二进制文件。这可能与其他人是否以及如何使用此系统有关。

相关内容