目录
1. linux用户的分类:
超级用户:
root用户,可以操作一切文件,uid(0)
普通用户:
登录操作系统所使用的用户,所能操作的文件和目录有限,uid(500 - 6000)
伪用户:
为了满足一些系统进程对文件所属的要求,方便系统管理而内建的用户,这类用户不能登录系统,uid(1 - 499)
2. 查看用户及用户组
2.1 查看所有用户
列出的内容格式:用户:密码:uid:gid:相关信息:用户家目录:用户所使用的shell解释器
sun@sun-pc:~$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
注:
1.passwd文件中的密码都是无效的x字符,真正存储密码的地方在/etc/shadow,但依然是加密显示的;
2.指定shell解释器是/usr/sbin/nologin和/bin/false的,都是无法登录的用户。比较明显的区别就是,解释器是/usr/sbin/nologin的用户,在登录的时候会提示"This account is currently not available.",而解释器是/bin/false的什么也不会提示。
2.2 查看所有用户组
列出的内容格式:用户组:密码:gid:组中的用户
sun@sun-pc:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,sun
...
注:可能有人好奇为啥用户组也有密码,其实这个组密码确实极少用。可能在某些极端的情况下,root用户没办法及时响应新用户申请加入某个组的请求,这个时候设立一个组管理员(为该组添加密码),这样组自己就可以管理用户的加入或离开申请,从而减少root的管理压力。
3. 用户创建及删除
创建用户
#创建用户gerrit
sun@sun-pc:~$ sudo useradd gerrit -m -s /bin/bash
#设置用户密码
sun@sun-pc:~$ sudo passwd gerrit
输入新的 UNIX 密码:
重新输入新的 UNIX 密码:
passwd:已成功更新密码
#查看一下创建的用户及其所属组id信息
sun@sun-pc:~$ id gerrit
uid=1001(gerrit) gid=1001(gerrit) 组=1001(gerrit)
-m:自动建立用户的家目录
-d:指定用户的家目录,同时也需要添加-m选项才可以生成
-s:指定用户登入后所使用的shell
-g:指定用户所属组
-G:指定用户附加所属组
-u:指定用户ID号
删除用户
#删除用户gerrit
sun@sun-pc:~$ sudo userdel -f -r gerrit
userdel: user gerrit is currently used by process 15730
userdel: gerrit 邮件池 (/var/mail/gerrit) 未找到
#查看用户id信息,发现已经删除
sun@sun-pc:~$ id gerrit
id: "gerrit": no such user
-f:强制删除,不管是不是正在使用
-r:删除用户的家目录及邮箱目录
4. 用户组创建及删除
创建用户组
sun@sun-pc:~$ sudo groupadd testgroup
删除用户组
sun@sun-pc:~$ sudo groupdel testgroup
5. 用户所属组操作
5.1 将用户添加到指定用户组
#假设现在有一个test用户和一个testgroup用户组,将test用户添加到testgroup用户组
sun@sun-pc:~$ sudo usermod -a -G testgroup test
#查看test用户及其用户组id信息
sun@sun-pc:~$ id test
uid=1001(test) gid=1001(test) 组=1001(test),1002(testgroup)
-G:新的附加组列表 GROUPS
-a:将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户
5.2 将用户从指定组中删除
假设gerrit用户属于sambashare用户组,现将gerrit从其中移除
gerrit@sun-pc:~$ sudo deluser gerrit sambashare
正在将用户"gerrit"从组"sambashare"中删除...
完成。
5.3 更改用户组名称
sudo groupmod -n <new name> <old name>
6. 文件(目录)所属用户(用户组)更改
sun@sun-pc:~$ ls -l /usr/
总用量 132
...
drwxr-xr-x 3 root root 4096 8月 25 10:41 libx32
drwxr-xr-x 14 root root 4096 8月 26 11:08 local
...
我们把上面那个local目录及其包含的所有文件(子目录)更改为sun用户(用户组)所有:
#下面sun:sun,前面的是用户名,后面的是用户组名
sun@sun-pc:/usr$ sudo chown -R sun:sun /usr/local
sun@sun-pc:~$ ls -l /usr/
总用量 132
...
drwxr-xr-x 3 root root 4096 8月 25 10:41 libx32
drwxr-xr-x 14 sun sun 4096 8月 26 11:08 local
-R:递归处理指定目录下的所有文件和目录
-v:显示处理的详细信息
7. 相关问题
问题:xxx 不在 sudoers 文件中。此事将被报告。
解决:
方法一: 将用户gerrit用户更改为管理员用户。怎么做呢?只需要将其添加到root用户组即可。
#切换到root用户
gerrit@sun-pc:~$ su root
#将gerrit添加到sudo用户组
root@sun-pc:~# usermod -a -G sudo gerrit
#打开一个新终端,在新终端中登陆gerrit用户后,再次尝试即可
gerrit@sun-pc:~$ sudo apt-get install mysql-server
[sudo] gerrit 的密码:
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
mysql-server 已经是最新版 (5.7.36-0ubuntu0.18.04.1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 47 个软件包未被升级。
方法二: 使用sudo编辑/etc/sudoers
,然后wq!
退出即可