Как задать ограничения (capacities) для пользователя в Linux?

Как мне настроить Arch Linux так, чтобы после входа в систему через getty я мог выполнять команду `ls /root` и видеть ее содержимое? 

Для этого у меня есть следующее:  
1. В файле `/etc/security/capability.conf` указано:  
   ```
   cap_dac_override admin
   cap_dac_read_search admin
   ```

2. Файл `/etc/pam.d/login` содержит:  
   ```
   #%PAM-1.0

   auth       requisite    pam_nologin.so
   auth       include      system-local-login
   account    include      system-local-login
   session    include      system-local-login
   password   include      system-local-login
   ```

3. В `/etc/pam.d/system-local-login` указано:  
   ```
   #%PAM-1.0

   auth      include   system-login
   account   include   system-login
   password  include   system-login
   session   include   system-login
   ```

4. А в файле `/etc/pam.d/system-login` таково содержание:  
   ```
   #%PAM-1.0

   auth       required   pam_shells.so debug
   auth       requisite  pam_nologin.so 
   auth       required   pam_cap.so  debug
   auth       include    system-auth

   account    required   pam_access.so debug
   account    required   pam_nologin.so  
   account    include    system-auth

   password   include    system-auth

   session    required   pam_selinux.so close debug
   session    optional   pam_loginuid.so debug
   session    optional   pam_keyinit.so       force revoke
   session    include    system-auth

   session    required   pam_selinux.so open debug
   session    optional   pam_motd.so 
   session    optional   pam_mail.so       
   ``` 

Каковы необходимые действия для реализации этого сценария?
  • 31 августа 2024 г. 1:44
Ответы на вопрос 1
Чтобы позволить пользователю выполнять команду `ls /root` и видеть содержимое каталога `/root` в Arch Linux, вам нужно настроить ограничения возможностей (capabilities) для этого пользователя. В данном случае вам нужно будет внести изменения в файл конфигурации PAM (Pluggable Authentication Modules) и убедиться, что для пользователя выставлены необходимые возможности.

1. **Убедитесь, что необходимые пакеты установлены**:
   Убедитесь, что пакеты `libcap` и `libcap-utils` установлены, так как они нужны для работы с возможностями.

   ```bash
   sudo pacman -S libcap
   ```

2. **Настройка возможностей**:
   В зависимости от необходимых возможностей, чтобы пользователь мог видеть содержимое каталога `/root`, вам нужно будет добавить необходимые возможности в систему. Вы можете использовать утилиту `setcap`.

   Пример:

   ```bash
   sudo setcap cap_dac_override,cap_dac_read_search=eip /usr/bin/ls
   ```

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

3. **Измените конфигурацию PAM**:
   Убедитесь, что конфигурация PAM загружает поддержку возможностей. Ваша конфигурация PAM в файлах выглядит правильно, если у вас подключен `pam_cap.so`.

   Проверьте, чтобы у вас в `/etc/security/capability.conf` были установлены следующие строки:

   ```plaintext
   *               cap_dac_override admin
   *               cap_dac_read_search admin
   ```

   Это будет применяться ко всем пользователям (будьте осторожны с этим, если у вас есть другие пользователи, которым не следует иметь такие возможности).

4. **Добавить пользователя в группу**:
   Можно также создать группу, дать ей возможности, а затем добавить вашего пользователя в эту группу:

   ```bash
   sudo groupadd rootaccess
   sudo setcap cap_dac_override,cap_dac_read_search=eip /usr/bin/ls
   ```

   Затем добавьте пользователя в группу:

   ```bash
   sudo usermod -aG rootaccess ваш_пользователь
   ```

5. **Перезапустите сеанс**:
   Перезапустите сеанс вашего пользователя, чтобы изменения вступили в силу.

6. **Проверьте**:
   После всех изменений войдите под своим пользователем и выполните:

   ```bash
   ls /root
   ```

   Вы должны увидеть содержимое каталога `/root`.

**Внимание**: Будьте очень осторожны с предоставлением таких возможностей, так как они могут привести к потенциальным проблемам безопасности. Пользователь с такими возможностями сможет получить доступ к защищенной информации, что может быть небезопасно в многоuserных системах.
Похожие вопросы