Algumas coisas:
-
O comando
sudo
é para se elevar a um nível mais alto de credenciais para um comando ou conjunto de comandos, não para obter acesso a um diretório com o qual você (1) não seja o proprietário, (2) em um grupo que tenha permissões de leitura para esse diretório, ou (3) o diretório não tenha as outras permissões abertas para o mundo. -
O arquivo
/etc/sudoers
é o arquivo que contém todas as regras para um determinado sistema e estipula quais usuários, grupos de usuários, podem executar quais comandos de uma maneira elevada, comoroot
, normalmente, ou algum outro conta de usuário. Normalmente você NÃO quer editar esse arquivo diretamente, embora seja possível, é melhor não fazê-lo. -
O comando
visudo
é a maneira prescrita para editar o arquivo/etc/sudoers
. -
Se você quiser ver quais credenciais sudo um usuário tem acesso, a maneira mais simples é se tornar esse usuário e executar o comando
sudo -l
.$ sudo -l Matching Defaults entries for saml on this host: env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User saml may run the following commands on this host: (ALL) ALL (root) NOPASSWD: /usr/lib/jupiter/scripts/bluetooth, (root) /usr/lib/jupiter/scripts/cpu-control, (root) /usr/lib/jupiter/scripts/resolutions, (root) /usr/lib/jupiter/scripts/rotate, (root) /usr/lib/jupiter/scripts/touchpad, (root) /usr/lib/jupiter/scripts/vga-out, (root) /usr/lib/jupiter/scripts/wifi
acesso por roda
Acredito que você esteja se referindo ao grupo de usuários wheel
, que é uma maneira antiga (que eu saiba) de conceder permissões aos usuários para se tornarem root por meio de su -
. Este artigo faz um bom trabalho ao discutir o uso desse grupo, intitulado: Como administrar seu sistema Linux .
Conceder acesso a /home/<user>
?
Até onde sei, não há uma maneira sistemática de fazer isso sem dar a esse usuário privilégios elevados de outras maneiras que você está tentando limitar. Eu diria que se você não confia neste usuário em particular a responsabilidade de ter acesso desta forma, então eles provavelmente não são a pessoa certa para fazer este trabalho!
Grupos
Por exemplo. Digamos que eu tenha 2 alunos e 1 TA. Alunos (usuário1 & usuário2) TA (usuário3).
Assim, os grupos seriam os seguintes:
- class1
- vboxuser1
Então, quando eu entrei no sistema como qualquer um dos usuários acima (1-3), meus grupos seriam os seguintes:
$ groups
users vboxusers class1
Esses grupos também precisam ser definidos nos diretores de casa do aluno:
$ ls -l /home/user1 | head -3
total 37784
drwxrwxr-x 2 saml class1 4096 May 16 22:02 alsa
drwxrwxr-x 31 saml class1 4096 Mar 26 12:09 apps
Esta é apenas uma idéia, ela tem problemas com essa abordagem, mas, dadas as informações que você forneceu, é "uma maneira de fazer isso"!