Run a program as another user
About sudo
Программа sudo позволяет запускать программу с правами другого пользователя. Чтобы это работало, прежде системный администратор должен настроить файл /etc/sudoers.Это может быть полезно при поручении административных задач другому пользователю, не говоря root пароль.
Пример ниже показывает использование sudo.Пользователь paulполучает право использовать useraddc root правами. Это позволяет paul создавать новых пользователей на системе, не становясь rootпользователем и не зная root пароль.
paul@laika:~$ useradd -m inge
useradd: unable to lock password file
paul@laika:~$ sudo useradd -m inge
[sudo] password for paul:
paul@laika:~$
Setuid on sudo
Исполняемый файл sudo имеет битную настройку setuid , так что любой пользователь может его запустить с помощью действительного id root пользователя.
paul@laika:~$ ls -l `which sudo`
-rwsr-xr-x 2 root root 107872 2008-05-15 02:41 /usr/bin/sudo
paul@laika:~$
Visudo
Посмотрите мануал по visudoпрежде чем играться с файлом /etc/sudoers.
Sudo su
На некоторых линукс системах таких как Ubuntu или Kubuntu, rootпользователь не имеет пароля.
Это значит, что зайти за rootневозможно. Чтобы исполнять задачи как root, первому пользователю даются все sudo правачерез /etc/sudoers. По факту, все пользователи, состоящие в админ группе, могут использовать sudo, чтобы запускать все команды как root.
root@laika:~# grep admin /etc/sudoers
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
В итоги пользователь может написать sudo su –и стать root без ввода root пароля. Sudo требует ввести ваш собственный пароль. Таким образом строка ввода пароля внизу для sudo, а не su.
|
|
paul@laika:~$ sudo su -
Password:
root@laika:~#
Shell environment
Неплохо иметь все эти предустановленные и пользовательские имена и переменные, но откуда они все берутся? Shell использует набор загрузочных файлов, которые проверяются
(и исполняются), где бы shell не был задействован. Следующее – обзор загрузочных скриптов.
/etc/profile
Как bash, так и kshshell проверит существование /etc/profileи выполняет, если он существует.
Читая этот скрипт, вы можете заметить (по крайней мере на Debian Lenny и Red Hat Enterprise Linux 5) что он создаёт переменную среды PATH. Срипт также может изменять переменную PS1, устанавливать HOSTNAME и выполнять ещё больше скриптов, таких как /etc/inputre.
Вы можете использовать этот скрипт, чтобы задавать имена и переменные для каждого пользователя.
~/.bash_profile
Если этот файл существует в домашней директории пользователя, bash его исполнит. На Debian Linux по умолчанию его нет.
RHEL5 использует краткий ~/.bash_profile, где проверят существование ~/.bashrcи исполняет его. Он также добавляет $HOME/bin в переменную $PATH.
[serena@rhel53 ~]$ cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
|
|
PATH=$PATH:$HOME/bin
export PATH
Bash_login
Если .bash_profileне существует, bashбудет искать ~/.bash_loginи исполнит его.
Ни в Debian ни в Red Hat этого файла по умолчанию нет.
~/.profile
Когда нет ни ~/.bash_profile,ни ~/.bash_loginbash будет проверять существование ~/.profile и исполнит его.В Red Hat этого файла по умолчанию нет.
На Debian этот скрипт может исполнить ~/.bashrcи также добавить $HOME/bin переменной $PATH.
serena@deb503:~$ tail -12 .profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
Fi
~/.bashrc
Как было видно в прошлых пунктах, скрипт ~/.bashrcможет быть исполнен другими скриптами. Давайте посмотрим, что же он делает по умолчанию.
Red Hat использует очень простой ~/.bashrc ,проверяет наличие /etc/bashrcи исполняет его. Он также оставляет место для пользовательских имён и функций.
[serena@rhel53 ~]$ more .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific aliases and functions
На Debian этот скрипт немного длиннее и настраивает $PS1, некоторые переменные истории и количество активных и неактивных имён.
serena@deb503:~$ ls -l .bashrc
-rw-r--r-- 1 serena serena 3116 2008-05-12 21:02 .bashrc
~/.bash_logout
При выходе из bash, он может выполнить ~/.bash_logout.Debian и Red Hat используют эту возможность, чтобы очистить экран.
|
|
serena@deb503:~$ cat .bash_logout
# ~/.bash_logout: executed by bash(1) when login shell exits.
# when leaving the console clear the screen to increase privacy
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
[serena@rhel53 ~]$ cat .bash_logout
# ~/.bash_logout
/usr/bin/clear
Debian overview
Ниже представлена таблица, показывающая, когда Debian выполняет каждый из этих загрузочных bash скриптов.
Таблица 23.1 Debian User Environment
скрипт | su | Su - | ssh | gdm |
~./bashrc | No | yes | Yes | Yes |
~/.profile | No | Yes | Yes | Yes |
/etc/profile | No | Yes | Yes | Yes |
/etc/bash.bashrc | yes | No | No | Yes |
RHEL5 overview
Ниже представлена таблица, показывающая, когда Red Hat enterprise Linux 5 выполняет каждый из этих загрузочных bash скриптов.
Таблица 23.2 Red Hat User Environment
скрипт | su | Su - | ssh | gdm |
~./bashrc | Yes | yes | Yes | Yes |
~/.bash_profile | No | Yes | Yes | Yes |
/etc/profile | No | Yes | Yes | Yes |
/etc/bashrc | yes | Yes | Yes | Yes |
Глава 24. Groups
About groups
Пользователи могут состоять в группах (groups).Группы позволяют вам устанавливать права на уровне групп, вместо выдачи прав каждому пользователю отдельно. Каждый дистрибутив Unix или Linux содержит графические инструменты для управления группами. Новичкам советуется использовать именно их. Более опытные пользователи могут использовать инструменты командной строки для управления пользователями, но будьте осторожно: некоторые дистрибутивы не допускают смешанного использования GUI и CLI инструментов для управления группами (YaST в Novell Suse). Администраторы могут редактировать связанные с этим файлы напрямую с помощью vi или vigr.
|
|
Groupadd
Группы могут быть созданы с помощью команды groupadd.Пример ниже демонстрирует создание 5 пустых групп.
root@laika:~# groupadd tennis
root@laika:~# groupadd football
root@laika:~# groupadd snooker
root@laika:~# groupadd formula1
root@laika:~# groupadd salsa
Etc/group
Пользователи могут состоять в нескольких группах. Членство в группе определяется файлом /etc/group.
root@laika:~# tail -5 /etc/group
tennis:x:1006:
football:x:1007:
snooker:x:1008:
formula1:x:1009:
salsa:x:1010:
root@laika:~#
В первом поле отображается имя группы. Второе поле содержит пароль группы в зашифрованном виде ( может быть пустым). Третье поле содержит идентификатор группы или GID.В четвертом поле содержится список членов (в этих группах никто не состоит)
Usermod
Членство в группе может быть изменено с помощью команд useradd или usermod.
root@laika:~# usermod -a -G tennis inge
root@laika:~# usermod -a -G tennis katrien
root@laika:~# usermod -a -G salsa katrien
root@laika:~# usermod -a -G snooker sandra
root@laika:~# usermod -a -G formula1 annelies
root@laika:~# tail -5 /etc/group
tennis:x:1006:inge,katrien
football:x:1007:
snooker:x:1008:sandra
formula1:x:1009:annelies
salsa:x:1010:katrien
root@laika:~#
Будьте осторожны, используя usermod для добавления пользователей в группы. По умолчанию команда usermod удалит пользователя из каждой группы, в которой он состоит, если она не была написана в команде! Использование –а (append)опции предотвратит это.
Groupmod
Вы можете изменить имя группы с помощью команды groupmod.
root@laika:~# groupmod -n darts snooker
root@laika:~# tail -5 /etc/group
tennis:x:1006:inge,katrien
football:x:1007:
formula1:x:1009:annelies
salsa:x:1010:katrien
darts:x:1008:sandra
Groupdel
Вы можете мгновенно удалить группу командой groupdel.
root@laika:~# groupdel tennis
root@laika:~#
Groups
Пользователь может набрать команду groups,чтобы посмотреть, к каким группам он принадлежит.
[harry@RHEL4b ~]$ groups
harry sports
[harry@RHEL4b ~]$
Gpasswd
Вы можете передать управление членством в группе другому пользователю с помощью команды gpasswd.В примере ниже м передадим права добавлять и удалять членов группы sports group пользователю serena. Затем мы зайдем за serena с помощью suи добавим harry в sports group.
[root@RHEL4b ~]# gpasswd -A serena sports
[root@RHEL4b ~]# su - serena
[serena@RHEL4b ~]$ id harry
uid=516(harry) gid=520(harry) groups=520(harry)
[serena@RHEL4b ~]$ gpasswd -a harry sports
Adding user harry to group sports
[serena@RHEL4b ~]$ id harry
uid=516(harry) gid=520(harry) groups=520(harry),522(sports)
[serena@RHEL4b ~]$ tail -1 /etc/group
sports:x:522:serena,venus,harry
[serena@RHEL4b ~]$
Администраторы группы не обязательно должны состоять в ней. Они могут удалить себя из неё, но это никак не повлияет на их возможность удалять или добавлять членов.
[serena@RHEL4b ~]$ gpasswd -d serena sports
Removing user serena from group sports
[serena@RHEL4b ~]$ exit
Информация об администраторах группы хранится в файле /etc/gshadow.
[root@RHEL4b ~]# tail -1 /etc/gshadow
sports:!:serena:venus,harry
[root@RHEL4b ~]#
Чтобы удалить всех администраторов из группы, используйте команду gpasswdчтобы обнулить список администраторов.
[root@RHEL4b ~]# gpasswd -A "" sports
Vigr
Аналогично vipw, команда vigr может быть использована для ручного редактирования файла /etc/group,т.к. она сделает правильную блокировку файла. Только опытные администраторы должны использовать viили vigrдля управления группами.
Теория.
Дата добавления: 2018-04-05; просмотров: 400; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!