用户和组的基本概念

  • 系统上运行的进程都是作为特定用户运行的
  • 每个文件为特定的用户所拥有,访问文件或目录都要受到用户的限制
  • 进程可以访问那些文件和目录有该进程相关联的用户确定

查看用户列表:cat /etc/passwd

  1. [root@localhost ~]# cat /etc/passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. bin:x:1:1:bin:/bin:/sbin/nologin
  4. daemon:x:2:2:daemon:/sbin:/sbin/nologin
  5. adm:x:3:4:adm:/var/adm:/sbin/nologin
  6. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  7. sync:x:5:0:sync:/sbin:/bin/sync
  8. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  9. halt:x:7:0:halt:/sbin:/sbin/halt
  10. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  11. operator:x:11:0:operator:/root:/sbin/nologin
  12. games:x:12:100:games:/usr/games:/sbin/nologin
  13. ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
  14. nobody:x:99:99:Nobody:/:/sbin/nologin
  15. systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
  16. dbus:x:81:81:System message bus:/:/sbin/nologin
  17. polkitd:x:999:998:User for polkitd:/:/sbin/nologin
  18. sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
  19. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  20. chrony:x:998:996::/var/lib/chrony:/sbin/nologin

查看当前登录用户信息:id

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

查看文件权限、属主信息:ls -l 或 ll

  1. [root@localhost ~]# ll
  2. 总用量 4
  3. -rw-------. 1 root root 1241 9 17 2019 anaconda-ks.cfg

查看运行进程的username:ps aux |less
-a 显示所用进程
-u 显示用户和其他信息
-x 显示没有控制终端的进程

  1. [root@localhost ~]# ps aux |less
  2. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  3. root 1 0.1 0.3 193564 6572 ? Ss 11:02 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
  4. root 2 0.0 0.0 0 0 ? S 11:02 0:00 [kthreadd]
  5. root 3 0.0 0.0 0 0 ? S 11:02 0:00 [ksoftirqd/0]
  6. root 5 0.0 0.0 0 0 ? S< 11:02 0:00 [kworker/0:0H]
  7. ...

和用户组相关的一些文件

文件名 用途
/etc/passwd 用户信息
/etc/shadow 密码信息
/etc/group 组的信息

系统约定

uid: 0 特权用户 1-999 系统用户 1000+ 普通用户

用户管理

命令 用途
groupadd 用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。
groupdel 删除一个工作组
useradd 建立用户账号
passwd 设定密码
userdel 删除用户
usermod 修改用户账号的各项设定

用户组

  1. [root@localhost ~]# groupadd user01
  2. [root@localhost ~]# groupadd user02 -g 2000
  3. [root@localhost ~]# grep 'user02' /etc/group
  4. user02:x:2000:
  5. [root@localhost ~]# groupdel user02

groupadd -g:指定新建工作组的id

用户

  • useradd 常用参数

    • -u:指定uid
    • -g:指定gid
    • -c:用户注释信息
    • -d:家目录
    • -s:指定shell
    • -G:附加组
    • -r:创建系统用户
      1. [root@localhost ~]# useradd user01
      2. # 未指定该用户的主组
      3. # 未指定该用户的附加组
      4. # 未指定用户的HOME
      5. # 未指定用户的SHELL
      6. # 未指定用户的UID
      7. [root@localhost ~]# grep 'user01' /etc/passwd /etc/shadow /etc/group
      8. /etc/passwd:user01:x:1000:1000::/home/user01:/bin/bash
      9. /etc/shadow:user01:!!:18605:0:99999:7:::
      10. /etc/group:user01:x:1000:
      注:如果创建一个用户时,未指定任何选项,系统会创建一个和用户名相同的组作为用户的 Primary Group
      1. [root@localhost ~]# useradd user02 -u 503 # 创建用户user02,指定uid
      2. [root@localhost ~]# useradd user03 -d /user033 # 创建用户user03,指定家目录
      3. [root@localhost ~]# useradd user04 -s /sbin/nologin # 创建用户并指定shell
      4. [root@localhost ~]# useradd user05 -G hr,it,fd # 创建用户,指定附加组
      5. [root@localhost ~]# useradd user06 -u 4000 -s /sbin/nologin
      注意:-g -G 只能在useradd时使用,并且指定的组必须已存在
  • 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

  1. - passwd
  2. ```bash
  3. [root@localhost ~]# passwd user01
  4. 更改用户 user01 的密码 。
  5. 新的 密码:
  6. 重新输入新的 密码:
  7. passwd:所有的身份验证令牌已经成功更新。
  8. # root用户可以直接设置普通用户密码
  9. # 普通用户必须要提供原密码,才可以修改自己密码
  10. 常用选项:
  11. -n mindays:指定最短使用期限
  12. -x maxdays:最大使用期限
  13. -w warndays:提前多少天开始警告
  14. -i inactivedays:非活动期限
  15. --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

  1. - gpasswd:将一个用户添加到组中或从组中删除
  2. - -a:将用户添加到组
  3. - -d:将组中成员删除
  4. - -A:指定组的管理员
  5. - -M:指定组成员,与-A类似
  6. - -r:删除密码
  7. ```bash
  8. [root@localhost ~]# gpasswd -M user02,user03 fd
  9. [root@localhost ~]# id user02
  10. uid=1001(user02) gid=1005(user02) 组=1005(user02),1002(fd)
  11. [root@localhost ~]# id user03
  12. uid=1002(user03) gid=1006(user03) 组=1006(user03),1002(fd)
  13. [root@localhost ~]# gpasswd -d user02 fd
  14. 正在将用户“user02”从“fd”组中删除
  15. [root@localhost ~]# id user02
  16. uid=1001(user02) gid=1005(user02) 组=1005(user02)

shell

shell是用户登录系统时第一个运行的程序
/sbin/nologin :无法登录系统的用户,仅作为运行进程、访问FTP的安全用户,黑客无法通过这个用户攻击系统。
/bin/bash :系统登陆,实现管理系统

  1. ## 查看系统允许登录的用户
  2. [root@localhost ~]# grep 'bash$' /etc/passwd
  3. root:x:0:0:root:/root:/bin/bash
  4. user01:x:1000:1000::/home/user01:/bin/bash
  5. user02:x:1001:1005::/home/user02:/bin/bash

login.defs

useradd参照文件
创建用户时对用户的一些限制,对root用户无效

  1. [root@localhost ~]# vim /etc/login.defs
  2. MAIL_DIR /var/spool/mail
  3. PASS_MAX_DAYS 99999
  4. PASS_MIN_DAYS 0
  5. PASS_MIN_LEN 5
  6. PASS_WARN_AGE 7
  7. CREATE_HOME yes
  8. ENCRYPT_METHOD SHA512
  9. [root@localhost ~]# vim /etc/default/useradd
  10. # useradd defaults file
  11. GROUP=100
  12. HOME=/home
  13. INACTIVE=-1
  14. EXPIRE=
  15. SHELL=/bin/bash
  16. SKEL=/etc/skel
  17. CREATE_MAIL_SPOOL=yes
  1. [root@localhost ~]# chage -h
  2. 用法:chage [选项] 登录
  3. 选项:
  4. -d, --lastday 最近日期 将最近一次密码设置时间设为“最近日期”
  5. -E, --expiredate 过期日期 将帐户过期时间设为“过期日期”
  6. -h, --help 显示此帮助信息并推出
  7. -I, --inactive INACITVE 过期 INACTIVE 天数后,设定密码为失效状态
  8. -l, --list 显示帐户年龄信息
  9. -m, --mindays 最小天数 将两次改变密码之间相距的最小天数设为“最小天数”
  10. -M, --maxdays 最大天数 将两次改变密码之间相距的最大天数设为“最大天数”
  11. -R, --root CHROOT_DIR chroot 到的目录
  12. -W, --warndays 警告天数 将过期警告天数设为“警告天数”
  13. [root@localhost ~]# chage -m 0 -M 90 -W 7 -I 14 user01
  14. [root@localhost ~]# useradd user01
  15. [root@localhost ~]# echo 123456 |passwd --stdin user01
  16. 更改用户 user01 的密码
  17. passwd:所有的身份验证令牌已经成功更新。
  18. [root@localhost ~]# chage -d 0 user01 # 强制用户在下次登录的时候换密码