目录
一、用户基本命令
1.1 添加新用户
1.2 切换用户
1.3 删除用户
1.4 修改用户密码
1.5 用户组的新建和删除
二、用户相关的文件
三、sudo权限的授权
3.1 sudo权限的授权
3.2 问题:sudo和su命令不能使用。
3.3 可以试试强制切换root。但是需要sudo可以使用。
3.4 忘记root密码:网上找的方法是进入单用户模式:
3.5 认证代理:用户两个终端 进入root
一、用户基本命令
1.1 添加新用户
1. root用户 添加 新用户
adduser 用户名2. 普通用户添加新用户
sudo adduser 用户名
查看 /etc/passwd 文件
1.2 切换用户
【用户切换】
su 用户:家目录不会切换
su - 用户:家目录会切换
【用户分类】
超级用户root:UID=0
系统用户:UID=1~499
普通用户:UID=500~65534
// 仅切换用户,所在目录不会切换
su 用户名
su root// 切换用户,并切换到用户的家目录
su - 用户名
su - root
su - zj//推出当前用户
exit
1.3 删除用户
注意:在某些Linux版本中用户虽然被删除了, 但是它的家目录却没有被删除,需要我们手动将其删除。
# 删除用户, 添加参数 -r 就可以一并删除用户的家目录了
$ sudo userdel 用户名 -r
1.4 修改用户密码
# passwd
# 修改当前用户
$ passwd# 修改非当前用户密码
$ sudo passwd 用户名# 修改root
$ sudo passwd root
1.5 用户组的新建和删除
默认情况下, 只要创建新用户就会得到一个同名的用户组, 并且这个用户属于这个组。一般情况下不需要创建新的用户组,如果有需求可以使用 groupadd添加用户组, 使用 groupdel删除用户组。
由于普通用户没有添加删除用户组权限,因此需要在管理员(root)用户下操作,或者在普通用户下借助管理员权限完成该操作。
# 基于普通用户创建新的用户组
$ sudo groupadd 组名# 基于普通用户删除已经存在的用户组
$ sudo groupdel 组名
二、用户相关的文件
/etc/passwd 用户信息管理
/etc/shadow 用户密码,加密后的
/etc/sudoers sudo权限的授权管理
/etc/group 用户组信息管理
三、sudo权限的授权
3.1 sudo权限的授权
编辑/etc/sudoers文件。
编辑方法:
- 推荐使用visudo:自动检查语法错误,防止错误配置导致sudo不可用。
- 直接编辑(谨慎):需用chmod修改权限,编辑后恢复权限为440。建议先进入root用户。
sudo visudo
// 下面是 /etc/sudoers 文件里,定义的root用户权限
root ALL=(ALL:ALL) ALL第一个ALL:表示该规则适用于所有主机。这意味着root用户可以从任何主机登录并行使这些权限。第二个ALL:出现在括号内,表示root用户可以切换到系统中的任何用户。第三个ALL:同样出现在括号内,跟在第二个ALL后面,由冒号分隔,表示root用户可以切换到系统中任何用户组。第四个ALL:表示root用户可以执行系统中的任何命令。
让普通用户执行命令时想root一样,不需要加sudo。/etc/sudoers 如下配置:
username ALL=(ALL) NOPASSWD: ALL
或者
先切换到root,修改/etc/passwd文件中的
linaro:x:1000:1000:linaro,,,:/home/linaro:/bin/bash将其改为
linaro:x:0:1000:linaro,,,:/home/linaro:/bin/bash也就是修改linaro用户的UID为0让其拥有与root用户相同的权限。
修改完后需要重启一下,或者注销当前用户重启登陆一下
3.2 问题:sudo和su命令不能使用。
由于我直接用普通用户加sudo,直接修改了/etc/sudoers的权限为664。并在该文件中添加了普通用户和root一样的权限配置。
由于root用户没提前切换,导致sudo 和 su命令都用不了的情况,root也切换不了。/etc/sudoers 的文件权限也chmod不了。
上面就导致超级用户权限的管理崩溃。因为这个权限要检查/etc/sudoers的权限要是不可修改的。
所以我就想着用其他方法切换到root用户,重新修改/etc/sudoers的文件权限为只读的。
方法1:进入grub界面修改,利用单用户超级权限,修改/etc/sudoers的权限。
方法2:打开两个终端,进行认证代理的机制。
两种方法,下面有详细操作。
3.3 可以试试强制切换root。但是需要sudo可以使用。
如果su不能进入root用户,可以试试下面命令。
sudo su
3.4 忘记root密码:网上找的方法是进入单用户模式:
忘记root用户密码,可以重启设置。以下是详细步骤。
【进入grub页面 修改root密码】1.在ubuntu开机进度条的时候,长按 eac\shift\f12. 具体按哪个看进度条下面的提示。2.然后回车选择 高级选项ubuntu3.e选择(不要按回车) recovery mode4.ro recovery nomodeset ----> quiet splash rw init=/bin/bash6.ctrl+x 退出5.passwd // 修改root密码 不需要root原始密码。
3.5 认证代理:用户两个终端 进入root
这个是针对 3.2 情况下,sudo和su崩溃,/etc/sudoers权限无法修改,root用户切换不了的情况 的解决办法。
1、打开两个终端。
2、在第一个终端中,获取该shell终端的PID。
echo $$ # 获取当前终端 PID
3、在第二个终端运行以下命令
启动一个认证代理,允许你在第一个终端以超级用户的权限运行命令。这样就可以修改/etc/sudoers的权限为只读的了,进而就可以使用sudo命令了。
pkttyagent --process <PID> // PID:第一个终端的PID
4、第一个终端修改/etc/sudoers 权限
pkexec chmod 440 /etc/sudoers
修改好/etc/sudoers的权限,那么sudo就可以正常使用了。所以在修改/etc/sudoers权限时,先进入root模式。