Как я знаю полномочия указанного пользователя на Linux с корневым доступом?

Проблема только bash имеет PROMPT_COMMAND. Попробуйте это вместо этого:

PS1='\[$(if (($?)); then tput setaf 1; else tput setaf 2; fi)\]'\
'[\u@\h \w]\['"$(tput sgr0)"'\]'

¹ Протест: Я не протестировал это на ksh, но это избегает PROMPT_COMMAND и работы в bash.

² tput использует Вашу систему terminfo базы данных. Это обычно более портативно и удобно в сопровождении, чем escape-последовательности жесткого кодирования, обеспечил, terminfo установлен правильно.

7
17.08.2013, 08:50
3 ответа

Может иметь место, что Ваш коллега, при создании учетной записи, создал корневой каталог "вручную", который привел к нему принадлежавший root. Попытайтесь выполнить следующее как root:

chown -R username ~username
chgrp -R $(id -gn username) ~username

Где username название проблематичной учетной записи.

Править

Если это оказывается Вашей проблемой, для предотвращения этого случая в будущем, Вы хотите добавить -m переключитесь на useradd командная строка раньше создавала учетную запись пользователя. Это гарантирует, что выбранный корневой каталог пользователя создается, если он не существует. Это создает корневой каталог с "правильным" владением и полномочия, таким образом, Вы не сталкиваетесь с этим видом проблемы.

Редактирование 2

chgrp команда, добавленная выше, изменит владение группы всего корневого каталога username кому: usernameосновная группа. В зависимости от Вашей среды это не может быть точно, что Вы хотите, и необходимо будет возможно изменить владение группы определенных подкаталогов в корневом каталоге "вручную", таким образом, устанавливая владение другой группы для различных подкаталогов. Это обычно - не случай для персональных компьютеров, но так как Вы упомянули "коллегу", я предполагаю, что мы говорим о сетевой офисной среде, в этом случае владение группы важно для общих каталогов.

7
27.01.2020, 20:17

Нет действительно никакого метода для того, чтобы сделать это в Unix систематическим способом, как Вы просите. Если Вы используете sudo можно создать что-то как, Вы спрашиваете о, но это будет абсолютно искусственным и очень ограничивающим в том, как полный список это может обеспечить. В sudo можно создать группы команд и затем предоставить пользователю (или группы пользователей) доступ к этим группам команд.

Пример

# /etc/sudoers
someuser ALL=/sbin/service, /sbin/chkconfig

Можно затем использовать команду sudo -l как someuser для наблюдения, что управляет, чтобы им позволили работать.

$ sudo -l
...

User someuser may run the following commands on this host:
    (ALL) ALL
    (root) /sbin/service, (root) /sbin/chkconfig, (root)
1
27.01.2020, 20:17

Как Joseph R. предполагает, вероятное объяснение состоит в том, что корневой каталог не был создан с правильным владением. В 99% случаев проблемами доступа является просто вопрос получения владения и набора битов полномочий правильно, с помощью chown и chmod команды, соответственно. (В нескольких экзотических случаях другие факторы играют роль, такие как SELinux, AppArmor, файловая система ACLs или учетное отображение сетевой файловой системы. Поскольку я сказал, тем не менее, что такие ситуации очень вряд ли будут относиться к Вам.)

Для ответа на остальную часть вопроса … да, Вы видите для себя, как это перестало работать. Как корень, можно временно стать другим пользователем, и можно сделать это, не зная, что пароль пользователя — просто работает /bin/su - username. Это выполнит оболочку с как другой пользователь, как будто Вы вошли в систему с помощью того имени пользователя и пароля. Когда Вы сделаны с той оболочкой, exit это, и Вы будете ронять в свою исходную корневую оболочку.

1
27.01.2020, 20:17

Теги

Похожие вопросы