Digitei o comando chfn -o umask=002 souser
e esperava que souser
o usuário criasse pastas com 775
permissão, mas ele não o fez. Como fazer para que cada nova pasta criada por um determinado usuário tenha permissão de gravação para o grupo? Aqui está o meu teste:
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:~$
Atualização nº 1
Após o relogin é o mesmo:
souser@lokal:~$ mkdir test3
souser@lokal:~$ ls -ld test3
drwxr-xr-x 2 souser souser 4096 Sep 3 14:42 test3
souser@lokal:~$
Atualização nº 2
Isso também não ajudou:
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:~$
NOTA: A distro é Debian 9.
As possibilidades de definir umask diferem fortemente entre as distribuições Linux e Unix.
A maneira como você está tentando fazer isso (no campo "gecos" em
/etc/passwd
) depende depam_umask
estar instalado e configurado. AFAIK este é pelo menos o caso por padrão no Debian e provavelmente nas distros baseadas no Debian como Ubuntu, Mint, etc ...Sem
pam_umask
, você pode colocar uma linhaumask 002
no perfil do shell ou no arquivo rc no diretório inicial do usuário (por exemplo:.bashrc
ou.profile
). Ou algo assim no arquivo de configuração de todo o sistema, por exemplo/etc/profile
(parash
ebash
) ou/etc/bashrc
(somente para bash):Você pode verificar se foi bem-sucedido de qualquer maneira com apenas um
umask
comando simples que produzirá a umask efetiva atual.Observe que ainda depende do aplicativo definir as permissões. Se você usar algum outro programa ou comando que, em seu código, nunca defina permissões de gravação de grupo na pasta que ele cria, você terá que alterar o código desse programa ou definir as permissões manualmente depois. É assim que o UNIX/Linux deve funcionar.