用户和组的基本概念
- 系统上运行的进程都是作为特定用户运行的
- 每个文件为特定的用户所拥有,访问文件或目录都要受到用户的限制
- 进程可以访问那些文件和目录有该进程相关联的用户确定
查看用户列表:cat /etc/passwd
[root@localhost ~]# cat /etc/passwdroot:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinsystemd-network:x:192:192:systemd Network Management:/:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinpolkitd:x:999:998:User for polkitd:/:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologinchrony:x:998:996::/var/lib/chrony:/sbin/nologin
查看当前登录用户信息:id
[root@localhost ~]# iduid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
查看文件权限、属主信息:ls -l 或 ll
[root@localhost ~]# ll总用量 4-rw-------. 1 root root 1241 9月 17 2019 anaconda-ks.cfg
查看运行进程的username:ps aux |less
-a 显示所用进程
-u 显示用户和其他信息
-x 显示没有控制终端的进程
[root@localhost ~]# ps aux |lessUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.1 0.3 193564 6572 ? Ss 11:02 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0.0 0.0 0 0 ? S 11:02 0:00 [kthreadd]root 3 0.0 0.0 0 0 ? S 11:02 0:00 [ksoftirqd/0]root 5 0.0 0.0 0 0 ? S< 11:02 0:00 [kworker/0:0H]...
和用户组相关的一些文件
| 文件名 | 用途 |
|---|---|
| /etc/passwd | 用户信息 |
| /etc/shadow | 密码信息 |
| /etc/group | 组的信息 |
系统约定
uid: 0 特权用户 1-999 系统用户 1000+ 普通用户
用户管理
| 命令 | 用途 |
|---|---|
| groupadd | 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。 |
| groupdel | 删除一个工作组 |
| useradd | 建立用户账号 |
| passwd | 设定密码 |
| userdel | 删除用户 |
| usermod | 修改用户账号的各项设定 |
用户组
[root@localhost ~]# groupadd user01[root@localhost ~]# groupadd user02 -g 2000[root@localhost ~]# grep 'user02' /etc/groupuser02:x:2000:[root@localhost ~]# groupdel user02
用户
useradd 常用参数
- -u:指定uid
- -g:指定gid
- -c:用户注释信息
- -d:家目录
- -s:指定shell
- -G:附加组
- -r:创建系统用户
注:如果创建一个用户时,未指定任何选项,系统会创建一个和用户名相同的组作为用户的 Primary Group[root@localhost ~]# useradd user01# 未指定该用户的主组# 未指定该用户的附加组# 未指定用户的HOME# 未指定用户的SHELL# 未指定用户的UID[root@localhost ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group/etc/passwd:user01:x:1000:1000::/home/user01:/bin/bash/etc/shadow:user01:!!:18605:0:99999:7:::/etc/group:user01:x:1000:
注意:-g -G 只能在useradd时使用,并且指定的组必须已存在[root@localhost ~]# useradd user02 -u 503 # 创建用户user02,指定uid[root@localhost ~]# useradd user03 -d /user033 # 创建用户user03,指定家目录[root@localhost ~]# useradd user04 -s /sbin/nologin # 创建用户并指定shell[root@localhost ~]# useradd user05 -G hr,it,fd # 创建用户,指定附加组[root@localhost ~]# useradd user06 -u 4000 -s /sbin/nologin
userdel ```bash
删除用户user02,但是不删除用户的home和mail
[root@localhost ~]# userdel user02 [root@localhost ~]# ll -d /home/user02 drwx———. 2 1001 1001 62 12月 9 12:45 /home/user02 [root@localhost ~]# ll /var/spool/mail/user02 -rw-rw——. 1 1001 mail 0 12月 9 12:45 /var/spool/mail/user02
删除用户user01,并且同时删除用户的home和mail
[root@localhost ~]# userdel -r user01
- passwd```bash[root@localhost ~]# passwd user01更改用户 user01 的密码 。新的 密码:重新输入新的 密码:passwd:所有的身份验证令牌已经成功更新。# root用户可以直接设置普通用户密码# 普通用户必须要提供原密码,才可以修改自己密码常用选项:-n mindays:指定最短使用期限-x maxdays:最大使用期限-w warndays:提前多少天开始警告-i inactivedays:非活动期限--stdin:从标准输入接收用户密码
- usermod
```bash
修改用户的附加组(把用户添加到附加组,会覆盖掉之前的附加组)
[root@localhost ~]# usermod -G hr user01 [root@localhost ~]# grep ‘user01’ /etc/group user01:x:1000: hr:x:1001:user01 [root@localhost ~]# usermod -G fd,it user01 [root@localhost ~]# grep ‘user01’ /etc/group user01:x:1000: fd:x:1002:user01 it:x:1003:user01
添加用户到附加组(不会覆盖之前用户的附加组)
[root@localhost ~]# usermod -aG sale user01 [root@localhost ~]# grep ‘user01’ /etc/group user01:x:1000: fd:x:1002:user01 it:x:1003:user01 sale:x:1004:user01
修改用户的shell
[root@localhost ~]# usermod -s /sbin/nologin user03
- gpasswd:将一个用户添加到组中或从组中删除- -a:将用户添加到组- -d:将组中成员删除- -A:指定组的管理员- -M:指定组成员,与-A类似- -r:删除密码```bash[root@localhost ~]# gpasswd -M user02,user03 fd[root@localhost ~]# id user02uid=1001(user02) gid=1005(user02) 组=1005(user02),1002(fd)[root@localhost ~]# id user03uid=1002(user03) gid=1006(user03) 组=1006(user03),1002(fd)[root@localhost ~]# gpasswd -d user02 fd正在将用户“user02”从“fd”组中删除[root@localhost ~]# id user02uid=1001(user02) gid=1005(user02) 组=1005(user02)
shell
shell是用户登录系统时第一个运行的程序
/sbin/nologin :无法登录系统的用户,仅作为运行进程、访问FTP的安全用户,黑客无法通过这个用户攻击系统。
/bin/bash :系统登陆,实现管理系统
## 查看系统允许登录的用户[root@localhost ~]# grep 'bash$' /etc/passwdroot:x:0:0:root:/root:/bin/bashuser01:x:1000:1000::/home/user01:/bin/bashuser02:x:1001:1005::/home/user02:/bin/bash
login.defs
useradd参照文件
创建用户时对用户的一些限制,对root用户无效
[root@localhost ~]# vim /etc/login.defsMAIL_DIR /var/spool/mailPASS_MAX_DAYS 99999PASS_MIN_DAYS 0PASS_MIN_LEN 5PASS_WARN_AGE 7CREATE_HOME yesENCRYPT_METHOD SHA512[root@localhost ~]# vim /etc/default/useradd# useradd defaults fileGROUP=100HOME=/homeINACTIVE=-1EXPIRE=SHELL=/bin/bashSKEL=/etc/skelCREATE_MAIL_SPOOL=yes
[root@localhost ~]# chage -h用法:chage [选项] 登录选项:-d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”-E, --expiredate 过期日期 将帐户过期时间设为“过期日期”-h, --help 显示此帮助信息并推出-I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态-l, --list 显示帐户年龄信息-m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”-M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”-R, --root CHROOT_DIR chroot 到的目录-W, --warndays 警告天数 将过期警告天数设为“警告天数”[root@localhost ~]# chage -m 0 -M 90 -W 7 -I 14 user01[root@localhost ~]# useradd user01[root@localhost ~]# echo 123456 |passwd --stdin user01更改用户 user01 的密码 。passwd:所有的身份验证令牌已经成功更新。[root@localhost ~]# chage -d 0 user01 # 强制用户在下次登录的时候换密码
