Используемая версия: CentOS 7
[root@azfdbdfsdf230lqdg1ba91 ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@azfdbdfsdf230lqdg1ba91 ~]# uname -a
Linux azfdbdfsdf230lqdg1ba91 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[root@azfdbdfsdf230lqdg1ba91 ~]#
что-то случилось
Недавно в тестовой среде был развернут новый проект, и QA пришел к выводу, что jenkins запаковал ошибку. Поэтому я пошел к упаковочной машине, чтобы увидеть ситуацию с упаковкой.QA использовал новую учетную запись для упаковки, что означает, что у него не было разрешения на упаковочную директорию других учетных записей, поэтому было сообщено об ошибке. Это необходимо для предоставления прав доступа к каталогу этой учетной записи. Я узнал, что там много подробностей о переключении учетных записей и предоставлении разрешений, поэтому я записал операцию.
Для удобства сначала создаются два пользователя skyler4 и skyler5. Следующие команды выполняются под учетной записью root
$ groupadd skyler //创建一个组,名称为skyler
$ cat /etc/group //查看组信息
$ useradd -g skyler -p skyler4 skyler4 //创建一个用户,名称为skyler4,并关联上组,同时设置密码为skyler4
$ useradd -g skyler -p skyler5 skyler5 //创建一个用户,名称为skyler5,并关联上组,同时设置密码为skyler5
$ cat /etc/passwd // 查看所有用户密码
После создания пользователя выполнитеcat /etc/shadow
Вы можете увидеть эффект следующим образом
Итак, перешел с рута на скайлер4, результат такой
Как видите, теперь он находится под учетной записью skyler4. Я снова переключился, на этот раз я хочу перейти на аккаунт skyler5
Как видите, мне подсказывает, что авторизация не удалась, в чем причина? Пароль skyler5, который я ввел, правильный, почему я не могу его переключить? Поэтому я вернулся к учетной записи root и выполнилpasswd skyler5
, после ввода пароля skyler5 использовать сноваcat /etc/shadow
Проверять
[skyler4@azfdbdfsdf230lqdg1ba91 ~]$ su -
Password:
Last login: Wed Sep 18 20:12:20 CST 2019 on pts/0
[root@azfdbdfsdf230lqdg1ba91 ~]# passwd skyler5
Changing password for user skyler5.
New password:
BAD PASSWORD: The password contains the user name in some form
Retype new password:
passwd: all authentication tokens updated successfully.
[root@azfdbdfsdf230lqdg1ba91 ~]# cat /etc/shadow
root:mJw/b3Nd.:17634:0:99999:7:::
...
skyler3:skyler3:18157:0:99999:7:::
skyler4:skyler4:18157:0:99999:7:::
skyler5:$64jZARp6ewjTNXzVUpOq3xpX9M2zERCaa7Mc6/r61Kr41Yg0qK/:18157:0:99999:7:::
[root@azfdbdfsdf230lqdg1ba91 ~]#
Как видите, дваждыcat /etc/shadow
Пароль для просмотра аккаунта скайлер5 другой.Хотя я ввел все скайлер5, последний зашифрован. Теперь я переключаюсь на skyler4 и используюsu - skyler5
И введите пароль skyler5, чтобы переключиться на учетную запись skyler5. Эффект показан на рисунке ниже
Вы можете видеть, что переключение прошло успешно. Не могу не спросить, 1.useradd
Установленный пароль не работает? 2.passwd
что сделала команда?
причина
在root权限下,useradd只是创建了一个用户名,如 (useradd 用户名 ),它并没有在/home目录下创建同名文件夹,也没有创建密码,因此利用这个用户登录系统,是登录不了的。这是网上的说法,但我觉得不是这个原因,因为useradd创建的用户是有家目录的,通过root账号下执行 cat /etc/passwd可以看到是有家目录的
[root@azfdbdfsdf230lqdg1ba91 ~]# useradd -p skyler80 skyler80
[root@azfdbdfsdf230lqdg1ba91 ~]# cat /etc/passwd
skyler4:x:1003:1000::/home/skyler4:/bin/bash
skyler5:x:1004:1000::/home/skyler5:/bin/bash
skyler80:x:1010:1010::/home/skyler80:/bin/bash
решать
- Выполнить с правами root
passwd 用户名
. подобноpasswd skyler5
, и следуйте инструкциям, чтобы ввести свой пароль
Другой онлайн сказал использоватьuseradd -m 用户名
, попробовал и обнаружил, что это не работает. Также говорят использовать команду adduser, которая тоже не работает
skyler5 может переключать пользователей, но skyler4 не может, это нужно выполнить для skyler4passwd skyler4
Для установки пароля работаем напрямую под учетной записью skyler5, результат такой
Первый результат указывает на то, что команду sudo можно использовать только под учетной записью root, а второй результат указывает на то, что skyler5 отсутствует в файле sudoers. Поэтому вам необходимо настроить информацию о skyler5 в sudoers, шаги следующие
[root@azfdbdfsdf230lqdg1ba91 ~]# ll /etc/sudoers
-r--r----- 1 root root 3962 9月 19 13:09 /etc/sudoers
[root@azfdbdfsdf230lqdg1ba91 ~]# chmod u+w /etc/sudoers //赋值这个文件写权限
[root@azfdbdfsdf230lqdg1ba91 ~]# ll /etc/sudoers
-rw-r----- 1 root root 3962 9月 19 13:09 /etc/sudoers
[root@azfdbdfsdf230lqdg1ba91 ~]# visudo // 编辑/etc/sudoers文件
входитьskyler*
После содержимого нажмите Esc, затем Shift + двойной Z, как показано ниже.
Теперь давайте установим пароль skyler4 под учетной записью skyler5, вы можете найти, что его можно установить, эффект будет следующим
Разница между adduser и useradd
В интернете говорят, что adduser и useradd разные, но на CentOS 7 через info/man adduser/useradd они одинаковые
су означает
su为switch user,即切换用户的简写
格式:su -l USERNAME(-l为login,即登陆的简写)。-l可以将l省略掉,所以此命令常写为su - USERNAME
如果不指定USERNAME(用户名),默认即为root,所以切换到root的身份的命令即为:su -root或是直接 su -
Разница между су и су -
通过su切换用户还可以直接使用命令su USERNAME,与su - USERNAME的不同之处如下:
su - USERNAME切换用户后,同时切换到新用户的工作环境中
su USERNAME切换用户后,不改变原用户的工作目录,及其他环境变量目录
如下图,显示两个命令的执行结果:家目录显然不同
Возможно, вам будет удобнее использовать su для входа в систему. Тем не менее, команда su также полезна, поэтому вам может быть интересно, когда она используется. Далее выдержка с вики-сайта ArchLinux — о плюсах и минусах команды su:
- Иногда для системного администратора (root) лучше использовать другую учетную запись оболочки обычного пользователя вместо вашей собственной учетной записи оболочки root. Особенно при работе с проблемами пользователей наиболее эффективным способом является вход в систему целевого пользователя, чтобы воспроизвести и отладить проблему.
- Однако в большинстве случаев при переключении с обычного пользователя на пользователя root не рекомендуется или даже опасно использовать переменные среды обычного пользователя. Поскольку среда использования обычного пользователя переключается непреднамеренно, когда пользователь root используется для установки программы или внесения изменений в систему, результат будет несовместим с нормальной работой пользователя root. Например, установка программы в качестве обычного пользователя даст обычному пользователю возможность случайно повредить систему или получить несанкционированный доступ к определенным данным.
sudo
sudo для «суперпользователя делать»
使用su切换用户时需知晓要切换用户的登陆密码,即若切换成root用户身份,需知道root用户的登陆密码。作为root用户管理员,如何授权其他普通用户,在不需要知晓root密码的情况下,执行root权限的命令操作?此时即可使用sudo。
sudo是一种权限管理机制,依赖于/etc/sudoers,其定义了授权给哪个用户可以以管理员的身份能够执行什么样的管理命令;
格式:sudo -u USERNAME COMMAND
当普通用户通过sudo以root用户执行命令时,sudo后面的 -u USERNAME可省略,即sudo COMMAND 即意为sudo以root用户执行
默认情况下,系统只有root用户可以执行sudo命令。需要root用户通过使用visudo命令编辑sudo的配置文件/etc/sudoers,才可以授权其他普通用户执行sudo命令。如下图
Разница между sudo и su
-
Та же точка Обе команды могут переключать пользователей: sudo -u ИМЯ ПОЛЬЗОВАТЕЛЯ КОМАНДА; ву - ИМЯ ПОЛЬЗОВАТЕЛЯ
-
Разница между sudo и su
1. 两个命令的最大区别是:切换到root用户时
sudo COMMAND // 以root权限执行COMMAND,此时需要输入当前账号的密码
su - // 切换到root用户,此时需要输入root账户的密码
如:
skyler5账号下执行 `sudo passwd skyler4`,此时需要你输入skyler5的密码
skyler5账号下执行 `su -' ,此时需要你输入root的密码
2. 日志记录
尽管 sudo 命令是以目标用户(默认情况下是 root 用户)的身份执行命令,但是它们会使用 sudoer 所配置的用户名来记录是谁执行命令。而 su 命令是无法直接跟踪记录用户切换到 root 用户之后执行了什么操作。
3. 灵活性
sudo 命令比 su 命令灵活很多,因为你甚至可以限制 sudo 用户可以访问哪些命令。换句话说,用户通过 sudo 命令只能访问他们工作需要的命令。而 su 命令让用户有权限做任何事情
4. man文档中su和sudo的解释:
su - run a shell with substitute user andgroup IDs
sudo - excute a command as another user. sudo allows a permitted user to execute acommand as the superuser or another user, as specified by security policy.
Разница между sudo bash и sudo su и sudo sh
- sudo sh
- судо баш Команда bash является расширением и обновлением команды sh.
sudo allows users to run programs with the security privileges of another user (normally the superuser, or root).
bash starts a new bash shell.
So, sudo bash starts a new bash shell with the security privilege of root user.
If sudo bash is allowed to any user, that user is root simply by virtue of knowing his own password.
- судо су переключиться на пользователя root
用户必须有/usr/bin/su命令的sudo权限。一旦切换成功,用户可以以root身份执行任何命令。
Когда новый пользователь выполняет sudo su, он может запросить
[skyler5@azfdbdfsdf230lqdg1ba91 ~]$ sudo su
[sudo] password for skyler5:
Sorry, user skyler5 is not allowed to execute '/bin/su' as root on azfdbdfsdf230lqdg1ba91.
这是因为skyler5没有sudo su的权限,需要在/etc/sudoers文件中配置,具体如下
切换到root账号
[skyler5@azfdbdfsdf230lqdg1ba91 ~]$ su -
赋给root账号对/etc/sudoers文件的写权限
[root@azfdbdfsdf230lqdg1ba91 ~]# chmod u+w /etc/sudoers
[root@azfdbdfsdf230lqdg1ba91 ~]# ll /etc/sudoers
-rw-r----- 1 root root 4210 Sep 19 18:45 /etc/sudoers
编辑/etc/sudoers,添加内容如下图
[root@azfdbdfsdf230lqdg1ba91 ~]# visudo
После редактирования сохраните и выйдите, переключитесь на учетную запись skyler5 и снова выполнитеsudo su -
[skyler5@azfdbdfsdf230lqdg1ba91 ~]$ sudo su - //执行这行你会发现:直接切换都没有root账号,没有输入root账号密码直接切换了
Last login: Sat Sep 21 16:44:41 CST 2019 on pts/0
В сравненииsudo su -
а такжеsu -
Эффект. Вы обнаружите, что для первого не требуется пароль root, а для второго требуется пароль root. В этом плюсы и минусы команды sudo. Особо указать:sudo su -
Не обязательно вводить пароль на период времени, а также необходимо вводить пароль через период времени, но этот пароль является паролем учетной записи skyler5, а не паролем root
[skyler5@azfdbdfsdf230lqdg1ba91 ~]$ su -
Password:
[root@azfdbdfsdf230lqdg1ba91 ~]#
Точно так же учетная запись skyler5 должна выполнитьsudo bash
,sudo sh
Оба нуждаются в root, чтобы сначала дать разрешение, метод настройки одинаковsudo su
Путь
Разница между sudo bash и sudo su и sudo sh
От эффекта переключения аккаунтаsudo su -
= sudo bash
= sudo sh
, переключаются на среду учетной записи root
Оригинальный адрес:Что-то случилось с linux, создающим и переключающим пользователей
Ссылаться на:Частная кухня Linux Bird Brother