什么是用户?
用户须要用帐号来访问系统,服务和信息。系统中每一个进程都使用一个特定的用户运行。每一个文件都属于一个特定的额用户全部。
对文件和目录的访问会收到用户的限制。根据运行进程相关联的用户可肯定该进程能够访问的文件和目录
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
得到超级用户的访问权限,一超级用户的身份运行命令管理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]#