运维基础-用户和组管理

什么是用户?
用户须要用帐号来访问系统,服务和信息。系统中每一个进程都使用一个特定的用户运行。每一个文件都属于一个特定的额用户全部。
对文件和目录的访问会收到用户的限制。根据运行进程相关联的用户可肯定该进程能够访问的文件和目录

id命令用于显示当前已登陆用户的信息。也能够将用户名做为id命令的参数,来获取她的基本信息linux

[root@localhost ~]# id
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]# id root
uid=0(root) gid=0(root) 组=0(root)

若要查看与某一文件或目录相关联的用户,可使用ls -l命令(第三列显示用户名)算法

[root@localhost ~]# ls -l /tmp/
总用量 892
-rw-r--r--. 1 root  root    1596 8月  20 19:21 anaconda.log
drwx------. 2 zhang zhang     25 8月  21 09:49 firefox_zhang
drwxr-xr-x. 2 root  root      18 8月  20 19:07 hsperfdata_root
-rw-r--r--. 1 root  root     581 8月  20 19:21 ifcfg.log
-rwx------. 1 root  root     836 8月  20 19:18 ks-script-DypRd9
-rw-r--r--. 1 root  root       0 8月  20 19:20 packaging.log
-rw-r--r--. 1 root  root       0 8月  20 19:20 program.log
-rw-r--r--. 1 root  root       0 8月  20 19:20 sensitive-info.log

使用ps命令能够查看进程信息。默认仅显示当期shell中的进程。添加a选项能够查看与终端相关的全部进程。若要查看进程相关联的用户,在命令中加u选项shell

[root@localhost ~]# ps au
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      12565  0.1  2.3 324024 44344 tty1     Ssl+ 02:55   1:12 /usr/bin/X :0 -background none -no
zhang     55253  0.0  0.1 116688  2932 pts/0    Ss   05:57   0:00 bash
root      55322  0.0  0.1 220852  3328 pts/0    S    05:57   0:00 su
root      55330  0.0  0.1 116692  3248 pts/0    S+   05:57   0:00 bash
root      63929  0.0  0.1 116576  3388 pts/1    Ss   14:08   0:00 -bash
root      64171  0.0  0.0 151064  1816 pts/1    R+   14:22   0:00 ps au

以上命令的输出是使用名称来显示用户,可是操做系统内部是按照UID来标识用户的。默认状况下,本地用户名称和编号的映射被存储在/etc/passwd中centos

username:password:UID:GID:GECOS:/home/dir:shell
username:是UID到名称的一种映射,便于用户使用
password:之前是以加密格式保存密码的位置,如今密码存在在/etc/shadow中
UID:用户的ID,标识用户的标号
GID:组的ID
GECOS该字段能够是任意文本,一般包含用户的实际姓名
/home/dir 用户的我的数据和配置文件所处的位置
shell 用户登陆是运行的程序

什么是组:bash

与用户同样,组也有本身的名称和编号(GID)。本地组在/etc/group中定义app

组能够用来协助管理者访问tcp

管理本地用户帐号

建立,修改,锁定,删除,本地定义的用户帐号ui

useradd建立用户加密

不带选项运行时,useradd username会为/etc/passwd 中的全部字段设置合理的默认值,在默认状况下,useradd命令不会设置任何有效的密码,用户必需要等设置了密码才能够登陆centos7

useradd --help 能够显示用于覆盖默认值的基本选项,在多数状况下,相同的选项能够用户usermod命令,能够对现有的用户进行修改

usermod修改现有用户

usermod --help 能够显示用户修改帐号的基本选项,一些常见的选项包括

[root@localhost ~]# usermod --help
用法:usermod [选项] 登陆

选项:
  -c, --comment 注释            GECOS 字段的新值
  -d, --home HOME_DIR           用户的新主目录
  -e, --expiredate EXPIRE_DATE  设定账户过时的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE       过时 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               强制使用 GROUP 为新主组
  -G, --groups GROUPS           新的附加组列表 GROUPS
  -a, --append GROUP            将用户追加至上边 -G 中提到的附加组中,
                                并不从其它组中删除此用户
  -h, --help                    显示此帮助信息并推出
  -l, --login LOGIN             新的登陆名称
  -L, --lock                    锁定用户账号
  -m, --move-home               将家目录内容移至新位置 (仅于 -d 一块儿使用)
  -o, --non-unique              容许使用重复的(非惟一的) UID
  -p, --password PASSWORD       将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         chroot 到的目录
  -s, --shell SHELL             该用户账号的新登陆 shell
  -u, --uid UID                 用户账号的新 UID
  -U, --unlock                  解锁用户账号
  -Z, --selinux-user  SEUSER       用户帐户的新 SELinux 用户映射

userdel删除用户

userdel username能够将用户从/etc/passwd 中删除,可是默认状况下保留的家目录不变

userdel -r username   同事删除用户的家目录

id显示用户信息,包括用户的UID和组成员

id username 将显示username的用户信息,包括用户UID编号和组成成员

[root@localhost ~]# id zhang
uid=1000(zhang) gid=1000(zhang) 组=1000(zhang),10(wheel)

passwd设置密码

passwd username可用于设置用户的初始密码或者更改该用户的密码

root用户能够将密码设置为任何值,即便密码不符合规范,也是会成功更新

普通用户的长度必须至少8个字符,切不能够是词语,用户名或者之前使用过的类似的密码

UID范围:

特定UID编号和编号范围可供RHEL用户特殊的目的

UID 0始终分配至超级用户root

UID 1-999 是系统用户,

UID 1000+可供分配给普通用户的范围

练习:

添加用户alex

[root@localhost ~]# useradd alex

经过检查/etc/passwd 文件确认alex已经添加

[root@localhost ~]# tail -2 /etc/passwd
zhang:x:1000:1000:zhang:/home/zhang:/bin/bash
alex:x:1001:1001::/home/alex:/bin/bash

使用passwd命令初始化alex的密码

[root@localhost ~]# passwd alex 
更改用户 alex 的密码 。
新的 密码:
从新输入新的 密码:
passwd:全部的身份验证令牌已经成功更新。

管理本地组帐号

建立,修改,删除本地定义的组帐户

管理补充组:组必须存在后,用户才能添加到其中

groupadd 建立组

groupadd groupname 若是不带选项,将使用/etc/login.defs文件中指定范围内的下一个可用GID

-g GID用户指定具体的GID

-r 选项将使用/ect/login.defs文件中有效系统GID编号范围内的GUID建立系统组

groupmod 修改现有的组

-n 选项用户将现有的组名的GID映射,指定到新的名称

-g 用于指定新的GID

groupdel删除组

若是组是任意现有用户的主要组,不能被删除,与userdel同样,先检查全部的文件系统,确保没有任何遗留由该组拥有的任何文件

usermod变动组成员

组成员能够经过用户管理进行控制,经过usermod -g groupname更改用户的主要组

经过usermod -aG groupname username将用户添加到补充组

能够分配一个普通用户到管理员组

[root@localhost ~]# gpasswd -A alex wheel

不像usermod命令必需要root运行,gpasswd可让一个普通用户运行,可是用户仅可以添加和删除除他们以管理员分配的组成员

[root@localhost ~]# gpasswd -a zhang wheel
正在将用户“zhang”加入到“wheel”组中

练习:

建立名为shakespeare,组ID为30000的补充组

[root@localhost ~]# groupadd -g 30000 shakespeare

建立名为artists的补充组

[root@localhost ~]# groupadd artists

查看/etc/group文件,已肯定shakespeare和artists已经添加成功

[root@localhost ~]# tail -5 /etc/group
tcpdump:x:72:
zhang:x:1000:
alex:x:1001:
shakespeare:x:30000:
artists:x:30001:

将alex用户添加到做为补充组的shakespeare中

[root@localhost ~]# usermod -G shakespeare alex

确认已使用id命令添加了alex

[root@localhost ~]# id alex
uid=1001(alex) gid=1001(alex) 组=1001(alex),30000(shakespeare)

用户密码管理

在shadow文件中手工锁定帐号,设置密码时效策略

阴影密码和密码策略

在很早之前,加密的密码被存储在刻度的/etc/passwd文件中,

如今密码哈希中存储的三段信息

$1$gCjLa2/Z$6Pu0EK0AzfCjxjv2hoL0B/
一、1.哈希算法。数字1表示MD5哈希,数字6表示SHA-512哈希
二、gCjLa2/Z,用户加密哈希的加密盐,使用加密盐能够防止两个密码在相同的用户在/etc/shadow中拥有相同的条目
三、6Pu0EK0AzfCjxjv2hoL0B/ 表示已经加密过的哈希

用户尝试登录时,系统在/etc/shadow中查询用户的条目,将用户的salt和键入的未加密密码组合,在使用指定的哈希算法加密。若是结果与已知加密哈希匹配,则用户输入了正确的密码,反之输入错误

* centos7 支持两种强大的新的密码哈希算法SHA-256和SHA-512.

/etc/shadow采用以冒号分割的9个字段

name:password:lastchange:minage:maxage:warning:inactive:expire:blank
name:登陆名称,必须是系统中的有效帐户名
password:已加密密码,密码字段的开头为感叹号时,表示改密码已经被锁定
lastchange:最近一次修改密码的日期
minage:能够更改密码前的最少天数
maxage:能够更改密码前的最多天数
warning:密码即将到期的警告期,表示为天数
inactive:帐户在密码到期后保持活动的天数
expire:帐户到期日期,以距离1970年1月1日的天数表示
blank:预留字段,供之后使用
chage -m 0 -M 90 -W 7 -I 14 username
chage -d 0 username 将强制在下次登陆时更新密码
chage -l username 将列出用户名的当前设置
chage -E YYYY-MM-DD 将在指定日期后帐户过时

注意:

date命令能够用来计算将来的日期

[root@localhost ~]# date
2018年 08月 22日 星期三 15:20:02 CST
[root@localhost ~]# date -d "+45days"
2018年 10月 06日 星期六 15:20:05 CST

限制访问:

经过chage命令能够设置帐户过时,到了该日期没法以交互方式登陆系统。usermod命令能够经过-L参数锁定帐户

[root@localhost ~]# usermod -L alex

用户离开公司时,管理员能够经过usermod命令锁定帐户并使其过时

必须使用距离1970年1月1日的天数来指定

[root@localhost ~]# usermod -L -e 1 alex

能够经过usermod -U username进行解锁,若是帐户已通过期,务必也要更改到期日期

* 百度查找nologin shell

经过su sudo给普通用户提权

得到超级用户的访问权限,一超级用户的身份运行命令管理Linux系统

root用户

大多数操做系统具备某种类型的超级用户,即具备系统所有权限的用户,在centos7中,该用户就是root用户。该用户的特权高于文件系统的一半特权。用户管理系统

要执行安装或者删除软件操做,以及管理目录等任务,必须将特权升到root用户

大多数设备都仅受root控制,可是也有些设备并不是如此。例如usb等移动设备通常用户就能够控制

无限制的特权也会带来不少问题。root用户具备破坏系统的无限制权限:删除文件和目录,删除用户帐户,添加后门等。若是root帐户泄露,则其余人就有可能拥有系统的管理控制权限

警告:

在Linux系统上建议不要直接以root身份登陆,若是须要神犬能够用su或者sudo

利用su切换用户

su命令可让用户切换至另外一个帐号,若是没有指定用户名,则使用root帐户,当普通用户调用时,系统将提示输入要切换的目标帐号的密码:

而root用户调用时,不须要密码

[root@localhost ~]# su zhang
[zhang@localhost root]$ id zhang
uid=1000(zhang) gid=1000(zhang) 组=1000(zhang),10(wheel)
[zhang@localhost root]$ su
密码:
[root@localhost ~]# id root
uid=0(root) gid=0(root) 组=0(root)

命名 su username会启动non-login shell ,而命令su -username则启动login shell,

主要的区别是:su - 会将shell环境设置为该用户身份彻底同样,而su仅以该用户身份使用当前环境变量设置启动shell。

练习:

锁定alex帐户

[root@localhost ~]# usermod -L alex

尝试以alex用户登陆

[root@localhost ~]# su - alex

解锁alex用户

[root@localhost alex]# usermod  -U alex

更改alex密码策略,没90天须要更改密码

[root@localhost alex]# chage -M 90 alex 
[root@localhost alex]# chage -l alex
最近一次密码修改时间                    :8月 22, 2018
密码过时时间                    :11月 20, 2018
密码失效时间                    :从不
账户过时时间                        :1月 02, 1970
两次改变密码之间相距的最小天数        :0
两次改变密码之间相距的最大天数        :90
在密码过时以前警告的天数    :7

肯定将来180天后的日期

[root@localhost alex]# date -d "+180days"
2019年 02月 18日 星期一 15:42:16 CST

设置用户在该日期过时

[root@localhost alex]# chage -E 2020-12-12 alex
[root@localhost alex]# chage -l alex
最近一次密码修改时间                    :8月 22, 2018
密码过时时间                    :11月 20, 2018
密码失效时间                    :从不
账户过时时间                        :12月 12, 2020
两次改变密码之间相距的最小天数        :0
两次改变密码之间相距的最大天数        :90
在密码过时以前警告的天数    :7
[root@localhost alex]# 
相关文章
相关标签/搜索