在 14.04 和 16.04 之间使用 sudo 安装时出现权限问题

在 14.04 和 16.04 之间使用 sudo 安装时出现权限问题

我在 16.04 中安装软件包时遇到了许多权限问题。我使用 安装它们sudo,但普通用户无法读取软件包中的文件。

因此我进行了一个简单的测试:我sudo在 14.04 中创建了一个目录,并查看了权限:

sudo mkdir test_14_04
ls -ld test_14_04/ 
#returns: drwxr-xr-x 2 root root 4096 Jan  3 05:57 test_14_04/

然后我在 16.04 中做了同样的事情,但我得到的却是:

#returns: drwxr-x--- 2 root root 4096 Jan  3 06:00 test_16_04/

如您所见,默认权限在 14.04 中是 world read,但在 16.04 中不是。所以这可能是sudo-installed 包权限的问题。

我怎样才能解决这个问题?

PS:
我的16.04 Ubuntu版本是:

Distributor ID: Ubuntu
Description:    Ubuntu 16.04.3 LTS
Release:        16.04
Codename:       xenial

我的 14.04 版本是:

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:        14.04
Codename:       trusty

答案1

您面临的问题似乎与默认值有关root umask

在 14.04 版本中创建的权限等于umask哪个0022应该是默认rootumask

# umask
0022

看起来您的默认设置是umask,可以通过在提示符下运行来检查:16.040027root

umask

为了改变默认行为,您需要检查root启动脚本(profilelogin等)并找到此值的设置位置,并将其更改为:

umask 0022

代替:

umask 0027

更多信息可以在这里找到了解 Linux umask 值的用法


例子:

root@ubuntu:~# umask
0022
root@ubuntu:~# mkdir /tmp/z123
root@ubuntu:~# ll -ld /tmp/z123
drwxr-xr-x 2 root root 4096 Jan  3 14:51 /tmp/z123/
root@ubuntu:~# umask 0027
root@ubuntu:~# umask
0027
root@ubuntu:~# mkdir /tmp/a123
root@ubuntu:~# ll -ld /tmp/a123
drwxr-x--- 2 root root 4096 Jan  3 14:54 /tmp/a123/

答案2

关于您的问题:

执行sudo visudo并添加以下几行:

`Defaults umask=0022`
`Defaults umask_override`

umask_override(参见 sudoers 手册页)

如果设置,sudo 将按照 sudoers 的指定设置 umask,不做修改。这使得可以在 sudoers 中指定比用户自己的 umask 更宽松的 umask,并与历史行为相匹配。如果未设置 umask_override,sudo 将把 umask 设置为用户的 umask 和 sudoers 中指定的 umask 的并集。此标志默认关闭。如果设置,即使没有 I/O 日志记录,sudo 也会在伪 pty 中运行命令。在 sudo 下运行的恶意程序可能会分叉一个后台进程,在主程序执行完毕后保留在用户的终端设备上。使用此选项将使这成为不可能。此标志默认关闭。

希望这有帮助,祝你好运!

相关内容