用户管理
引入
和Windows的比较:Linux支持多用户同时登录,windows默认不支持,但是修改组策略的情况下也是可以多用户登录的。
比如公司每台服务器,都可以被若干运维人员登录部署或解决相关问题,他们并不是干一件事。
比如baidu.com服务器,上面有root,有Apache用户,常规普通用户等。在同一时刻,可能有的人正在上传软件包部署 Apache 服务;有的正在查看服务器日志,有的人正在登录编写 Shell 程序。不同的维护人员对系统的维护或查看,所用的账号既可以是不同的普通账号,也可以是超级账号 root;不同用户所具有的权限也不同,不同的任务由不同的维护人员来完成,也可以说是不同的用户。
多用户多是通过 SSH 客户端工具等远程登录到服务器上来进行的,比如对服务器的远程控制,只要具有相关用户的权限,任何人都可以访问服务器。
用户介绍
Linux 是一个多用户、多任务的分时操作系统。如果要使用系统资源,就必须向系统管理员申请一个账户,然后通过这个账户进入系统。这个账户和用户是同一个概念,可以通过建立不同属性的用户来实现不同的作用或权限。这样一方面可以合理地利用和控制系统资源,另一方面也可以帮助用户组织文件,提供对用户文件的安全性保护。
每个用户都拥有一个唯一的用户名和用户口令,在登录系统时,只有正确输入了用户名和密码,才能登入系统和相应的目录(除了密码验证之外,还可以是密钥验证)。
在生产环境中,我们一般会为每个有权限管理服务器的运维人员分配一个独立的普通用户账号及8位(包含数字、字母、特殊字符)以上的密码,如 oldboy。该人员只能通过这个账号登录到系统中进行维护,当需要超级用户权限时,可以通过sudo来提权,执行仅root 用户才允许执行的权限。当然,sudo 权限要尽量小。此外,当运维人数不多时(如两三个),也可以直接通过 su-命令切换到超级用户 root 下执行相应的维护工作。在这里需要特别提醒大家注意的是,维护时,如果不需要root权限,尽量不要进root 用户下操作,以减少误操作。
一句话,尽量在普通用户下操作,能不用root就不用root。
总结
Linux下用户有什么作用:
1)系统上的每一个进程(运行的程序)都需要特定的用户运行
2)每一个文件都有特定的用户拥有,所以访问一个文件或目录受到用户的限制(默认谁创建就是谁的)
3)进程能够以何种方式访问某一个文件或目录, 与进程所关联的用户有关
4)部署服务的时候,一般需要创建虚拟用户,以满足服务启动的属主需求!
实操:如何查看系统中所存在的用户:
# id命令 查看当前用户UID等
[xxx@web01 ~]$ id
uid=1000(xxx) gid=1000(xxx) groups=1000(xxx)
# id + 用户名 可以看该用户信息
[root@web01 ~]# id xxx
uid=1000(xxx) gid=1000(xxx) groups=1000(xxx)
# 查当前登录用户
who whoami
# ll
可以看到每个文件都有所有者
# ps -ef|less
每个进程都有用户运行
# su - XXX 切换到XXX用户
用户配置相关文件:
/etc/passwd 是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读(r)操作。
/etc/shadow 文件,用于存储 Linux 系统中用户的密码信息。
这两个文件是linux系统中最重要的文件之一。 如果没有这两个文件或者这两个文件出问题,会导致无法正常登录linux系统。
/etc/passwd 账户文件 (把此文件移走则无法建新用户了)
[root@localhost.localdomain ~] # head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
...(省略输出)
## 文件含义说明:
由 ':' 为分割符, 分为7列,以第一行为例,每列的具体含义如下:
1.root 用户名
2.密码占位符 存放账户的口令,暂用x表示,密码保存在/etc/shadow
3.用户的UID root是0
4.用户基本组GID root是0
5.对用户的描述,可随便改
6.用户家目录 root家目录是/root 若是普通用户家目录存在/home
7.用户登录Linux使用的shell
/etc/shadow 用户密码文件
[root@zls ~]# cat /etc/shadow
zls1:!!:16312:0:99999:7:::
## /etc/shadow由 ':' 为分割符, 分为9个字段,每个字段的具体含义如下:
字段名称 注释说明
1.用户登陆名 //用户的账号名称
2.加密后的密码 //用户密码,这是加密过的口令(未设密码时为!!或者*)
3.最近一次密码更改时间 //从1970年到最近一次更改密码时间之间过了多少天
4.密码最少使用几天 //密码最少使用几天才可以更改密码(0表示无限制)
5.密码最长使用几天 //密码使用多少天需要修改密码(默认99999永不过期)
6.密码到期前警告期限 //密码过期前多少天提醒用户更改密码(默认过期提前7天警告)
7.密码到期后保持活动的天数 //在此期限内, 用户依然可以登陆系统并更改密码, 指定天数过后, 账户被锁定
8.账户失效时间 //从1970年起,账户在这个日期前可使用,到期后失效。
9.空 //保留
[root@sky /]# vim /etc/shadow
root:$6$loT0I2.wQQYYVKrn$/CwO804rv4dZp19sBFDcvgHVTS2ppIJsCMABbbbYZhmc5kxWFt0GzAwKKzdlWqcDvhAVfA18ev3XrmGNgGk9x1::0:99999:7:::
bin:*:17834:0:99999:7:::