第五章 管理本地用户和组


学习目标:

理解用户和组在Linux系统上的工作机制

掌握使用系统管理员的身份执行命令

掌握创建、修改、锁定、删除本地用户

掌握创建、修改、删除本地用户组

掌握通过人工或者通过密码策略自动锁定指定账号




5.1 用户和组的工作机制


相关命令: id、 ls -l 、 ps au

相关文件: /etc/passwd , /etc/group


username:password:UID:GID:GECOS:/home/dir:shell


groupname:password:GID:list,of,users,in,this,group


用户uid的分类:

0 管理员

1-200 系统用户,由系统静态分配给系统进程使用

201-999 系统用户,这些用户在系统上一般不会拥有文件,他们是动态地指定给安装了的软件作为运行身份。

1000+   常规用户



需要了解的一些shell:

/bin/bash 系统默认shell

/sbin/nologin 非交互式shell: 禁止用户登陆的作用



=


5.2 获得管理员权限


相关命令: 

su [-] <username>

sudo  <command>


su 和 sudo的区别



5.3 管理本地账号


相关命令: useradd ,usermod ,userdel,passwd , groupadd ,groupmod,gpasswd,groupdel

相关文件: /etc/login.defs  , /etc/passwd , /etc/shadow , /etc/gpasswd , /etc/gshadow

需要掌握: 创建,修改,删除用户、用户组,修改用户组身份,设定用户密码


添加用户前需要确定:

确定用户的默认组是否有特殊要求

确定用户是否允许登陆

确定用户的密码策略

确定用户的有效期

确定用户的uid是否有特殊要求


useradd,usermod 的参数:

-u  指定用户的uid

-c  添加用户注释

-g  指定用用户的默认组

-G  指定用户的附加组

-a  追加更多的附加组,必须和-G使用: -aG

-d  指定用户的家目录

-m  家目录迁移,必须和-d一起使用

-s  指定用户默认shell

-L  锁定用户

-U  解锁用户


groupadd命令的需要掌握的参数:

-g

groupmod命令的需要掌握的参数:

-g

-n




练习: 考试必考知识点


建立用户juliet, romeo,  hamlet,reba, dolly, and elvis

建立用户组,组ID要求为30000,组名为shakespeare

建立用户组,组名为artists

要求把shakespeare作为用户juliet, romeo和 hamlet的附加组

要求把artists作为用户reba, dolly 和 elvis的附加组

要求artists同时作为用户romeo的另外一个附加组(之前的附加组还继续使用)



5.4 管理用户密码


相关文件: /etc/passwd,/etc/shadow

相关命令: chage,usermod


chage命令的参数:

-l 显示帐户年龄信息

-E   # chage -E 2014-12-28 romeo

-d   # -d 0 下次登陆系统强制修改密码

-M 将两次改变密码之间相距的最大天数设为“最大天数”

-m   将两次改变密码之间相距的最小天数设为“最小天数”

-W 将过期警告天数设为“警告天数”

-I 过期 INACTIVE 天数后,设定密码为失效状态


练习: 在server虚拟机上完成。  当romeo用户第一次登陆系统的时候(默认登陆密码为romeo),必须要求强制更改密码。密码有效期为90天,账号将在180天后过期



实验: 重置server虚拟机,然后在上面完成操作

新建用户sspade, bboop, and dtracy,密码有效期为30天,默认密码都为redhat

新建用户组consultants,组ID必须为40000,并且该组作为上面三个用户的附加组

把上述三个用户的账号有效期设定为90天后

bboop用户的密码有效期更改为15天

所有用户在第一登陆的时候都必须强制修改密码


实验完毕,提交# lab localusers grade 




======================================================================================================================



上课笔记 :


5.1

[student@localhost kuang]$ id

uid=1000(student) gid=1000(student) groups=1000(student),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

一个用户可以有多个组



[student@localhost kuang]$ ls -l 

total 4

-rw-rw-r--. 1 student student 51 May 20 11:58 date

-rw-rw-r--   第一个三位,表示这个用户的权限,第二个三位是这个组,但不是这个文件拥有的用户的权限,第三个三位是表示如果是其他用户是什么 权限 。


显示瞬间进程

[student@localhost kuang]$ ps au

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root       1005  0.9  4.6 219292 46376 tty1     Ssl+ 11:52   0:11 /usr/bin/Xorg 

root       1480  0.0  0.0 110004   860 ttyS0    Ss+  11:52   0:00 /sbin/agetty -

student    2596  0.0  0.2 116260  2912 pts/0    Ss   11:53   0:00 /bin/bash

student    3476  0.0  0.1 123356  1384 pts/0    R+   12:12   0:00 ps au




vim /etc/passwd


username:password:UID:GID:GECOS:/home/dir:shell

root:x:0:0:root:/root:/bin/bash


student:x:1000:1000:Student User:/home/student:/bin/bash



[student@localhost kuang]$ touch ~/tanpao.txt   家目录创建一个文件 

[student@localhost kuang]$ ls -lh !$   !$表示上一个命令的最后一个段

ls -lh ~/tanpao.txt

-rw-rw-r--. 1 student student 0 May 20 12:21 /home/student/tanpao.txt



[student@localhost kuang]$ pwd

/tmp/kuang

[student@localhost kuang]$ cd   cd后不加参数就进入主目录(家目录)

[student@localhost ~]$ pwd

/home/student



[student@localhost /]$ ps

   PID TTY          TIME CMD

  2596 pts/0    00:00:00 bash

  4878 pts/0    00:00:00 ps

[student@localhost /]

常见shell

[student@localhost etc]$ cat shells

/bin/sh

/bin/bash

/sbin/nologin

/usr/bin/sh

/usr/bin/bash

/usr/sbin/nologin

/bin/tcsh

/bin/csh


组信息放在etc group下

[student@localhost etc]$ ls -lh group

-rw-r--r--. 1 root root 850 Jul 11  2014 group


可以在group中最后加一个名字,他就有了root的权限

root:x:0:student



[student@localhost etc]$ grep student /etc/passwd

student:x:1000:1000:Student User:/home/student:/bin/bash


5.2 切换到管理员root


[student@localhost Desktop]$ cat /etc/shadow

cat: /etc/shadow: Permission denied

[student@localhost Desktop]$ su -

Password: 

Last login: Sat Apr 29 14:15:51 CST 2017 on pts/0

[root@localhost ~]# 



[student@localhost Desktop]$ su   这种切换没有完全切,只是一般份,并且目录没有变,一般不用这种

Password: 


(process:5757): dconf-WARNING **: failed to commit changes to dconf: The connection is closed

[root@localhost Desktop]# pwd

/home/student/Desktop

[root@localhost Desktop]# 


切换后去破坏非常不好,而且无法知道是哪个切换过来的,对系统的安全非常不好。

====================================================

普通用户不用登陆管理员就可以获得一些管理员操作。

[student@localhost Desktop]$ sudo cat /etc/shadow

[sudo] password for student: 

root:$6$UiGI4Tc2$htsXYn5cJnOqv3P1VLcUSgfjDu2pL5yiJBuua6foZAHdwqeuLHfYUfS/vBn27Wjvoel8EJgtdsMjyquqvKAmf1:16261:0:99999:7:::

bin:*:16141:0:99999:7:::

daemon:*:16141:0:99999:7:::

adm:*:16141:0:99999:7:::

lp:*:16141:0:99999:7:::

sync:*:16141:0:99999:7:::

shutdown:*:16141:0:99999:7:::

halt:*:16141:0:99999:7:::

mail:*:16141:0:99999:7:::

operator:*:16141:0:99999:7:::

games:*:16141:0:99999:7:::

ftp:*:16141:0:99999:7:::

nobody:*:16141:0:99999:7:::

dbus:!!:16197::::::

polkitd:!!:16197::::::

avahi:!!:16197::::::

avahi-autoipd:!!:16197::::::

rpc:!!:16197:0:99999:7:::

rpcuser:!!:16197::::::

nfsnobody:!!:16197::::::

ovirtagent:!!:16197::::::

postfix:!!:16197::::::

sshd:!!:16197::::::

chrony:!!:16197::::::

student:$6$8oIjLCsc$/n1iQXYh1E6.uOEuJKgioqAtmqm2TQmkJGF2RwyteIr1tIfrPdiRYgWe6Sjen5/eMij2uHM/a1tue/QRlo3X80:16261:0:99999:7:::

usbmuxd:!!:16261::::::

colord:!!:16261::::::

abrt:!!:16261::::::

libstoragemgmt:!!:16261::::::

unbound:!!:16261::::::

qemu:!!:16261::::::

saslauth:!!:16261::::::

ntp:!!:16261::::::

rtkit:!!:16261::::::

radvd:!!:16261::::::

pulse:!!:16261::::::

gdm:!!:16261::::::

gnome-initial-setup:!!:16261::::::

tcpdump:!!:16261::::::

[student@localhost Desktop]$ 


以上操作有日志,比su -要好很多。