linux 用户管理
用户及用户组
linux文件属性和权限的时候提到过用户和用户组,
回顾:
linux是多任务、多用户的系统。
用户、用户组的概念
每个文件和进程,都需要对应一个用户和用户组。
linux系统时通过UID和GID来识别用户和组的。
用户名相当于人名(给人用的)
UID和GID相当于身份证号(系统用的)
linux管理员:root
用户和组的关系:
一对一,多对一,一对多。
linux系统用户分类:
超级用户:UID为0代表是root,皇帝
普通用户:UID范围500---65535,由超级用户或者具有超级用户权限的用户创建的用户(大臣、布衣)。
虚拟用户:UID范围1--499,存在满足文件或者服务启动的需要。一般都不能登录,只是傀儡。
每个文件和进程,都满要对应一个用户和用户组。
和用户关联的四个文件:
/etc/passwd |
/etc/shadow |
/etc/group |
/etc/gshadow |
以上文件内容是由冒号分隔:/etc/Passwd内容需要比较熟悉(放在大脑里),其它的了解(在大脑建立索引)
用户管理的命令:
useradd |
添加用户 |
userdel |
删除用户及相关用户的配置文件 |
passwd |
为用户设置或改密码,更改/etc/shadow文件 |
usermod |
修改用户信息,可以修改登录名、用户的家目录等 |
id |
显示用户的UID,GID及所属用户组 |
chage |
修改用户密码属性,管理/etc/shadow文件 |
groupadd |
添加组 |
groupdel |
删除组 |
groups |
查看组信息 |
whoami |
查看当前用户 |
su |
切换角色 |
sudo |
提权 |
visudo |
编辑sudo配置文件(自动检查语法),也可以用vi来编辑/etc/sudoers实现 |
/etc/skel文件 |
用户环境变量存放的初始目录 |
w who last lastlog |
查询登陆用户信息 |
------------------------------------------------------
6.4.3 /etc/skel目录
/etc/skel 日录是用来存放新用户环境变量文件的目录,当我们添加新用户时,这个目录下的所有文件会自动被复制到新添加的用户的家目录下:默认情况下,/etc/skel 目录下的所有文件都是隐藏之件(以.开头的的之件):通过修改、添加、删除/etc/skel 录下的文件,我们可为新创建的用户提供统一的、标准的、初始化用户环境。
查看/etc/skel 目录下的内容:
1 [root@wen ~]# ls -al /etc/skel
2 总用量 24
3 drwxr-xr-x. 3 root root 4096 8月 30 05:50 .
4 drwxr-xr-x. 91 root root 4096 10月 22 01:52 ..
5 -rw-r--r--. 1 root root 18 7月 24 2015 .bash_logout
6 -rw-r--r--. 1 root root 176 7月 24 2015 .bash_profile
7 -rw-r--r--. 1 root root 124 7月 24 2015 .bashrc
8 drwxr-xr-x. 2 root root 4096 11月 12 2010 .gnome2
9
10 [root@wen ~]# cd /etc/skel
11 [root@wen skel]# touch readme.txt
12 [root@wen skel]# useradd wen
13 [root@wen skel]# ll /home/wen -al
14 总用量 24
15 drwx------ 3 wen wen 4096 10月 22 03:00 .
16 drwxr-xr-x. 8 root root 4096 10月 22 03:00 ..
17 -rw-r--r-- 1 wen wen 18 7月 24 2015 .bash_logout
18 -rw-r--r-- 1 wen wen 176 7月 24 2015 .bash_profile
19 -rw-r--r-- 1 wen wen 124 7月 24 2015 .bashrc
20 drwxr-xr-x 2 wen wen 4096 11月 12 2010 .gnome2
21 -rw-r--r-- 1 wen wen 0 10月 22 02:59 readme.txt
/etc/skel的企业场景作用:
1、可以把通知的内容放到skell,让登录的人去看
2、统一初始化新用户的环境变量
3、面试题:出现—bash—4.1$问题原因及解决方法。环境变量没了或没有家目录或下面的.bashrc*被删
知识点:
[root@wen skel]# PS1='[\u@\h \W\t]\$'
[root@wen skel03:08:19]#
-----------------------------------------------------------------------------------
6.4.4 /etc/login.defs配置文件
/etc/login.defs 文件是用来定义用户创建时需要的一些用户的配置信息,如创建用户时,是否需要家目录,UID和GID的范围,用户及密码的有效期等等。
*REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 500
UID_MAX 60000
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 500
GID_MAX 60000
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
6.4.5 /etc/default/useradd文件
/etc/default/useradd文件是在使用useradd添加用户时的一个默认的配置文件,可以使用"useradd -D 参数"这样的命令格式来修改文件里的内容,
1 [root@wen ~]#cat /etc/default/useradd
2 # useradd defaults file
3 GROUP=100 #依赖于/etc/login.defs的USERGROUPS_ENAB参数,如果为no,则此处控制
4 HOME=/home #把用户的家目录建在/home中
5 INACTIVE=-1 #是否启用账号过期停权,-1表示不启用
6 EXPIRE= #账号终止日期,不设置表示不启用
7 SHELL=/bin/bash #用户默认所用的血液类型
8 SKEL=/etc/skel#配置新用户家目录的默认文件存放路径,前文提到的/etc/skell,就是配在这里生效的,即当我们使用useradd添加用户时,用户家目录下的文件,都是从这里配置的目录中复制过去的。
9 CREATE_MAIL_SPOOL=yes #创建mail文件
useradd 参数选项 |
注释说明 |
-c comment |
新账号passwd 的说明栏,相当于该账号的注释说明 |
-d home_dir |
新账号每次登陆时所使用的home_dir,预设值为default_home内login的名字,并当成登入时目录的名称 |
-e expire_date |
账号终止日期。日期格式指定为MM/DD/YY |
-g initial_group |
group名称或以数字来作为用户登录起始用户组(group),用户组名须为系统现有存在的名称,用户组数字也须为现有存在的用户组,预设的用户组数字为1, |
-G group,[…] |
定义用户为多个不同groups的成员,每个用户组使用","逗号分分隔。用户组名同-g选项限制,默认值为用户的起始用户组。 |
-M |
不建立家目录,优先于/etc/login.defs文件的设定,一般创建虚拟用户时不建立家目录,部署服务时需要创建虚拟用户。 |
-s |
用户登录后使用的shell名称,默认值不填写,这样系统会帮你指定预设登入shell(根据/etc/default/useradd预设的值) |
-u |
用户的ID值,这个值必须是唯一的,除非用-o选项,数字不可为负值 |
1 [root@wen ~]# useradd ju01 -g fadewalk -e "2019/07/01" -M
2 [root@wen ~]# tail -1 /etc/passwd
3 ju01:x:506:501::/home/ju01:/bin/bash
4 [root@wen ~]# id ju01
5 uid=506(ju01) gid=501(fadewalk) 组=501(fadewalk)
6 [root@wen ~]# ls -ld /home/ju01
7 ls: 无法访问/home/ju01: 没有那个文件或目录
8 [root@wen ~]# chage -l ju01
9 Last password change : Oct 21, 2017
10 Password expires : never
11 Password inactive : never
12 Account expires : Jul 01, 2019
13 Minimum number of days between password change : 0
14 Maximum number of days between password change : 99999
15 Number of days of warning before password expires : 7
改变新建用户的预设值:
当执行useradd命令加-D选项时,可以更改新建用户的默认配置值(/etc/default/useradd),或是有命令编辑的方式更新预设置。
useradd -D参数选项 |
注释说明 |
-b default_home |
定义用户所属目录的前一个目录,用户名称会附加在default_home后面用来建立新用户的目录,使用-d后则此项无效 |
-c default_expire_date |
用户账号停止日期, |
-f default_inactive |
账号过期几日后停权 |
-g default_group |
新账号起始用户组名或ID,用户组须为现有存在的名称,用户组ID也须为现存有的用户组。 |
-s default_shell |
用户登入后使用的shell名称,修改后新加入的用户都将使用此shell类型,useradd -s 参数优先于此默认配置值 |