Tomsk Sysadmins Forum
Unix => Администрирование => Topic started by: Konstantine on March 02, 2009, 17:41:35
-
Задача следущая:
Имеется каталог, допустим "БАЗА2005" как сделать чтобы все файлы и каталоги создаваемые разными пользователями в данном каталоге "БАЗА2005" создавались от пользователя и группы этого каталога.
Либо:
Как поменять umask для всех пользователей системы сразу... дабы изменить дефолтный 0022 на 0002 для всех даже для пользователей из LDAP`а
-
Ну чё с umask я разобрался, просто засунул в каталог настроек LDAP`a пользователей в файл .profile строку umask 0002, но такое решение мне не совсем нравиться.... Хочу чтобы тупо в каталоге БАЗА2005 создаваемые файлы и каталоги наследовали группу и пользователя директории БАЗА2005.
Мужики ну помогите а ?
-
Можно сделать так:
# mkdir test
# chgrp user test/
# chmod g+s test/
# touch test/file
# ls -l test/file
-rw-r--r-- 1 root user 0 Мар 4 20:28 test/file
-
Можно сделать так:
# mkdir test
# chgrp user test/
# chmod g+s test/
# touch test/file
# ls -l test/file
-rw-r--r-- 1 root user 0 Мар 4 20:28 test/file
Странно ... делаю на фре
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']ivc_router konstantine# mkdir test1
ivc_router konstantine# ls -l
total 580
-rw-r--r-- 1 root wheel 3612 Jan 16 12:20 -e
-rw-r--r-- 1 root wheel 3612 Jan 16 12:20 -n
-rw-r--r-- 1 konstantine wheel 751 Oct 28 18:03 .cshrc
drwx------ 2 konstantine wheel 512 Feb 25 22:13 .elinks
-r--r--r-- 1 konstantine wheel 8434 Nov 28 15:01 .fishsrv.pl
-rw-r--r-- 1 konstantine wheel 248 Oct 28 18:03 .login
-rw-r--r-- 1 konstantine wheel 158 Oct 28 18:03 .login_conf
-rw------- 1 konstantine wheel 373 Oct 28 18:03 .mail_aliases
-rw-r--r-- 1 konstantine wheel 331 Oct 28 18:03 .mailrc
drwxr-xr-x 3 konstantine wheel 512 Jan 28 23:38 .mc
-rw-r--r-- 1 konstantine wheel 766 Oct 28 18:03 .profile
-rw------- 1 konstantine wheel 276 Oct 28 18:03 .rhosts
-rw-r--r-- 1 konstantine wheel 975 Oct 28 18:03 .shrc
drwx------ 2 konstantine wheel 512 Oct 31 09:51 .ssh
-rw-r--r-- 1 root wheel 0 Mar 1 19:17 192.168.222.34
-rw-r--r-- 1 root wheel 25 Jan 21 09:37 217
-rw-r--r-- 1 konstantine wheel 26 Jan 28 23:38 28.01.2009
-rw-r--r-- 1 root wheel 142 Dec 8 23:39 Lucky.vpn
-rw-r--r-- 1 root wheel 59 Dec 8 23:52 Serega.vpn
-rw-r--r-- 1 root wheel 57 Dec 15 16:47 Zekina.vpn
-rw-r--r-- 1 root wheel 0 Nov 12 22:33 a.out
-r--r--r-- 1 root squid 232 Nov 13 20:52 admins
drwxr-xr-x 2 konstantine wheel 512 Jan 13 16:56 backup
-rw-r--r-- 1 root squid 23099 Nov 5 15:58 banners
drwxr-xr-x 3 konstantine wheel 512 Feb 7 12:53 doc
-rw-r--r-- 1 root wheel 26 Jan 20 18:29 filbI
-rwxr-xr-x 1 root wheel 37 Feb 2 15:24 ftp_bag
drwxr-xr-x 2 root wheel 512 Dec 19 13:02 lightsquid
-rw-r--r-- 1 root wheel 83 Feb 8 12:44 links
drwxr-xr-x 5 konstantine wheel 512 Nov 28 15:01 namedb
drwxr-xr-x 3 root wheel 512 Nov 28 15:02 namedb_backup
-rw-r--r-- 1 root wheel 0 Feb 28 22:00 qwe
-r--r--r-- 1 root wheel 166578 Nov 26 19:55 squid.conf.cache
-r--r--r-- 1 root wheel 159895 Nov 14 16:59 squid.conf.default
-r--r--r-- 1 root squid 160838 Nov 24 09:57 squid.conf.transporeit
-rw-r--r-- 1 konstantine wheel 272 Nov 7 16:17 table.masks
-rwxr-xr-x 1 root wheel 61 Mar 5 14:58 test
drwxr-xr-x 2 root wheel 512 Mar 5 14:58 test1
ivc_router konstantine# chgrp nobody test1/
ivc_router konstantine# touch test1/qwe
ivc_router konstantine# ls -l test1/
total 0
-rw-r--r-- 1 root nobody 0 Mar 5 15:03 qwe
Потом делал на Suse 11-ой
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']
admin@admins:~> mkdir test
admin@admins:~> ls -l
итого 26052
drwxr-xr-x 4 admin users 4096 Фев 3 08:36 !admin-1
drwxr-xr-x 5 admin users 4096 Фев 13 12:08 bin
-rw------- 1 admin users 33071104 Мар 3 00:04 core
drwx------ 3 admin users 4096 Мар 5 12:41 Desktop
drwxr-xr-x 4 admin users 4096 Мар 3 11:32 Documents
drwxr-xr-x 4 admin users 4096 Мар 2 22:23 download
-rw-rw-r-- 1 admin users 1380 Фев 7 15:44 patch3.txt
-rw-rw-r-- 1 admin users 5 Фев 7 15:44 patch_allow.txt
drwxr-xr-x 2 admin users 4096 Фев 3 08:23 public_html
drwxr-xr-x 2 admin users 4096 Мар 5 15:00 test
-rwxrwxr-x 1 admin users 37376 Фев 7 12:33 users.usr
lrwxrwxrwx 1 admin users 31 Фев 7 13:01 wine_c -> /home/admin/.wine/dosdevices/c:
admin@admins:~> chgrp nobody test
chgrp: изменение группы для `test': Операция не позволяется
admin@admins:~> su
Пароль:
admins:/home/admin # chgrp nobody test
admins:/home/admin # exit
admin@admins:~> ls -l
итого 26052
drwxr-xr-x 4 admin users 4096 Фев 3 08:36 !admin-1
drwxr-xr-x 5 admin users 4096 Фев 13 12:08 bin
-rw------- 1 admin users 33071104 Мар 3 00:04 core
drwx------ 3 admin users 4096 Мар 5 12:41 Desktop
drwxr-xr-x 4 admin users 4096 Мар 3 11:32 Documents
drwxr-xr-x 4 admin users 4096 Мар 2 22:23 download
-rw-rw-r-- 1 admin users 1380 Фев 7 15:44 patch3.txt
-rw-rw-r-- 1 admin users 5 Фев 7 15:44 patch_allow.txt
drwxr-xr-x 2 admin users 4096 Фев 3 08:23 public_html
drwxr-xr-x 2 admin nobody 4096 Мар 5 15:00 test
-rwxrwxr-x 1 admin users 37376 Фев 7 12:33 users.usr
lrwxrwxrwx 1 admin users 31 Фев 7 13:01 wine_c -> /home/admin/.wine/dosdevices/c:
admin@admins:~> touch test/qwe
admin@admins:~> ls -l test/
итого 0
-rw-r--r-- 1 admin users 0 Мар 5 15:03 qwe
admin@admins:~>
admin@admins:~>
admin@admins:~>
admin@admins:~>
admin@admins:~> su
Пароль:
admins:/home/admin # touch test/asd
admins:/home/admin # ls -l test/
итого 0
-rw-r--r-- 1 root root 0 Мар 5 15:05 asd
-rw-r--r-- 1 admin users 0 Мар 5 15:03 qwe
Да и вообще пользователи мои и так в одной группе users в LDAP`e создаются... мне бы лучше было бы если файлики 1Ски создаваемые через терминал юзверями в этом каталоге создавались с наследованием группы и пользователя этого каталога... да кажись никак если токо тупо в крон вешать на каждую секунду chown admin:users БАЗА2005.
-
зачем cron?
Есть sticky-бит, им и пользуйтесь.
То есть, если test - это каталог, то
# chmod u+s,g+s test
выставит это бит на каталог, после чего все файлы и каталоги в нем должны создаваться с пользователем и группой, унаследованными от родительского (sticky-bit также наследуется вложенными каталогами).
RTFM не забываем
-
Странно ... делаю на фре
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']ivc_router konstantine# mkdir test1
ivc_router konstantine# ls -l
total 580
-rw-r--r-- 1 root wheel 3612 Jan 16 12:20 -e
-rw-r--r-- 1 root wheel 3612 Jan 16 12:20 -n
-rw-r--r-- 1 konstantine wheel 751 Oct 28 18:03 .cshrc
drwx------ 2 konstantine wheel 512 Feb 25 22:13 .elinks
-r--r--r-- 1 konstantine wheel 8434 Nov 28 15:01 .fishsrv.pl
-rw-r--r-- 1 konstantine wheel 248 Oct 28 18:03 .login
-rw-r--r-- 1 konstantine wheel 158 Oct 28 18:03 .login_conf
-rw------- 1 konstantine wheel 373 Oct 28 18:03 .mail_aliases
-rw-r--r-- 1 konstantine wheel 331 Oct 28 18:03 .mailrc
drwxr-xr-x 3 konstantine wheel 512 Jan 28 23:38 .mc
-rw-r--r-- 1 konstantine wheel 766 Oct 28 18:03 .profile
-rw------- 1 konstantine wheel 276 Oct 28 18:03 .rhosts
-rw-r--r-- 1 konstantine wheel 975 Oct 28 18:03 .shrc
drwx------ 2 konstantine wheel 512 Oct 31 09:51 .ssh
-rw-r--r-- 1 root wheel 0 Mar 1 19:17 192.168.222.34
-rw-r--r-- 1 root wheel 25 Jan 21 09:37 217
-rw-r--r-- 1 konstantine wheel 26 Jan 28 23:38 28.01.2009
-rw-r--r-- 1 root wheel 142 Dec 8 23:39 Lucky.vpn
-rw-r--r-- 1 root wheel 59 Dec 8 23:52 Serega.vpn
-rw-r--r-- 1 root wheel 57 Dec 15 16:47 Zekina.vpn
-rw-r--r-- 1 root wheel 0 Nov 12 22:33 a.out
-r--r--r-- 1 root squid 232 Nov 13 20:52 admins
drwxr-xr-x 2 konstantine wheel 512 Jan 13 16:56 backup
-rw-r--r-- 1 root squid 23099 Nov 5 15:58 banners
drwxr-xr-x 3 konstantine wheel 512 Feb 7 12:53 doc
-rw-r--r-- 1 root wheel 26 Jan 20 18:29 filbI
-rwxr-xr-x 1 root wheel 37 Feb 2 15:24 ftp_bag
drwxr-xr-x 2 root wheel 512 Dec 19 13:02 lightsquid
-rw-r--r-- 1 root wheel 83 Feb 8 12:44 links
drwxr-xr-x 5 konstantine wheel 512 Nov 28 15:01 namedb
drwxr-xr-x 3 root wheel 512 Nov 28 15:02 namedb_backup
-rw-r--r-- 1 root wheel 0 Feb 28 22:00 qwe
-r--r--r-- 1 root wheel 166578 Nov 26 19:55 squid.conf.cache
-r--r--r-- 1 root wheel 159895 Nov 14 16:59 squid.conf.default
-r--r--r-- 1 root squid 160838 Nov 24 09:57 squid.conf.transporeit
-rw-r--r-- 1 konstantine wheel 272 Nov 7 16:17 table.masks
-rwxr-xr-x 1 root wheel 61 Mar 5 14:58 test
drwxr-xr-x 2 root wheel 512 Mar 5 14:58 test1
ivc_router konstantine# chgrp nobody test1/
ivc_router konstantine# touch test1/qwe
ivc_router konstantine# ls -l test1/
total 0
-rw-r--r-- 1 root nobody 0 Mar 5 15:03 qwe
Потом делал на Suse 11-ой
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']
admin@admins:~> mkdir test
admin@admins:~> ls -l
итого 26052
drwxr-xr-x 4 admin users 4096 Фев 3 08:36 !admin-1
drwxr-xr-x 5 admin users 4096 Фев 13 12:08 bin
-rw------- 1 admin users 33071104 Мар 3 00:04 core
drwx------ 3 admin users 4096 Мар 5 12:41 Desktop
drwxr-xr-x 4 admin users 4096 Мар 3 11:32 Documents
drwxr-xr-x 4 admin users 4096 Мар 2 22:23 download
-rw-rw-r-- 1 admin users 1380 Фев 7 15:44 patch3.txt
-rw-rw-r-- 1 admin users 5 Фев 7 15:44 patch_allow.txt
drwxr-xr-x 2 admin users 4096 Фев 3 08:23 public_html
drwxr-xr-x 2 admin users 4096 Мар 5 15:00 test
-rwxrwxr-x 1 admin users 37376 Фев 7 12:33 users.usr
lrwxrwxrwx 1 admin users 31 Фев 7 13:01 wine_c -> /home/admin/.wine/dosdevices/c:
admin@admins:~> chgrp nobody test
chgrp: изменение группы для `test': Операция не позволяется
admin@admins:~> su
Пароль:
admins:/home/admin # chgrp nobody test
admins:/home/admin # exit
admin@admins:~> ls -l
итого 26052
drwxr-xr-x 4 admin users 4096 Фев 3 08:36 !admin-1
drwxr-xr-x 5 admin users 4096 Фев 13 12:08 bin
-rw------- 1 admin users 33071104 Мар 3 00:04 core
drwx------ 3 admin users 4096 Мар 5 12:41 Desktop
drwxr-xr-x 4 admin users 4096 Мар 3 11:32 Documents
drwxr-xr-x 4 admin users 4096 Мар 2 22:23 download
-rw-rw-r-- 1 admin users 1380 Фев 7 15:44 patch3.txt
-rw-rw-r-- 1 admin users 5 Фев 7 15:44 patch_allow.txt
drwxr-xr-x 2 admin users 4096 Фев 3 08:23 public_html
drwxr-xr-x 2 admin nobody 4096 Мар 5 15:00 test
-rwxrwxr-x 1 admin users 37376 Фев 7 12:33 users.usr
lrwxrwxrwx 1 admin users 31 Фев 7 13:01 wine_c -> /home/admin/.wine/dosdevices/c:
admin@admins:~> touch test/qwe
admin@admins:~> ls -l test/
итого 0
-rw-r--r-- 1 admin users 0 Мар 5 15:03 qwe
admin@admins:~>
admin@admins:~>
admin@admins:~>
admin@admins:~>
admin@admins:~> su
Пароль:
admins:/home/admin # touch test/asd
admins:/home/admin # ls -l test/
итого 0
-rw-r--r-- 1 root root 0 Мар 5 15:05 asd
-rw-r--r-- 1 admin users 0 Мар 5 15:03 qwe
Да и вообще пользователи мои и так в одной группе users в LDAP`e создаются... мне бы лучше было бы если файлики 1Ски создаваемые через терминал юзверями в этом каталоге создавались с наследованием группы и пользователя этого каталога... да кажись никак если токо тупо в крон вешать на каждую секунду chown admin:users БАЗА2005.
По-моему, В BSD системах владелец родительского каталога НЕ наследуется в данном случае.
-
зачем cron?
Есть sticky-бит, им и пользуйтесь.
То есть, если test - это каталог, то
# chmod u+s,g+s test
выставит это бит на каталог, после чего все файлы и каталоги в нем должны создаваться с пользователем и группой, унаследованными от родительского (sticky-bit также наследуется вложенными каталогами).
RTFM не забываем
Ой вот вам спасибо дядь Серёж, ну я приблизительно помню что существует что подобное, токо как говориться плохо когда не знал, да ещё и забыл. Поэтому не мог в гугле нарыть, запросы не правильно ставил.
Ещё раз благодарю.
-
Странно что то при chmod u+s,g+s БАЗА2005
В каталоге всеравно создаются файлы но пользователь к которому они принадлежат не меняется т.е.
admin@server2007:/home/1c/d/1C_config> ls -l BAZA/
итого 0
-rw-rw-r-- 1 admin users 0 Мар 17 10:56 111111
-rw-rw-r-- 1 omis_ggm users 0 Мар 17 11:30 222222222
-rw-rw-r-- 1 ivc_sna users 0 Мар 17 11:31 333333
а хочется чтобы всЁ принадлежало admin:users
-
Вот что нашёл про "sticky bit" на директориях. (http://dic.academic.ru/dic.nsf/enwiki/668421)
On a directory, the sticky permission prevents users from renaming, moving or deleting contained files owned by users other than themselves, even if they have write permission to the directory.
И ничего про то что файлы создаваемые в директории наследуют владельца директории.
Про наследование группы (http://lib.misto.kiev.ua/SECURITY/securityfaq.txt#35)
The Setgid Bit on Directories
In SunOS 4.0, the setgid bit was also given a new meaning.
Two rules can be used for assigning group ownership to a file in
SunOS:
1. The System V mechanism, which says that a user's pri-
mary group id (the one listed in the password file) is
assigned to any file he creates.
2. The Berkeley mechanism, which says that the group id of
a file is set to the group id of the directory in which
it is created.
If the setgid bit is set on a directory, the Berkeley
mechanism is enabled. Otherwise, the System V mechanism is
enabled. Normally, the Berkeley mechanism is used; this mechan-
ism must be used if creating directories for use by more than one
member of a group
Но это в sunos...
-
Вот что нашёл про "sticky bit" на директориях. (http://dic.academic.ru/dic.nsf/enwiki/668421)
И ничего про то что файлы создаваемые в директории наследуют владельца директории.
Про наследование группы (http://lib.misto.kiev.ua/SECURITY/securityfaq.txt#35)
Но это в sunos...
Я в книжке "UNIX руководство системного администратора" Третье издание нашёл следующее:
Дело в том, что существуют два специальных бита, устанавливаемых в маске прав доступа к файлу: SUID (Set User ID - бит смены идентификатора пользователя) и SGID (Set Group ID - бит смены идентификатора группы). Когда пользователь или процесс запускает исполняемый файл, у которого установлен один из этих битов, файлу временно назначаются права его владельца или группы (в зависимости от того, какой именно бит задан). Таким образом пользователь может даже запускать файлы от имени суперпользователя.
Стр. 56.
Как я понял из вышесказанного если я создаю сценарий и просто файл с правами:
-rwsr-sr-x 1 root wheel - 57 7 июн 17:41 echo_v_root_file* #как видите SUID и SGID установлены.
-rw------- 1 root wheel - 2 7 июн 17:41 text2_dla_roota
И в файле пишу следующий текст:
#!/bin/sh
echo "777" >> /home/konstantine/text2_dla_roota
то при запуске под обычным пользователем сценарй должен срабатывать с правами Рута и благодаря этому записывать в текстовый файл данные "777", но у меня получается следующее :
$ ./echo_v_root_file
./echo_v_root_file: cannot create /home/konstantine/text2_dla_roota: Permission denied
$ ./echo_v_root_file
./echo_v_root_file: cannot create /home/konstantine/text2_dla_roota: Permission denied
что я не так понял или не так делаю ?
-
Как я понял из вышесказанного если я создаю сценарий и просто файл с правами:
-rwsr-sr-x 1 root wheel - 57 7 июн 17:41 echo_v_root_file* #как видите SUID и SGID установлены.
-rw------- 1 root wheel - 2 7 июн 17:41 text2_dla_roota
И в файле пишу следующий текст:
#!/bin/sh
echo "777" >> /home/konstantine/text2_dla_roota
SUID/SGID не действуют на сценариях. Это дырка в безопасности.
-
Сорри,прочел невнимательно,думал что у тебя файл-сервера для 1С на samba.
Настоящее решение задачи ниже.Удалять не буду - может кому пригодится))))
Задача следущая:
Имеется каталог, допустим "БАЗА2005" как сделать чтобы все файлы и каталоги создаваемые разными пользователями в данном каталоге "БАЗА2005" создавались от пользователя и группы этого каталога.
Либо:
Как поменять umask для всех пользователей системы сразу... дабы изменить дефолтный 0022 на 0002 для всех даже для пользователей из LDAP`а
1.Приведу пример - подгонишь под себя.
У нас есть каталог baza2005 с валадельцем и группой user:nogroup (всмысле каталог - корень шары).
в описании шары надо добавить:
[baza2005]
...bla-blabla...(other parametrs)
inherit owner = yes
(Это параметр меняет владельца создаваемого файла на владельца parent directory)
Действует ли это на директорию не знаю - возможности проверить нет.Если не хочешь чтобы группа (она такая по дефолту) была nogroup смотри параметр force group.
Подобным образом,если еще выстявить sticky bit,можно сделать,чтоб юзеры могли складывать файлы в публичную шару,читать и модифицировать,но удалять мог только определенный юзер. Если надо - скину пример конфига.
2.umask меняется на создаваемые файлы и директории с помощью параметров create mode,force create mode,directory mode,force directory mode.
********************
Теперь по делу.chmod с битом setuid на директорию не стработает (не будут создаваться файлы от владельца директории).Работает только setgid для группы.
Зачем вам это надо?Чтобы пользователи не могли удалять файлы?
Возможно поможет acl и setfacl.Ну и вместо профайла пользователя это удобнее будет использовать.
-
Понятно спасиб по самбе будем знать правда у нас всё терминально.
А проблему решили тупо при логине юзеры в систему и старте Хсов у него на системе запускается скриптик c командой umask 0002