我在 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
应该是默认root
值umask
# umask
0022
看起来您的默认设置是umask
,可以通过在提示符下运行来检查:16.04
0027
root
umask
为了改变默认行为,您需要检查root
启动脚本(profile
、login
等)并找到此值的设置位置,并将其更改为:
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 下运行的恶意程序可能会分叉一个后台进程,在主程序执行完毕后保留在用户的终端设备上。使用此选项将使这成为不可能。此标志默认关闭。
希望这有帮助,祝你好运!