Удомельский форум

Удомельский форум (http://second.udomlya.ru/uf/index.php)
-   Свободное ПО (http://second.udomlya.ru/uf/forumdisplay.php?f=25)
-   -   Системные комманды и утилиты (http://second.udomlya.ru/uf/showthread.php?t=218)

Vulzscht 27.04.2006 21:44

Системные комманды и утилиты
 
Заголовок: Системные комманды и утилиты
Создано grumbler 18.04.2006 :: 23:09:20
Vulzscht wrote:
5) chmod - изменяет права доступа к файлу... 755 - делает выполняемым, а какие есть еще и их значение? в хэлпе просто как-то скромненько описано...

Всего можно перечислить 8 возможных вариантов доступа к файлу/директории:
Восьмиричное число Двоичное число Маска режима доступа Доступ
0 000 --- никакой
1 001 --x только исполнение
2 010 -w- только запись
3 011 -wx запись и исполнение
4 100 r-- только чтение
5 101 r-x чтение и исполнение
6 110 rw- чтение и запись
7 111 rwx чтение, запись и исполнение

Права доступа назначаются для владельца (Owner, User), группы пользователей (Group) и всех остальных (Other).
Соответственно, нам необходимо три чиселка! ;-)

В качестве опций комманды chmod чащего всего подают три _восьмиричных_ чиселка (по чиселку для владельца, группых и прочих). Следовательно, 755 = 111 101 101 = rwxr-xr-x (слева - направо: владелец, группа, остальные).

Однако есть более гибкие (и более понятные) варианты опций комманды chmod!
Для задания прав доступа к файлу можно пользоваться следующим синтаксисом:

Код:

chmod [u][g][o][+][=][-][r][w][x][X] путь_к_файлу
Здесь символам u,g,o соответствуют владелец (user), группа (group) и остальные (other).
Знаки + и - говорят о том следует ли _добавить_ к имеющимся правам доступа следующие за знаком права, или _удалить_ перечисленные за знаком права доступа к файлу. Знак = задаёт (не сохраняя имевшихся) новые права доступа к файлу.
А символы r,w,x,X -- соответственно чтение (read), запись (write), исполнение (execute) и открытие дирректорий (eXecute).

Ещё одна очень полезная опция комманды chmod: -R (Recursive) -- заставляет применить указанные правила ко всем файлам/директориям, лежащим "ниже" данной директории (то есть к поддиректориям и файлам в них).

В качестве примера: добавим возможность для группы и всех остальных возможность читать файлы и открывать директории всех файлов и папок в каталоге /var/ftp

Код:

chmod -R go+rX /var/ftp
Отберём у групы и всех остальных пользователей возможность записи и исполнения файла /etc/rc.d/init.d/iptables

Код:

chmod go-rx /etc/rc.d/init.d/iptables

Каковы особенности двух различных вариантов задания прав доступа к файлу?
При использовании трёх восьмиричных чисел для задания прав доступа мы задаём права "жёстко". То есть что сказали -- то и получили.
А при задании прав доступа посредством символов u,g,o, знаков +/- и аттибутов r,w,x,X мы добавляем/удаляем указанные привилегии, оставляя те, которые уже были заданы файлу/папке.
То есть, если у файла были аттрибуты -rwxrwxrwx, а мы выполнили комманду

Код:

chmod ugo-x путь_к_файлу
то получим -rw-rw-rw-.

Что лучше -- сказать невозможно: для каждого случая -- своё.

Vulzscht 27.04.2006 21:49

Re: Системные комманды и утилиты
« Ответ #1 - написано: 18.04.2006 :: 23:18:24 »
Соотечественницей комманды chmod является комманда chown (сменить владельца).
Она, так же как и chown, воспринимает опцию -R (--recursive) и имеет следующий синтаксис: Код:

Код:

chown -R новый_пользователь:новая_группа путь_к_файлу


Подробнее -- читайте мануал!


Re: Системные комманды и утилиты
« Ответ #2 - написано: 19.04.2006 :: 22:06:25 »
Выполнение комманд с правами суперпользователя

Для данной цели рекоммендуется использовать утилиту sudo.
Она позволяет выполнять какие-либо действия от имени root, не требуя входа в систему в качестве суперпользоватея.
Эта программулька имеет конфиг /etc/sudoers.
В качестве примера, попробуем настроить её для выполнения комманд монтирования дисков.


Код:

# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the sudoers man page for the details on how to write a sudoers file.
#

# Host alias specification
Host_Alias        GRUMBLER_HOST = localhost, grumbler, grumbler.udomlya.local

# User alias specification
User_Alias        GRUMBLER_USERS = grumbler, silencer

# Cmnd alias specification
Cmnd_Alias        MOUNT_CMD = /sbin/mount /mnt/town_ftp, \
                            /sbin/umount /mnt/town_ftp, \
                            /sbin/mount /mnt/town_share, \
                            /sbin/umount /mnt/town_share

# Defaults specification

# Runas alias specification

# User privilege specification
root    ALL=(ALL) ALL

# Uncomment to allow people in group wheel to run all commands
# %wheel          ALL=(ALL)        ALL

# Same thing without a password
# %wheel          ALL=(ALL)        NOPASSWD: ALL

# Samples
# %users  ALL=/sbin/mount /cdrom,/sbin/umount /cdrom
# %users  localhost=/sbin/shutdown -h now

# Mount comand privileges
GRUMBLER_USERS  GRUMBLER_HOST = MOUNT_CMD

Теперь два пользователя (grumbler и silencer) могут выполнять четыре указанные комманды от имени админа, используя при этом свой пароль.
Конфиг sudo не так тривиален, как может показаться на первый взгляд, поэтому рекоммендую обратиться к системе помощи для более детального ознакомления.

Код:

man sudo
man sudoers



Текущее время: 20:34. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot