# Проблема: у пользователя в группе root нет доступа ни к ч

## user11

Например:

hostname ~ # su operator

Cannot execute /bin/bash: Permission denied

hostname ~ # cat /etc/passwd |grep operator

operator:x:11:0:operator:/root:/bin/bash

hostname ~ # ls -l /bin/bash

-rwxr-xr-x  1 root root 569724 Июл 30 15:06 /bin/bash

hostname ~ #

Наиболее остро эта проблема проявляется в полной невозможности воспользоваться sudo:

hostname ~ # sudo su -

sudo: can't open /etc/sudoers: Permission denied

sendmail: Cannot open mail:25

hostname ~ # ls -l /etc/sudoers

-r--r-----  1 root root 1690 Ноя 23 22:04 /etc/sudoers

hostname ~ # cat /etc/sudoers |grep root

# This file MUST be edited with the 'visudo' command as root.

root    ALL=(ALL) ALL

hostname ~ #

(strace sudo, а также изучения исходников sudo показывает, что перед чтением /etc/sudoers, sudo выставляет euid=1, оставаясь в egid=0, - так что эта проблема также соответствует теме сообщения)

Примечательно, что при этом у самого рута, а также у пользователей в других группах, все в порядке (кроме sudo).

Подскажите, в каком мане читать?

----------

## sa10

Права в юниксе проверяются по очереди user > group > other

Если юзер получает отлуп, то дальше права не проверяются

----------

## user11

sa10, а в каком случае проверка доходит до group прав?

----------

## sa10

Цитата из книги Клесникова:

Алгоритм проверки прав пользователя при обращении к файлу можно описать следующим образом. Система вначале проверяет, совпадает ли имя пользователя с именем владельца файла. Если эти имена совпадают (т. е. владелец обращается к своему файлу), то проверяется, имеет ли владелец соответствующее право доступа: на чтение, на запись или на выполнение. Если право такое есть, то соответствующая операция разрешается. Если же нужного права владелец не имеет, то проверка прав, предоставляемых через группу или через группу атрибутов доступа для остальных пользователей, уже даже не проверяются, а пользователю выдается сообщение о невозможности выполнения затребованного действия (обычно что-то вроде "Permission denied").

Если имя пользователя, обращающегося к файлу, не совпадает с именем владельца, то система проверяет, принадлежит ли владелец к группе, которая сопоставлена данному файлу (далее будем просто называть ее группой файла). Если принадлежит, то для определения возможности доступа к файлу используются атрибуты, относящиеся к группе, а на атрибуты для владельца и всех остальных пользователей внимания не обращается. Если же пользователь не является владельцем файла и не входит в группу файла, то его права определяются атрибутами для остальных пользователей. Таким образом, третья группа атрибутов, определяющих права доступа к файлу, относится ко всем пользователям, кроме владельца файла и пользователей, входящих в группу файла.

----------

## user11

sa10, большое спасибо за подробное объяснение, как работают права в юниксе.

К сожалению, в моем случае проблема с правами у пользователя, не являющегося владельцем: uid пользователя != 0, а владелец - root, uid = 0. У меня почему-то не срабатывают права группы, gid=0, несмотря на наличие бита 040 (для /etc/sudoers) и битов 050 (для /bin/bash) в правах доступа открываемого/запускаемого файла.

----------

## pv

ll /usr/bin/sudo

---s--x--x ......

Заметь 's' в правах владельца. Это значит, что процесс будет запущен от имени владельца (рута) с самого начала. Аналогично /bin/su.

Если их нет, запусти

```
chmod u+s /usr/bin/sudo

chmod u+s /bin/su

```

А вообще, непонятно, почему невозможно запустить bash: ведь бит выполнения поставлен ДЛЯ ВСЕХ...

----------

## viy

 *pv wrote:*   

> А вообще, непонятно, почему невозможно запустить bash: ведь бит выполнения поставлен ДЛЯ ВСЕХ...

 

Этот бит начинает работать только в том случае, если пользователь не является владельцем файла и не входит в группу, к которой принадлежит файл. Его надо интерпретировать не для всх, а для всех остальных.

----------

## pv

 *viy wrote:*   

>  *pv wrote:*   А вообще, непонятно, почему невозможно запустить bash: ведь бит выполнения поставлен ДЛЯ ВСЕХ... 
> 
> Этот бит начинает работать только в том случае, если пользователь не является владельцем файла и не входит в группу, к которой принадлежит файл. Его надо интерпретировать не для всх, а для всех остальных.

 

С учётом листинга, бит выполнения поставлен для всех: для владельца, для группы, и для остальных.

----------

## user11

Всем спасибо за участие.

После долгих поисков выяснилась причина:

У меня для / стояли дурные права: 341,

В итоге группе root не позволялось открывать *никакие* файлы на диске.

В частности, пострадало sudo (так вот хитро оно устроено внутри, что пользуется группой root).

Проблема разрешилась командой

chmod 755 /

К сожалению, мне, более чем ламеру, для того, чтобы увидеть права на /, пришлось загрузиться с CD, замонтмровать свой системный раздел и посмотреть права через ls -l /mnt/  :Smile: 

[offtopic]

Самое потрясающее в этой истории - то, что, когда я собрался отправить это сообщение, то сначала стал искать этот тред по ключевому слову 'sudoers' - и... да-да, чуть ли не первой же ссылкой было объяснение, как это лечится.

[/offtopic]

----------

## pv

[offtopic]

Мне очень горько, что моя (и не только) способность искать ответ в другой плоскости исчезает с возрастом.  :Crying or Very sad: 

[/offtopic]

----------

