我输入了命令chfn -o umask=002 souser
并期望souser
用户会在获得许可的情况下创建文件夹775
,但他没有。如何让某个用户创建的每个新文件夹都对该组具有写权限?这是我的测试:
s@lokal:~$ sudo adduser souser
Adding user `souser' ...
Adding new group `souser' (1002) ...
Adding new user `souser' (1002) with group `souser' ...
The home directory `/home/souser' already exists. Not copying from `/etc/skel'.
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for souser
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
s@lokal:~$ sudo usermod -aG sudo souser
s@lokal:~$ su souser
Password:
souser@lokal:/home/s$ cd
souser@lokal:~$ mkdir test
souser@lokal:~$ ls -ld test/
drwxr-xr-x 2 souser souser 4096 Sep 3 14:23 test/
souser@lokal:~$ chfn -o umask=002
chfn: Permission denied.
souser@lokal:~$ sudo chfn -o umask=002 souser
souser@lokal:~$ mkdir test2
souser@lokal:~$ ls -ld test2
drwxr-xr-x 2 souser souser 4096 Sep 3 14:24 test2
souser@lokal:~$ sudo cat /etc/passwd |grep souser
souser:x:1002:1002:,,,,umask=002:/home/souser:/bin/bash
souser@lokal:~$
更新#1
重新登录后还是一样:
souser@lokal:~$ mkdir test3
souser@lokal:~$ ls -ld test3
drwxr-xr-x 2 souser souser 4096 Sep 3 14:42 test3
souser@lokal:~$
更新#2
这也没有帮助:
s@lokal:~/Dropbox$ su - souser
Password:
souser@lokal:~$ mkdir test4
souser@lokal:~$ ls -ld test4
drwxr-xr-x 2 souser souser 4096 Sep 3 14:51 test4
souser@lokal:~$
笔记:该发行版是 Debian 9。
答案1
Linux 和 Unix 发行版之间设置 umask 的可能性存在很大差异。
您尝试执行此操作的方式(在 中的“gecos”字段中/etc/passwd
)取决于pam_umask
安装和配置。 AFAIK 至少在 Debian 上默认是这种情况,并且可能是基于 Debian 的发行版,如 Ubuntu、Mint 等......
如果没有,您可以在 shell 的配置文件或用户主目录中的 rc 文件中pam_umask
放置一行(例如:或)。或者在系统范围的配置文件中类似这样的内容,例如(对于, and )或(仅对于 bash):umask 002
.bashrc
.profile
/etc/profile
sh
bash
/etc/bashrc
if [ "$USER" = "souser" ] ; then
umask 0002
else
umask 0022
fi
您可以使用一个简单的命令来检查它是否成功,umask
该命令将输出当前有效的 umask。
请注意,实际设置权限仍然由应用程序决定。如果您使用某些其他程序或命令,其代码中硬连线永远不会对其创建的文件夹设置组写入权限,则您必须更改该程序的代码或随后手动设置权限。这正是 UNIX/Linux 应该工作的方式。