我们有一个新的 CentOS 8 服务器,在尝试通过 SSH 创建文件/目录时遇到了问题。例如,在服务器上,作为我们用于 SSH 的用户,我可以创建一个目录,并且默认权限为 755。但是,如果我在另一台服务器上并使用以下命令,它将创建具有 700 权限的目录
ssh user@newserver mkdir /home/user/testdir1
文件也是如此,在服务器上作为我创建文件的用户,它获得了 644 权限。通过 SSH 创建文件,它获得 600 权限。
ssh user@newserver touch /home/user/testfile1
我缺少什么?
答案1
创建新文件时的默认权限由掩码在有问题的机器上。 umask 是一个八进制从 0777(二进制 0b111111111)中减去的数字以确定用户(最左边三位)、组(中间三位)和其他(最后三位)的默认权限。例如:
$ umask
0002
$ touch first
$ mkdir first-dir
$ ls -l
total 4
-rw-rw-r-- 1 user group 0 Oct 31 09:55 first
drwxrwxr-x 2 user group 4096 Oct 31 09:55 first-dir
0002 等于 0b000000010,并且您可以看到文件和目录的第八位(其他用户可写)已被清除。
您还可以看到,文件没有获得可执行位,而目录却获得了可执行位。这是出于实际原因:目录需要可执行才能列出其内容,而大多数文件不应该是可执行的。
man umask
详情请参阅Bash 启动文件在有问题的机器上查看 umask 的设置位置。