您的位置:首页 > 运维架构 > Linux

Linux系统管理—用户管理

2015-06-23 11:50 375 查看

用户管理

Linux系统分为三种用户:root用户、系统用户、普通用户

ID是区分系统中用户的唯一表示,root用户的ID是0,系统用户的ID是1~499,用户的ID是500-60000(看过书籍写的是1000~60000,但是打开用户配置/etc/login.defs可看到其是500~60000)

其中系统用户是不能登录的,因为他们登录的shell是/sbin/nologin

用户的默认配置在/etc/login.defs,在读取用户的信息时候是从这里读取的

用户的基本信息在/etc/passwd中,用户的安全信息在/etc/shadow下

/etc/passwd字段

【用户名:密码:UID:GID:用户描述:用户主目录:用户登录Shell】

hadoop:x:500:501::/home/hadoop:/bin/bash

/etc/shadow字段

【用户名:加密后的密码:上次更改密码的日期:密码不可被更改的天数:密码需要重新变更的天数:密码需要变更前的警告期限:帐号失效日期:帐号取消日期:保留】

hadoop:$6$ojG/9FeuWx8IaMfW$SDx90Xitag0UP7KJ0/vn4RnAA8T0zpcXyuBo2Kv4sVC35oKcwdNi8W1EPe2okndtCdIX8w5nFKE7Da/EXdN8D1:12417:0:99999:7:::

添加用户:useradd(adduser) [选项] [用户帐号]

选项中-c 可以添加一些备注信息,显示在/etc/passwd备注栏中

     -u 指定用户ID

     -g制定用户群组

许多参数可以通过man useradd查看

设置密码:passd [选项] 用户帐号

     -d 删除帐号密码

     -l 锁定已经命名的帐号名称

     -x 最大密码使用时间

早先的密码经过加密存放到/ect/passwd第二个字段中,为了防止加密现在将其放到/etc/shadow下,这个/etc/shadow只有root权限才能查看,这就是最新的shadow password功能,以前/etc/passwd的第二个字段设置为一个x了。

删除用户:userdel [选项] [用户帐号]

     -r 删除用户主目录及其目录中的所有信息

     -f 不请求删除

一般删除用户要加上-r因为如果不使用参数-r则之删除帐号而用户目录还存在。

修改用户:usermod [选项] 用户帐号

修改用户的信息,选项一般和新建用户的参数差不多,对其进行修改

修改用户密码过期信息:chage [选项] 用户帐号

    -l 列出用户以及密码有效期

    -m 密码可更改最小的天数

    -M 密码保持有效期最大天数

    -E 密码到期的日期

组管理

用户可以属于一个或多个组,但是只能有一个作为用户的主属组,其他组被成为次属组。Linux中组也分为root组、系统组、用户组

组的基本信息在/etc/group下,组的密码信息在/etc/gshadow中

/etc/group字段信息

【群组名称:群组密码:群组ID:组里面的成员】

root:x:0:

/etc/gshadow下字段

【用户组名称:用户组密码:用户组管理员名称:成员列表】

working:!::

添加用户组:groupadd [选项] 组名称

删除用户组:groupdel [选项] 组名称

注意:在删除组的之前需要将组内的用户userdel后才能删除用户组,并且,只要用户组之下有一个在线用户就不能删除用户组、

修改用户组:groupmod [选项] 组名称

更改组的GID或名称

    -g 更改GID

    -n 更改组名称

管理用户组:gpasswd [选项] 组名称

管理用户组,为用户组添加密码

    -a 添加用户到用户组

    -d 从组中删除用户

    -A 制定管理员

    -M 设置组成员列表

    -r 删除密码

切换组:newgrp [-] 组名称

当一个用户隶属于多个用户组的时候,可能需要切换用户组,以获得该组的权限可以使用newgrp。如果要切换的组中并没有该用户,则需要输入组密码,然后该用户可以暂时拥有该组的权限,所以gpasswd设置密码的原因就在这里

刚查看用户id的时候,可以看到

#id yang

uid=510(yang) gid=503(testgroup) groups=503(testgroup),521(yang)

这个用户的UID以及用户组ID最前面的gid是默认用户组id,表示当前用户拥有这个组的权限

这时候通过 newgrp - yang切换到另一个组中

用户查询

/var/run/utmp 保存当前正在本系统中的用户信息

/var/log/wtmp 保存的是登录过本系统的用户信息

这两个都是二进制文件,无法查看。需要借助who、w、users、last、ac使用这两个文件包括的信息

who 查看utmp文件并报告当前登录的每个用户

who [选项]

如果不加参数,则列出用户帐号 登录终端 登录时间 何处登录等

w 查询utmp当前用系统用户以及用户所运行的进程信息,他相对who更加科学详细。

w [参数]

-h 不显示标题

-u 列出当前进程和CPU

-s 使用短模式,不显示登录时间JCPU和PCPU时间

其中w时候所列出的第一条信息分别是:

当前时间 系统启动到现在时间,登录用户数目,系统在1秒、5秒、15秒的平均负载

 10:54:13 up  1:49,  2 users,  load average: 0.09, 0.14, 0.13

查看id:id [参数] [用户名]

查看用户及其用户组id

显示当前终端上的用户名:whoami [选项]

由于linux是多用户操作,可能多个用户同时进入系统工作,要是有些用户忘记注销就离开了,可以通过whoami进行查看

last命令:查看当前与过去登录系统用户的相关信息直接使用列出/var/log/wtmp文件,

last [选项] [帐号名称...] [终端机编号...]

-d 将主机名称显示为ip地址

-n 设置显示行数

查看所有用户最近登录的情况,显示上次登录系统的用户,从/var/log/lastlog读取,读出用户最后登录时间和终端地址

last [参数]

-b 显示早于n天前的最近登录

-t 显示n天后的最近登录信息

-u 指定用户最近登录记录

切换用户

su命令可以在不注销当前用户前提下切换到另一个目录,root用户可以直接切换到普通用户下,普通用户在切换到root或其他用户下需要输入口令,直接输入su是默认切换到root目录下

su [参数] [用户帐号]

-l 改变身份时,同时改变工作目录

-c 执行一个命令,然后退出切换

- 完全切换到另一个目录

-m,-p 切换身份保留当前环境变量

-s 制定shell

使用su存在安全隐患,因为需要将root或其他用户的口令告诉当前用户,所以有了sudo命令

sudo可以让用户以其他身份执行指定的命令,默认是root。在/etc/sudoers中设置可以执行sudo命令的用户。如果未被授权的用户使用会发出警告的邮件给管理员。用户使用sudo时,需要先输入当前用户的口令,然后有5分钟有效期限,过了期限需要重新输入口令。sudo可以提供日志,告诉用户使用sudo命令做过什么。

sudo [参数] [用户名]

-H 将HOME的环境变量设为新HOME的环境变量

-k 技术密码有效期,下次需要输入密码

-l 列出可以执行和无法执行的命令

-s 制定shell

-u 用户 指定用户身份,如果不加此参数默认是root

配置/etc/sudoers设置允许使用sudo命令用户,在/etc/sudoers下

root    ALL=(ALL)       ALL

work    ALL=(ALL)       ALL

其中第一个是授权用户,第一个ALL是代表主机,(ALL)代表允许切换的用户,最后一个ALL是指使用sudo后可以执行的命令
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息