Совместное использование файлов / каталогов с помощью setgid

От man locate:

Для поиска файла с именем точно ИМЯ (не *ИМЯ*),
использовать locate -b '\NAME'

locate -b '\java'
  • -b — Сопоставить только базовое имя с указанными шаблонами.
1
29.02.2016, 06:35
1 ответ

Если вы хотите разделить контроль над папкой между

  • пользователем a
  • пользователем b

Создайте пользователей

 % 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: 
....

и

% sudo adduser b
Adding user `b' ...

Сделайте каталог

% mkdir our_shared_directory

Создайте новую группу и добавьте в нее пользователей

 % 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
....

Сделайте каталог принадлежащим группе cool_kids и setgid bit

sudo chmod g+s our_shared_directory
sudo chown -v ubuntu:cool_kids our_shared_directory

проверьте нашу работу

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"    

Посмотрите, что произойдет когда файл создан пользователем a в обычном каталоге

% touch file_made_by_user_a
% ls -al
-rw-rw-r-- 1 a      a           0 Feb 29 20:57 file_made_by_a

теперь пользователь a создает файл в нашем_общем_каталоге

% cd our_shared_directory/
% ls -al
-rw-rw-r-- 1 a      cool_kids  0 Feb 29 20:59 another_by_a
                     ^^^^^^ note the group 

Важно

  1. Группа cool_kids автоматически применяется к новому файлу

Теперь переключимся на пользователя b

% su b
Password: ...

b теперь может редактировать файл, созданный a - потому что файл another_by_a имеет режим по умолчанию -rw-rw-r-- , b не мог нормально редактировать его.
Но с

b% vim another_by_a
^ note this means we are user "b"   now  
[make some edit and save]

b смог изменить файл **поскольку b принадлежал к группе cool_kids и поскольку cool_kids был гарантированно применен к новому файлу с помощью 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 
3
27.01.2020, 23:48

Теги

Похожие вопросы