Se você quiser compartilhar o controle de uma pasta entre
- usuário
a
- usuário
b
Crie os usuários
% sudo adduser a
Adding user 'a' ...
Adding new group 'a' (1002) ...
Adding new user 'a' (1001) with group 'a' ...
Creating home directory '/home/a' ...
Copying files from '/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
....
e
% sudo adduser b
Adding user 'b' ...
Crie um diretório
% mkdir our_shared_directory
Crie um novo grupo e adicione os usuários a ele
% sudo addgroup cool_kids
Adding group 'cool_kids' (GID 1001) ...
Done.
% sudo adduser a cool_kids
Adding user 'a' to group 'cool_kids' ...
Adding user a to group cool_kids
Done.
% sudo adduser b cool_kids
....
Faça o diretório pertencer ao grupo cool_kids
e setgid
bit
sudo chmod g+s our_shared_directory
sudo chown -v ubuntu:cool_kids our_shared_directory
verifique nosso trabalho
ls -al
drwxrwsr-x 2 ubuntu cool_kids 40 Feb 29 20:37 our_shared_directory/
^ setgid bit is set and group is now "sticky"
Veja o que acontece quando um arquivo é feito pelo usuário a
em um diretório normal
% touch file_made_by_user_a
% ls -al
-rw-rw-r-- 1 a a 0 Feb 29 20:57 file_made_by_a
agora o usuário a
cria um arquivo em our_shared_directory
% cd our_shared_directory/
% ls -al
-rw-rw-r-- 1 a cool_kids 0 Feb 29 20:59 another_by_a
^^^^^^ note the group
Importante
- O grupo cool_kids automaticamente é aplicado ao novo arquivo
Agora mude para o usuário b
% su b
Password: ...
b agora pode editar o arquivo criado por - porque o arquivo another_by_a
tem o modo padrão de -rw-rw-r--
, b
normalmente não pode editá-lo.
Mas com
b% vim another_by_a
^ note this means we are user "b" now
[make some edit and save]
b
conseguiu modificar o arquivo ** porque b pertencia ao grupo cool_kids
e porque cool_kids
tinha a garantia de ser aplicada ao novo arquivo pelo setgid
bit
ls -al
-rw-rw-r-- 1 a cool_kids 7 Feb 29 21:03 another_by_a
^ the file is 7bytes - slightly bigger because of changes made by b