天天看点

Linux用户管理用户存在的意义组存在的意义用户的查看用户切换用户在系统中的存储方式用户管理命令用户密码———passwd用户授权——/etc/sudoers

Linux用户管理

  • 用户存在的意义
  • 组存在的意义
  • 用户的查看
        • 查看当前用户
        • 系统中用户的查看
  • 用户切换
  • 用户在系统中的存储方式
        • /etc/passwd
        • /etc/group
        • 用户认证信息——/etc/shadow
        • /etc/skel/.*
        • /home/username
  • 用户管理命令
        • 用户的删除
        • 用户的建立
        • 更改用户信息 usermod
  • 用户密码———passwd
  • 用户授权——/etc/sudoers

用户存在的意义

用户在系统中是分角色的,在Linux系统中,由于角色不同,权限和所完成的任务也不同。

目前我们接触到的就是超级用户root和普通用户

原因:多用户系统从系统管理角度来说更为方便。从安全角度来说,多用户管理的系统更为安全,比如harry用户下的某个文件不想让其它用户看到,只是设置一下文件的权限,只有harry这个用户可读可写可编辑就行了,这样一来只有harry一个用户可以对其私有文件进行操作。Linux 在多用户下表现最佳,Linux能很好的保护每个用户的安全,所以很多服务器用的都是linux系统而不是windows,而unix在安全方面做的更好,所以银行等重要的数据存储的服务器就用的是unix。

组存在的意义

将用户分组是Linux系统中对用户进行管理及控制访问权限的一种手段,通过定义用户组,在很大程度上简化了管理工作。

就好比公司分成各个部门一样,就是为了方便管理。

用户组(group)就是让某一类用户(user)具有相同权限的集合体。

比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组,我们通过修改文件或目录的权限,让用户组具有一定的操作权限,这样用户组下的用户对该文件或目录都具有相同的权限,这是我们通过定义组和修改文件的权限来实现的。

用户的查看

查看当前用户

[[email protected] /]$ whoami 								##这个$表示普通用户,whoami查看当前用户
kiosk
[[email protected] ~]# whoami 								##这个#表示超级用户
root
           

系统中用户的查看

[[email protected] /]$ id -u kiosk							##看用户uid
1000
[[email protected] /]$ id -g kiosk							##看用户gid
1000
[[email protected] /]$ id -G kiosk							##看用户所属组id
1000
[[email protected] /]$ id -n kiosk							##看用户名字而不是id
id: cannot print only names or real IDs in default format
[[email protected] /]$ id kiosk								##看指定用户id信息
uid=1000(kiosk) gid=1000(kiosk) groups=1000(kiosk)
           

用户切换

类似于windows的注销操作,直接注销图形界面:

[[email protected] ~]# gnome-session-quit --force
直接注销,用其他用户登录
           

在shell中切换用户:

学了linux,当然要用指令切换用户了:
[[email protected] ~]# su - tom
Last login: Tue Apr  2 22:00:34 CST 2019 on pts/1
[[email protected] ~]$ 
           

注意,su 后面要加-

su - 这个“-”表示在切换用户的同时也切换当前用户的环境!

su - 执行的时候,高级用户到低级用户不需要密码,低级到高级、平级之间切换都要密码。

注意:每次su切换到其他用户之后记得退出,然后在进行切换不然后台会出现多个bash,可能引起系统错乱!如下图,图中出现了三个bash。

Linux用户管理用户存在的意义组存在的意义用户的查看用户切换用户在系统中的存储方式用户管理命令用户密码———passwd用户授权——/etc/sudoers

用户在系统中的存储方式

/etc/passwd

用户的信息文本,类似于用户的注册表。

[[email protected] ~]$ cat /etc/passwd
	root:x:0:0:root:/root:/bin/bash
	bin:x:1:1:bin:/bin:/sbin/nologin
	daemon:x:2:2:daemon:/sbin:/sbin/nologin
	adm:x:3:4:adm:/var/adm:/sbin/nologin
	lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
	sync:x:5:0:sync:/sbin:/bin/sync
	kiosk:x:1000:1000:kiosk:/home/kiosk:/bin/bash
	tom:x:1001:1001::/home/tom:/bin/bash
	 1  2   3   4   5    6       7
           
数字 代表意义
1 用户名
2 密码
3 uid
4 gid
5 说明
6 家目录
7 默认shell

说明:默认的shell有哪些可以查看/etc/shells文件:

[[email protected] ~]$ cat /etc/shells 
	/bin/sh
	/bin/bash
	/sbin/nologin
	/usr/bin/sh
	/usr/bin/bash
	/usr/sbin/nologin
	/bin/tcsh
	/bin/csh
           

/etc/group

用户组的说明文件;

[[email protected] ~]$ cat /etc/group
	root:x:0:
	bin:x:1:
	daemon:x:2:
	sys:x:3:
	tom:x:1001:
	tom:x:1001:
	kiosk:x:1000:kiosk
	  1	  2   3    4
           
数字 代表意思
1 用户名
2 组密码
3 组id
4 组成员

用户认证信息——/etc/shadow

记录用户认证信息的文件

[[email protected] ~]# cat /etc/shadow
	root:$6$oZ1JGQiQ$0lau6DEHSV81iQ54SJyjhI7s9DvAz2Ly5JVwGxMXJqDodk61DXZnF79ibX.scEeHKIe1tBTqLSCIfYV2k3AuW1::0:99999:7:::
	bin:*:16925:0:99999:7:::
	daemon:*:16925:0:99999:7:::
	adm:*:16925:0:99999:7:::
	kiosk:$6$0jQUhc9N.t6FbjtD$9z3WWL7.0jfWiTdiisLWu212AjvdFuB0eExG6UdeqUh6T82ktwQVPmCdcmpB3wfb4icaaMOGcd.klgAxYuy64.::0:99999:7:::
	tom:!!:17986:0:99999:7:::
	 1  2	 3   4   5   6 7 8 9
           
数字 代表含义
1 用户名
2 密码
3 用户密码最后一次更改时间:从1970-1-1开始的天数
4 密码最短有效期,表示这个数字范围天内不能改密码
5 密码最长有效期,必须有效期内更新密码,超过这个时间则冻结
6 密码警告期限,在过期前的天数会发送警告
7 用户非活跃天数,默认为空,若设定数值,表示在最长有效期过后仍可使用的天数
8 用户到期日,默认为空,表示帐号一定会被冻结的时间点
9 用户自定义列,暂未启用

注意:这里的密码都是对称加密后的密码

查看密码相关信息(如加密协议)可以用:

[[email protected] ~]# passwd -S kiosk 
	kiosk PS 1969-12-31 0 99999 7 -1 (Password set, SHA512 crypt.)
           

/etc/skel/.*

默认开启shell的配置,是用户的骨文件,.*表示所有的隐藏文件。

[[email protected] ~]# ls -la /etc/skel/
	total 28
	drwxr-xr-x.   3 root root    78 Mar 24 21:04 .
	drwxr-xr-x. 137 root root 12288 Apr  4 19:46 ..
	-rw-r--r--.   1 root root    18 Jul 12  2016 .bash_logout
	-rw-r--r--.   1 root root   193 Jul 12  2016 .bash_profile
	-rw-r--r--.   1 root root   231 Jul 12  2016 .bashrc
	drwxr-xr-x.   4 root root    39 Mar 24 21:03 .mozilla
           

/home/username

用户的家目录,通常用户目录挂载于此:

[[email protected] ~]# ls -l /home/
	total 4
	drwxr--r--. 17 kiosk kiosk 4096 Apr  3 11:14 kiosk
	drwx------.  5 tom   tom    128 Apr  2 21:57 tom
	drwxrwsr-x+  4 root  root    44 Apr  4 11:12 westos
           

用户管理命令

用户的删除

userdel

userdel username ———— 表示删除用户但不删除用户的配置文件

userdel -r username ———— 表示删除用户并删除用户的配置文件

[[email protected] ~]# userdel -r tom 
[[email protected] ~]# ls -l /home/
	total 4
	drwxr--r--. 17 kiosk kiosk 4096 Apr  3 11:14 kiosk
	drwxrwsr-x+  4 root  root    44 Apr  4 11:12 westos
           

用户的建立

为了更清晰的看用户建立的过程,我们可以用watch命令监控用户的建立

[[email protected] ~]# watch -n 1 " tail -n 3 /etc/passwd /etc/group; ls -l /home"
           
Linux用户管理用户存在的意义组存在的意义用户的查看用户切换用户在系统中的存储方式用户管理命令用户密码———passwd用户授权——/etc/sudoers
[[email protected] ~]# useradd -u 7777 tom
[[email protected] ~]# useradd -g 21 harry
[[email protected] ~]# useradd -G 21 -c "fuck" -d /home/lee -s /bin/sh jerry
           
参数 含义
-u 指定uid
-g 指定组id,该用户组必须存在
-G 指定附加组id,该用户组必须存在
-c 说明
-s 默认shell
-d 指定家目录

关于组的建立

命令 说明
groupadd groupname 建立用户组
groupadd -g 888 tom 建立用户组并指定用户组id
groupdel 删除用户组

更改用户信息 usermod

用户建立好了,万一需要修改相关信息怎么办?

命令 含义
usermod -l newname username 更改用户名称
usermod -u 6666 username 更该用户uid
usermod -g 23 username 更改用户gid,也就是初始组
usermod -G 24 username 更改用户附加组
usermod -aG 21 username 添加用户附加组
usermod -G “” username 删除用户所有附加组身份
usermod -c “fuck” username 指定用户说明文字
usermod -d /home/lee username 更改用户的家目录指向,实际没更改
usermod -md /home/lee username 更改用户的家目录
usermod -s /bin/sh username 更改用户shell
usermod -L 冻结用户
usermod -U 解锁用户

用户密码———passwd

命令 含义
passwd tom 更改tom密码
passwd -l tom lock the password for the named account (root only)加锁 出现“!!”锁两次
passwd -u tom 解锁
passwd -d tom delete the password for the named account (root only)清空密码
usermod -L tom lock the user account加锁 出现“!”锁一次
usermod -U tom unlock the user account解锁

注意:设置密码规则

普通用户修改密码时:

1.必须知道当前用户初始密码

2.密码不能和账户名相似

3.密码不能纯数字或字母

4.密码不能有序

根据之间的用户认证信息/etc/shadow,关于密码的一些设置:

命令 作用
passwd -e tom 改变用户最后一次更改密码时间为0
chage -d 0 tom 改变用户最后一次更改密码时间为0,用户在登录时会强制更改密码
passwd -n 1 tom tom用户在1天之内不能修改密码
chage -m 1 tom 同上
passwd -x 30 tom 设定用户必须在30天内该密码
chage -M 30 tom 功能同上
passwd -w 2 tom 密码过期前两天警告
chage -W 2 tom 同上
passwd -i 1 tom 密码过期后仍可登录系统的天数
chage -I 1 tom 同上
chage -E 2019-11-11 tom 用户在2019-11-11时会被冻结

用户授权——/etc/sudoers

/etc/sudoers 权力下放文件

这个文件可以直接用vim编辑,但不提供语法检测,打错了不提示,最好用visudo编辑这个文件,visudo提供语法检测

vim /etc/sudoers
或者 visudo
           

怎么下放权限?

[[email protected] ~]# visudo
进入后,按:100进入100行左右
发现:
           
Linux用户管理用户存在的意义组存在的意义用户的查看用户切换用户在系统中的存储方式用户管理命令用户密码———passwd用户授权——/etc/sudoers

添加上

tom     localhost=(root)        /usr/sbin/useradd			##tom可以在localhost以root身份执行useradd
           

测试一下:

[[email protected] ~]$ useradd hello
-bash: /usr/sbin/useradd: Permission denied
           

发现还是不行,因为你没有用sudo

[[email protected] ~]$ sudo useradd hello

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for tom: 
           

又发现要密码,不知道密码咋办??还是跟刚才一下进入visudo,修改成这样就不要密码了!

tom     localhost=(root)       NOPASSWD: /usr/sbin/useradd	
           

在试一下:

[t[email protected] ~]$ sudo useradd hello
[sudo] password for tom: 
           

发现还是不行???排查原因!

发现:
[[email protected] ~]$ hostname
foundation2.ilt.example.com
所以我们写的localhost根本不对,当然就不会生效!!
所以修改visudo文件:
tom     foundation2.ilt.example.com=(root)      NOPASSWD:/usr/sbin/useradd
           

结果:成功!!!

[[email protected] ~]$ sudo useradd  fuckass
           

继续阅读