linux基础知识---用户

用户和组

一、用户和组的概念

    随着计算机对多用户需求越来越多,才引入了用户和组的概念。所谓的用户就是操作系统用来标识登陆系统的。就是用户和组是实现计算机资源分配的核心要素。组:是具有相同计算机资源(主要指权限)用户的一个集合。

    在计算机内核中,用户和组都是一个数字,我们称之为UID和GID。UID和GID在系统中具有唯一性。实现这个过程进行名称解析才能完成,在Linux系统中使用glib库中的系统调用来完成。

二、用户识别

    识别用户通过3A(Authentication,Authorization,Audit)

    Authentication:通过密码来实现 

    Authorization:授权

    Audit:审计(通过操作日志来实现的)

三、用户和组类别

    用户类别:

        管理员用户:UID=0

        系统用户:1 <= UID <= 499

        普通用户:UID >= 499

    组类别:

        管理员组:GID=0

        系统组:1 <= GID <= 499

        用户组:GID >= 500

四、用户和组的对应关系

    一对一:一个用户存在一个组中,即用户是组的唯一成员

    一对多:一个用户可以存在多个用户组中,此用户有多个组的共同权限

    多对一:多个用户组可以存在一个组中,这些用户具有和组共同的权限

    多对多:多个用户可以存在多个组中,即上述关系的扩展

五、用户和组相关的配置文件    

1、有关用户的相关文件

    /etc/passwd:用户账号信息

    /etc/passwd-:/etc/passwd的backup(备份)

/etc/passwd文件格式:

    account:password:UID:GID:GECOS:directory:shell  一个用户的信息占一行

具体含义:

字段 account password UID GID GECOS directory shell
含义 用户账号的字符串 密码定位符(以前是密码) 用户标识号,就是用户的UID,通常UID号的取值范围是0~65535 组标识号,就是组的GID,指的是主组 注释信息 家目录,也就是用户登录到系统之后默认所处的目录 用户默认shell
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

密码复杂度策略:

  • 数字、小写、大写和特殊字符至少三类

  • 最短长度5位

  • 不要使用易猜测的密码

  • 定期修改,且不要使用最近曾经使用过的密码

加密方式:

  • 对称加密:加密和解密使用同一个密钥;密钥分发困难

  • 公钥加密(非对称加密):加密和解密使用一对儿密钥

  • 单向加密:提取数据的惟一的特征码,主要用于比对数据的完整性 单向加密的特性是定长输出;不可逆;雪崩效应



/etc/shadow:用户密码和相关的账户设定

/etc/shadow-:/etc/shadow的backup(备份)

    /etc/shadow文件格式:

    login name:password:date of last password change:minimum password age:maximum password age:password warning period:password inactivity period:account expiration date:reserved field 一个用户信息占一行,用户加密咨询文件。由于/etc/passwd文件是所有用户都可读的,这样就导致了用户的密码容易出现泄露,因此,linux将用户的密码信息从/etc/passwd中分离出来,单独的放到了一个文件中,这个文件就是/etc/shadow,该文件只有root用户拥有读权限,从而保证了用户密码的安全性。

具体含义:

字段 login name password date of last password change minimum password age maximum password age password warning period password inactivity period account expiration date reserved field
含义 用户名,同/etc/passwd相对应 加密后的密码 最近一次修改密码的时间(从1970-01-01到现在的天数) 密码最短使用期限(天数) 密码最长使用期限(天数) 密码过期警告区间(天数) 非活动时间(天数) 账号过期时间,绝对时间 保留区域
centos:$6$X/HwvP5Q$5qUun33gWjfHALXiJ1e.9XVEUlSEq1k6uPMCDp.ry8h7Y9bs7xVNQrdQsXIHWCIuUEWEqFw0RE8UtPk37Zah91:16252:0:99999:7:::
mandriva:!!:16255:0:99999:7:::
gentoo:$6$QUEaMRzj$L8g8OsDRr6LZM8KCuu9cieNYnbGS/SUTsVNJf2pRd5iDrsyama.jrKh2gI86b3QQfMqr1oZQwx.TQTLyBocnj/:16255:2:60:3:7::
openstack:!!:16255:0:99999:7:::


2、有关组的相关文件

/etc/group:组的账号信息

/etc/group-:/etc/group文件的backup

    /etc/group文件格式:

        group_name:passwd:GID:user_list

具体含义:

字段 group_name passwd GID user_list
含义 组名 组密码定位符 GruopID 以逗号分开的属于此组(以此作为附属组)的用户列表
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon

/etc/gshadow:组的密码信息

/etc/gshadow-:/etc/gshadow文件的backup

    /etc/gshadow文件格式:

字段 group_name passwd GID user_list
含义 组名 加密后的密码 用户组管理者 组成员
root:::
bin:::bin,daemon
daemon:::bin,daemon
sys:::bin,adm
adm:::adm,daemon

 六、其他相关的配置文件

(1)etc/login.defs文件

    用来定义创建一个用户时的默认设置,比如指定用户的UID和GID的范围,用户的过期时间、是否需要创建用户主目录等等。

    下面是centos6.4下的/etc/login.defs,简单介绍如下:

[root@server ~]# cat /etc/login.defs | grep -v ^# | grep -v ^$
MAIL_DIR	/var/spool/mail
#当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件 
PASS_MAX_DAYS	99999
#指定密码保持有效的最大天数
PASS_MIN_DAYS	0
#表示自从上次密码修改以来多少天后用户才被允许修改口令
PASS_MIN_LEN	5
#指定密码的最小长度 
PASS_WARN_AGE	7
#表示在口令到期前多少天系统开始通知用户口令即将到期
UID_MIN			  500
#指定最小UID为500 ,也就是说添加用户时,用户的UID 从500开始
UID_MAX			60000
#指定最大UID为60000 
GID_MIN			  500
#指定最小GID为500,也就是添加组时,组的GID从500开始。
GID_MAX			60000
#指定最大GID为60000
CREATE_HOME	yes
#此项是指定是否创建用户主目录,yes为创建,no为不创建。
UMASK           077
#默认家目录的掩码
USERGROUPS_ENAB yes
#########有待验证########################
ENCRYPT_METHOD SHA512 
#默认密码加密算法是SHA512

 (2)/etc/skel目录

    /etc/skel目录定义了新建用户在主目录下默认的配置文件,更改/etc/skel目录下的内容就可以改变新建用户默认主目录的配置文件信息,例如创建一个新用户后,会在新用户的主目录下看到类似.bash_profile, .bashrc, .bash_logout等文件,这些文件就是存在于/etc/skel目录下的。

 

(3)/etc/default/useradd文件

    useradd 添加用户时的规则文件,当我们通过useradd命令不加任何参数创建一个用户后,用户默认的主目录一般位于/home下,默认使用的shell是/bin/bash,这些都是在/etc/default/useradd文件中定义的。更改此文件可以更改添加用户的默认配置,除此方法外还可以通过adduser命令的参数来实现。

[root@server ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100
HOME=/home #把用户的家目录建在/home中
INACTIVE=-1 #是否启用帐号过期停权,-1表示不启用
EXPIRE= #帐号终止日期,不设置表示不启用
SHELL=/bin/bash #所用SHELL的类型
SKEL=/etc/skel
 #默认添加用户的目录默认文件存放位置;也就是说,当我们用adduser添加用户时,用户家目录下的文件,都是从这个目录中复制过去的
CREATE_MAIL_SPOOL=yes 
#当创建用户时,同时在目录/var/spool/mail中创建一个用户mail文件。yes是创建,no是不创建。

七、用户和组的管理

1)用户的管理命令

    useradd,adduser:添加用户

命令 常用参数 参数意义 示例
useradd或者adduser
-u 指定用户的UID useradd -u 506 gentoo
-g 指定用户的GID useradd -u 506 -g 1000 gentoo
-G 指定用户的附加组,可以指定多个附加组 useradd -u 506 -G Linux,centos gentoo
-c 添加注释信息,不指定默认为空 useradd -c 'this is a test user' ubantu
-d 指定用户的家目录,不指定的话,默认数/hmoe/目录下与用户名同名的目录 useradd -d /tmp/redhat redhat
-s 指定用户的默认shell,不指定的话默认是/bin/bash useaadd -s /sbin/nologin slackware
-r 添加系统用户 useradd -r mysql
-m 如果用户没有家目录则自动创建
-M 强制不创建家目录
useradd -M Archlinux
-e expire_date 账号终止日期 useradd -e 14/7/20 suse 


    userdel:删除用户

        用法:  userdel USER_NAME

        常用参数:-r   删除用户是将用户的家目录删除 例如 userdel -r gentoo

    passwd:为用户设置密码

常用参数 参数意义 示例
--stdin 避免交互式设置密码 echo 'Acrhlinux' | passwd Archlinux
-l,-u
用户加锁,解锁

passwd -l ArchLinux

passwd -u ArchLinux

-n,-x,-w,-i 设置用户的最短使用,最长使用,告警,非活动期限 passwd -n 2 -u 60 -w 7 -i 3 gentoo

    usermod:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等

常用参数 参数意义 示例
-u,-g,-s,-c 修改用户的UID,GID,默认shell,注释信息 usermod -u 800 -g 6666 -s /bin/zsh -c 'Beijing zhongguancun' gentoo
-G -a 在修改用户的附加组是,要想保留原来的附加组,还需要与-a并用,否则则会覆盖原来的附加组 usermod -a -G gentoo,centos,linux ubantu
-d -m  修改家目录,若想同时保存原来家目录下的所有文件,则与-m一起使用 usermod -d /tmp/linux -m gentoo

-L,-U 

锁定和解锁用户

usermod -L redhat

usermod -U redhat

    chown:改变文件的属主属组

常用参数 参数意义 示例
-R,-r 改变该目录以及位于该目录下所有文件的属主属组

1、修改/tmp/mylinux文件的属主属组为gentoo

chown gentoo:gentoo /tmp/mylinux

或者chown gentoo.gentoo /tmp/mylinux

2、修改/tmp/mylinux文件的属主为gentoo

chown gentoo /tmp/mylinux

3、修改/tmp/mylinux文件的属组为gentoo

chown .gentoo /tmp/mylinux

4、修改/tmp/test/目录下文件的属主属组为gentoo

chown -R gentoo.gentoo /tmp/mytest

    pwcovn:同步用户从/etc/passwd 到/etc/shadow

    pwck:pwck是校验用户配置文件/etc/passwd 和/etc/shadow 文件内容是否合法或完整

    pwunconv:是pwcov 的立逆向操作,是从/etc/shadow和 /etc/passwd 创建/etc/passwd ,然后会删除 /etc/shadow 文件

    finger:查看用户信息工具

[root@server ~]# finger centos
Login: centos         			Name: 
Directory: /home/centos             	Shell: /bin/bash
On since Sat Jul  5 11:21 (CST) on pts/2 from 172.16.9.17
   8 hours 25 minutes idle
No mail.
No Plan.

    id:查看用户的UID、GID及所归属的用户组

[root@server ~]# id centos
uid=500(centos) gid=500(centos) groups=500(centos),600(magedu)

    chfn:更改用户信息工具

    su:用户切换工具

        常用参数:

         su -l USENAME 或 su - USERNAME 完全切换

         su -c 以切换的用户身份执行命令 例如:

[root@server ~]# su - centos -c 'whoami'
centos

    sudo:sudo 是通过另一个用户来执行命令(execute a command as another user),su 是用来切换用户,然后通过切换到的用户来完成相应的任务,但sudo 能后面直接执行命令,比如sudo 不需要root 密码就可以执行root 赋与的执行只有root才能执行相应的命令;但得通过visudo 来编辑/etc/sudoers来实现

    visudo:visodo 是编辑 /etc/sudoers 的命令;也可以不用这个命令,直接用vi 来编辑 /etc/sudoers 的效果是一样的

    sudoedit:和sudo 功能差不多

2)组管理命令

    groupadd:添加用户组

        常用参数:

        -g:指定组ID     例如:groupadd -g 1000 centos

        -r:指定一个系统组

    groupdel:删除用户组

    groupmod:修改用户组信息

    chgrp:改变用户的所属组

    groups:显示用户所属的用户组

    grpck:检查/etc/group文件和/etc/gshadow文件,检查数据是否正确存放

    grpconv:通过/etc/group和/etc/gshadow 的文件内容来同步或创建/etc/gshadow ,如果/etc/gshadow 不存在则创建

    grpunconv:通过/etc/group 和/etc/gshadow 文件内容来同步或创建/etc/group ,然后删除gshadow文件

八、手动创建一个用户

    1、手动在/etc/passwd中添加一行(当然用户名,UID不能使用已经存在的)

    test1:x:2222:2222::/home/tes1t:/bin/bash

    2、产生密码信息

    echo 'redhat' | sha512sum 

    20641bd9d93708c844f59bf5f5d5bfb16fd5c3cece84127f56072579f778e6aca04ca7985eb4a7f555bd9532115205884d11fc5323534618da7596c300b4666d 

    并在/etc/shadow添加这一行

    test1:$6$bRFe2dsW$20641bd9d93708c844f59bf5f5d5bfb16fd5c3cece84127f56072579f778e6aca04ca7985eb4a7f555bd9532115205884d11fc5323534618da7596c300b4666d:16255:0:99999:7::::

    3、手动在/etc/group中添加一行

    test1:x:2222:

    4、复制相关文件到家目录下

    cp -r /etc/skel/ /home/test1

    5、修改家目录权限

    chown -R test1.test1 /home/test1/

    此时就完成了一个用户的创建工作,下来就可以登陆了。


你可能感兴趣的:(linux,用户)