码迷,mamicode.com
首页 > 系统相关 > 详细

谢烟客---------Linux之用户

时间:2017-07-30 23:37:36      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:linux

《上邪》:

  上邪!我欲与君相知,长命无绝衰。山无陵,江水为竭,冬雷震震夏雨雪,天地合,乃敢与君绝!


基础框架:

    用户、密码、权限、组

    属主、属组

    进程的安全上下文

    用户密码相关的配置文件

    用户密码相关的命令



用户user 

    计算机用一个用户名识别、区辨使用电脑或网络服务的人。也可以说计算机将现实中的人映射为一个独立的账号。

    计算机更易识别的是数字并非字串,而人易记的是字串,能否用人易理解的字串来表示计算机易识别的数字呢?Sun公司,就研发了一种用操作系统作为抽象底层硬件功能的中间层来理解的框架,你不必关心它是什么,只需要知道当我们输入用户名时,调用此中间层或nsswitch的库,就能完成名称到数字的转换。

nsswitch的配置文件 /etc/nsswitch.conf
库文件  /usr/lib64/libnss*


密码password

    计算机每为一个用户分配一个用户账号,就要分配一些资源可供此用户使用,为了保证使用这些资源必须是此用户账号所对应的用户,需要一种可靠机制保证,pam用户认证框架,一种中间层,就能在用户输入密码后,对密码进行校验。      

pam的配置文件 /etc/pam.d/
库文件  /usr/lib64/security/


资源指派的层级

    更为精细控制用户对资源的访问权限,用户更为安全,更能保障计算机的安全。

    认证:Authentication  提供用户名和密码,只代表用户能进入此计算机的范围

    授权:Authorization    基于授权的方式,确定用户能够访问资源的范围

        授权的机制:Linux哲学思想"一切皆文件",用户也不例外,对资源的授权是通过对文件附加一层元数据,文件属于谁

    审计:Audition ,文件资源归你所使用,具体怎么用?确保用户对文件一个合理的使用范围.


用户的分类

    不同用户对相同的资源将有不同的使用权限,一般来说:管理员的权限几乎拥有系统上的所有权限。但是并非所有管理员都是理性的,不同的发行版对管理员的权限开放程度都各有不同,redhat发行版6.0之后,比如,对于删除根就做了一定的限制,只有 rm  --no-preserve-root 时,才能删除根,当然rm -rf /*也能完成。 一字之师著名作家列夫托尔斯泰曾说:“幸福的家庭大抵一样,不幸的家庭却各有不同。”对于普通用户,对资源的访问的权限各有各的不同。


计算机是依据ID号识别用户的,管理员用0,普通用户用1-65535中间的任意数字表示。

管理员:root,uid: 0 

普通用户:非root,uid: 1-65535

系统用户: 为服务类(守护类)进程获取系统资源进行权限分配,1-499

登陆用户: 交互式登陆使用  500+

组:Groupname/GID "角色”使多个用户有相同权限的容器,可容纳多个用户

组的分类:

    管理员组:root 0

    普通组:

        系统组 1-499 , 1-999(rhel7)

        普通组 500-65535 , 1000+(rhel7)

 * 查看系统的版本

[root@izpo45bh60h6bsz ~]# cat /etc/centos-release 
CentOS Linux release 7.2.1511 (Core) 
[root@izpo45bh60h6bsz ~]# uname -r
3.10.0-514.6.2.el7.x86_64
-rw-r--r--  1 root   root                9117 Jul 28  2017 boot.log
- 普通文件
rw- 属主的权限
r-- 属组的权限
r-- 非属主、属组的权限
1 文件被硬链接的次数
左root 文件的属主
右root 文件的属组

属主:文件的属主,文件所有者

组的分类:

    基本组:用户必须属于某个用户(角色)

    私有组: 组名同用户名,且包含一个用户

用户的附加组(额外组) :判断用户的权限


进程的安全上下文即一个程序被调度至CPU上运行时,进程的身份是谁?

    进程的身份取决于进程的发起者

程序对文件是否有权限

    程序发起者,同文件的属主,应用属主的权限。

    程序发起者,同文件 的属组,应用属组的权限。

    否则,应用非属主、属组的权限


用户名和密码保存的文件位置,文件也被称为"配置文件"

获取配置文件的格式:

[root@izpo45bh60h6bsz ~]# man 5 passwd
[root@izpo45bh60h6bsz ~]# man 5 shadow
[root@izpo45bh60h6bsz ~]# man 5 gshadow
[root@izpo45bh60h6bsz ~]# man 5 group
*man5 专用保存配置文件格式的章节

1)/etc/passwd配置文件

       作用:用于保存"用户及其属性信息(名称,UID,基本组ID)"

    文件格式:name:password:UID:GID:GECOS:directory:shell

    用户名:密码占位符:用户的ID号:用户的基本组ID:用户的完整信息(命名,办公电话,..):用户的主目录:用户登陆后的默认shell(用户默认所使用的shell程序)

    相关的命令: useradd,userdel,usermod,chfn,chsh,finger,id,su

    

2)/etc/group配置文件 

    作用: 用于保存 "组及其属性信息"

    文件格式:name:password:GID:user_list

    组名:组密码占位符:组ID:以当前组为附加组的用户列表(多个用户时,分隔符为逗号)

    相关的命令:groupadd,groupdel,groupmod,gpasswd


3)/etc/shadow配置文件

       作用:用于保存"用户密码及其相关属性"

    文件权限: (mode:----------,密码单独存放位置)

    用户名:加密后的密码:最近一次更改密码的日期:密码的最小使用期限:密码的最大使用期限:密码到最大使用期限前的一段时间(警告时间):密码到最大使用期限后的一段时间(非活动期限):账号的过期日期

    相关的命令:useradd,usermod,passwd,chage


4)/etc/gshadow配置文件

    作用: 用于保存"组密码及其相关属性",基本组切换时,需要使用到 

  相关的命令,gpasswd


密码基础概念

    用户名:加密后的密码:最近一次更改密码的日期

    加密后的密码:

    $6$cFyIyt7B$4Kw7Xk4xW8BpvKQZHhOk4lShz9ax83N2eOfLCAISmTk4VVpe6Z0Iplv8LEGEdMczUi9htOmHrvQJTv0m5ks5a.

    $6$:sha512

    $6$cFyIyt7B$:杂质


    加密: 基于某种算法,将明文转换为密文,(AES、DES、RC4、Rabbit、TripleDes等多种算法

    解密:   基于某种算法,将密文转换为明文


单向加密:提取数据的特征码或指纹

    特点:

    1、只能加密,不能解密

    2、定长输出:对任何数据加密,输出位数一致

    3、雪崩效应:初始数据的微小波动,结果巨大差异

    4、长度越长,消耗CPU时钟周期越多,消耗空间越大


计算指纹的工具:

128,md5

160,sha1

224,sha224

sha256

sha384

sha512

对数据加密:COMMAND FILE


密码复杂性策略

    1、数字、大小写字母、特殊字符、至少3种

    2、长度足够长

    3、密码循环同期长

    4、足够随机 

    5、密码定期更换

单身加密如何破解:枚举方法


配置文件相关的命令框架:

    方法一:命令总结

    方法二:命令语法

    方法三:按文件格式,分析相关的命令的使用方法


------------------------------------------------------------------------------

方法一:命令总结


/etc/passwd文件相关的命令:

useradd,userdel,usermod,chfn,chsh,finger,id,su命令

修改用户名: usermod -l new_name old_name

添加id:useradd -u UID user

修改id: usermod -u UID user

添加组Id: gropadd -g GID group

指定组ID:useradd -g GID/GROUP user

修改组ID:groupmod -g GID group

修改组ID: usermod -g GID/GROUP user

添加系统用户: useradd -r user

添加用户基本信息: chfn,useradd -c ‘GECOS‘ user

查看:finger user,

修改:chfn,usermod -c ‘GECOS‘ user

添加用户主目录: useradd -d DIR user

添加用户不给主目录: useradd -M user

修改用户主目录: usermod [-m] -d DIR user,-m,原目录文件会随之移动

默认shell: useradd -D -s SHELL, usermod -s SHELL user,useradd -s SHELL user,chsh

删除用户: userdel user

删除用户时,连家目录删除,userdel -r user


/etc/group文件相关的命令:

groupadd,groupdel,groupmod,gpasswd命令

修改组名: groupmod -n new_name old_name

指定附加组: useradd -G group1,group2,... group

修改附加组: usermod -G group1,group2,... group

添加附加组: usermod -a -G group1,group2,... group; 对原有的group进行附加

删除组: groupdel group

        添加系统组: groupadd -r group

        修改组密码:gpasswd group

        临时切换基本组: newgrp group


/etc/shadow文件相关的命令:

useradd,usermod,passwd,chage命令

锁定用户: usermod -L user, passwd -l user,

解锁用户: usermod -U user, passwd -u user,

        设定用户的密码: echo "STRING" | passwd --stdin user

删除用户的密码: passwd -d user

最近一次修改密码的时间: chage -d DAYS user

密码的最小使用期限: passwd -n DAYS user,chage -m DAYS user

密码的最大使用期限: passwd -x DAYS user, chage -M DYAS user

密码到最大使用期限前的一段时间(警告时间): passwd -w DYAS user, chage -W DAYS user

密码到最大使用期限后的一段时间(非活动期限): useradd -D -f DAYS user,usermod -f DAYS user

passwd -i DAYS user,chage  -I DAYS user

账号的过期日期: useradd -D -e DYAS user, usermod -e DAYS user, passwd -e user(马上过期)

chage -e DASY user

---------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------

方法二:命令语法


/etc/passwd文件相关的命令:

useradd命令语法

[root@izpo45bh60h6bsz ~]# type useradd  #获取useradd的类型
useradd is hashed (/usr/sbin/useradd)   #结果被hash化了,之前用过此命令
[root@izpo45bh60h6bsz ~]# hash -r       #清理hash表
[root@izpo45bh60h6bsz ~]# type useradd  #重新获取useradd的类型
useradd is /usr/sbin/useradd            #useradd是外部命令
[root@izpo45bh60h6bsz ~]# useradd --h   #获取命令的帮助
useradd: option ‘--h‘ is ambiguous; possibilities: ‘--home-dir‘ ‘--help‘
Usage: useradd [options] LOGIN          
       useradd -D
       useradd -D [options]
       作用:添加用户和修改用户默认属性
-u, --uid UID                          #添加用户时指明 用户的UDI
-g, --gid GROUP                        #添加用户时指明 用户的GID/GROUP
-G, --groups GROUPS                    #添加用户时指明 用户的附加组
-c, --comment COMMENT                  #添加用户时指明 用户的完整信息
-d, --home-dir HOME_DIR                #添加用户时指明 用户的主目录
-D, --defaults                         #添加用户时不用指明,即会有的信息  默认属性
-e, --expiredate EXPIRE_DATE           #默认的过期时间
-f, --inactive INACTIVE                #默认的非活动期
-M, --no-create-home                   #添加用户时不创建其家目录
-p, --password PASSWORD                #用户的密码
 -r, --system                          #添加系统用户
 -s, --shell SHELL                     #默认shell,添加时指明shell

userdel命令的语法

[root@izpo45bh60h6bsz ~]# type userdel
userdel is /usr/sbin/userdel
[root@izpo45bh60h6bsz ~]# userdel --h
Usage: userdel [options] LOGIN
options:
-r, --remove                  移除用户家目录

usermod命令的语法

[root@izpo45bh60h6bsz ~]# type usermod
usermod is /usr/sbin/usermod
[root@izpo45bh60h6bsz ~]# usermod --h
usermod: option ‘--h‘ is ambiguous; possibilities: ‘--home‘ ‘--help‘
Usage: usermod [options] LOGIN

-u, --uid UID                          #修改用户的UID
-g, --gid GROUP                        #修改用户的GID/GROUP
-G, --groups GROUPS                    #修改用户的附加组
-c, --comment COMMENT                  #修改用户的完整信息,
-d, --home-dir HOME_DIR                #修改用户的主目录-m表示连用户的家目录一块移动
 -s, --shell SHELL                     #修改用户的shell

chfn命令

[root@izpo45bh60h6bsz ~]# type chfn
chfn is /usr/bin/chfn
[root@izpo45bh60h6bsz ~]# chfn --h
chfn: option ‘--h‘ is ambiguous; possibilities: ‘--home-phone‘ ‘--help‘

Usage:
 chfn [options] [username]

chsh命令

[root@izpo45bh60h6bsz ~]# type chsh
chsh is /usr/bin/chsh
[root@izpo45bh60h6bsz ~]# chsh --help

Usage:
 chsh [options] [username]

finger命令

[root@izpo45bh60h6bsz ~]# type finger
finger is /usr/bin/finger
[root@izpo45bh60h6bsz ~]# finger --help
finger: invalid option -- ‘-‘
usage: finger [-lmps] [login ...]

id命令

[root@izpo45bh60h6bsz ~]# type id
id is /usr/bin/id
[root@izpo45bh60h6bsz ~]# id --help
Usage: id [OPTION]... [USER]
-n, --name  与-u,-g,-G连用,用于显示名字
-u, --user  显示用户ID
-g, --group  显示组ID
-G, --groups 所有组ID

su命令

[root@izpo45bh60h6bsz ~]# type su
su is /usr/bin/su
[root@izpo45bh60h6bsz ~]# su --help

Usage:
 su [options] [-] [USER [arg]...]
-, -l, --login        为交互式登陆
-s, --shell <shell>   切换时改变其shell环境
-g, --group <group>  切换时改变其基本组
-c, --command <command>         以另一个用户的身份执行命令


/etc/group文件相关的命令:

groupadd命令

[root@izpo45bh60h6bsz ~]# type groupadd
groupadd is /usr/sbin/groupadd
[root@izpo45bh60h6bsz ~]# groupadd --help
Usage: groupadd [options] GROUP

Options:
-g, --gid GID  #添加组ID
-p, --password PASSWORD #添加组密码
-r, --system #添加系统组

groupdel命令

[root@izpo45bh60h6bsz ~]# type groupdel
groupdel is /usr/sbin/groupdel
[root@izpo45bh60h6bsz ~]# groupdel --help
Usage: groupdel  GROUP
    作用删除组

groupmod命令

[root@izpo45bh60h6bsz ~]# type groupmod
groupmod is /usr/sbin/groupmod
[root@izpo45bh60h6bsz ~]# groupmod --help
Usage: groupmod [options] GROUP #修改组
-g, --gid GID  #修改组ID
-n, --new-name NEW_GROUP #修改组名
-p, --password PASSWORD  #修改组密码


/etc/shadow文件相关的命令:

useradd、usermod、passwd、chage

useradd -D [options]
-b, --base-dir BASE_DIR 默认主目录
-e, --expiredate EXPIRE_DATE 默认的过期时间
-f, --inactive INACTIVE 默认的非活动天数
-g, --gid GROUP 
-s, --shell SHELL
usermod [options] LOGIN
 -e, --expiredate EXPIRE_DATE 添加即可指明过期时间
 -f, --inactive INACTIVE 非活动天数
passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin] [username]
-n, --minimum DAYS 最小使用天数
-x, --maximum DAYS 
-w, --warning DAYS
-i, --inactive DAYS
-e, --expire 使密码过期
-S, --status 密码的详细信息
--stdin      非交互式设定密码
 chage [options] LOGIN
-d, --lastday LAST_DAY 修改最近一次修改密码的时间
-m, --mindays MIN_DAYS
-M, --maxdays MAX_DAYS
-W, --warndays WARN_DAYS
-I, --inactive INACTIVE 
-E, --expiredate EXPIRE_DATE
-l, --list 密码相关的详细信息

-----------------------------------------------------------------------------

方法三:按文件格式,分析相关的命令的使用方法


/etc/passwd文件相关的命令:

管理用户名相关的命令

useradd LOGIN

[root@izpo45bh60h6bsz ~]# useradd testuser #生成用户名
tail -1 /etc/passwd
testuser:x:2002:2002::/home/testuser:/bin/tcsh
[root@izpo45bh60h6bsz ~]# usermod -l helloeveryone testuser #修改用户名
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
helloeveryone:x:2002:2002::/home/testuser:/bin/tcsh

管理用户ID号相关的命令

useradd -u UID LOGIN

[root@izpo45bh60h6bsz ~]# useradd -u 666 testuser1 #生成用户ID
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
testuser1:x:666:2003::/home/testuser1:/bin/tcsh
[root@izpo45bh60h6bsz ~]# usermod -u 667 testuser1
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
testuser1:x:667:2003::/home/testuser1:/bin/tcsh

管理用户基本组相关的命令

useradd -g 组名/组ID LOGIN

[root@izpo45bh60h6bsz ~]# useradd -g AAAAAAAAAAAAAAAAAAAA  testuser6 #基本组不存在时
useradd: group ‘AAAAAAAAAAAAAAAAAAAA‘ does not exist
tail -1 /etc/passwd
testuser4:x:2003:2004::/home/testuser4:/bin/tcsh
[root@izpo45bh60h6bsz ~]# id testuser6
id: testuser6: no such user

[root@izpo45bh60h6bsz ~]# groupadd testuser3             #先添加基本组
[root@izpo45bh60h6bsz ~]# useradd -g testuser3 testuser4 #以存在的组名作为用户的基本组
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd            #显示为ID号
testuser4:x:2003:2004::/home/testuser4:/bin/tcsh
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group             #testuser3的ID号就是2004
testuser3:x:2004:

[root@izpo45bh60h6bsz ~]# tail -1 /etc/group                    #组testuser3已经存在,其ID为2004
testuser3:x:2004:
[root@izpo45bh60h6bsz ~]# useradd -g 2004 testuser5      #存在的组ID作为用户的基本组
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
testuser5:x:2004:2004::/home/testuser5:/bin/tcsh

usermod -g 组名/组ID LOGIN

[root@izpo45bh60h6bsz ~]# id testuser4       #用户存在,组名不同用户名,为用户的非私有组(基本组)
uid=2003(testuser4) gid=2004(testuser3) groups=2004(testuser3)

[root@izpo45bh60h6bsz ~]# usermod -g AAAAAAAAAAAAAAAAAAAA testuser4 #修改的组名不存在,组不能修改
usermod: group ‘AAAAAAAAAAAAAAAAAAAA‘ does not exist
[root@izpo45bh60h6bsz ~]# id testuser4
uid=2003(testuser4) gid=2004(testuser3) groups=2004(testuser3)

[root@izpo45bh60h6bsz ~]# groupadd  AAAAAAAAAAAAAAAAAAAA    #添加组名
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group                #验证存在
AAAAAAAAAAAAAAAAAAAA:x:10001:
[root@izpo45bh60h6bsz ~]# usermod -g AAAAAAAAAAAAAAAAAAAA testuser4  #修改组名
[root@izpo45bh60h6bsz ~]# id testuser4  #id为10001
uid=2003(testuser4) gid=10001(AAAAAAAAAAAAAAAAAAAA) groups=10001(AAAAAAAAAAAAAAAAAAAA)

[root@izpo45bh60h6bsz ~]# usermod -g 10000  testuser4  #修改的组id不存在,组不能修改
usermod: group ‘10000‘ does not exist
[root@izpo45bh60h6bsz ~]# id testuser4
uid=2003(testuser4) gid=2004(testuser3) groups=2004(testuser3)

[root@izpo45bh60h6bsz ~]# groupadd -g 10000 mygrp      #添加此组id
[root@izpo45bh60h6bsz ~]# usermod -g 10000  testuser4  #修改的组id已经存在
[root@izpo45bh60h6bsz ~]# id testuser4   #修改成功
uid=2003(testuser4) gid=10000(mygrp) groups=10000(mygrp)

管理用户的完整信息相关的命令

finger,chfn,useradd -c ‘GECOS‘ LOGIN , usermod -c ‘GECOS‘ LOGIN

[root@izpo45bh60h6bsz ~]# finger testuser4             #查看用户的完整信息
Login: testuser4      			Name: 
Directory: /home/testuser4          	Shell: /bin/tcsh
Never logged in.
No mail.
No Plan.

[root@izpo45bh60h6bsz ~]# chfn testuser4
Changing finger information for testuser4.
Name []: helloeveryone
Office []: 123
Office Phone []: 123
Home Phone []: 96168^C
[root@izpo45bh60h6bsz ~]# chfn testuser4
Changing finger information for testuser4.
Name []: Xie Daxia 
Office []: Xiedaxia@666
Office Phone []: 96168 
Home Phone []: 96168

Finger information changed.

[root@izpo45bh60h6bsz ~]# finger testuser4            #查看用户的完整信息
Login: testuser4      			Name: Xie Daxia
Directory: /home/testuser4          	Shell: /bin/tcsh
Office: Xiedaxia@666, x9-6168		Home Phone: x9-6168
Never logged in.
No mail.
No Plan.

[root@izpo45bh60h6bsz ~]# tail /etc/passwd            #查看用户的完整信息
testuser4:x:2003:10001:Xie Daxia,Xiedaxia@666,96168,96168:/home/testuser4:/bin/tcsh
 
[root@izpo45bh60h6bsz ~]# useradd -c ‘www.magedu.com‘ testuser8 #添加时指定
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
testuser8:x:2005:2005:

[root@izpo45bh60h6bsz ~]# usermod -c ‘mageedu.com‘ testuser8  #修改时指定
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
testuser8:x:2005:2005:mageedu.com:/home/testuser8:/bin/tcsh

删除用户相关的命令

[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
myuser2:x:2009:2009::/home/myuser2:/bin/bash
[root@izpo45bh60h6bsz ~]# ls -dl /home/myuser2
drwx------ 2 myuser2 myuser2 4096 Jan  2 12:30 /home/myuser2
[root@izpo45bh60h6bsz ~]# userdel myuser2       #删除时,保留家目录
[root@izpo45bh60h6bsz ~]# ls -dl /home/myuser2
drwx------ 2 2009 2009 4096 Jan  2 12:30 /home/myuser2


[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
myuser1:x:2008:2008::/home/myuser1:/bin/bash
[root@izpo45bh60h6bsz ~]# ls -dl /home/myuser1
drwx------ 2 myuser1 myuser1 4096 Jan  2 12:28 /home/myuser1
[root@izpo45bh60h6bsz ~]# userdel -r myuser1  #删除时,不保留家目录
[root@izpo45bh60h6bsz ~]# ls -dl /home/myuser1
ls: cannot access /home/myuser1: No such file or directory


管理用户的主目录

[root@izpo45bh60h6bsz ~]# useradd -d /tmp/hello testuser10 #添加时,随意指定用户的家目录
[root@izpo45bh60h6bsz ~]# ls -a /tmp/hello                 #家目录下会生成与用户相关的文件
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd              #家目录,确实是/tmp/hello
testuser10:x:2006:2006::/tmp/hello:/bin/bash
[root@izpo45bh60h6bsz ~]# finger testuser10
Directory: /tmp/hello

[root@izpo45bh60h6bsz ~]# su - testuser10                  #能够正常登陆
Last login: Sat Jan  2 12:04:22 CST 2016 on pts/0
[testuser10@izpo45bh60h6bsz ~]$ 
[testuser10@izpo45bh60h6bsz ~]$ 
[testuser10@izpo45bh60h6bsz ~]$ exit
logout

[root@izpo45bh60h6bsz ~]# usermod -d /home/testuser10 testuser10 #修改用户的家目录
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd  #修改成功
testuser10:x:2006:2006::/home/testuser10:/bin/bash
[root@izpo45bh60h6bsz ~]# ls -a /home/testuser10     #新的家目录虽修改,但不会被创建
ls: cannot access /home/testuser10: No such file or directory

[root@izpo45bh60h6bsz ~]# su - testuser10          #切换至此用户
Last login: Sat Jan  2 12:05:41 CST 2016 on pts/0
su: warning: cannot change directory to /home/testuser10: No such file or directory
-bash-4.2$                                        #登陆不成功,此时没有家目录
-bash-4.2$ exit
logout


[root@izpo45bh60h6bsz ~]# usermod -d /tmp/hello testuser10  #修改回
[root@izpo45bh60h6bsz ~]# ls -a /tmp/hello
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc
[root@izpo45bh60h6bsz ~]# su - testuser10                   #正常登陆
Last login: Sat Jan  2 12:07:40 CST 2016 on pts/0
[testuser10@izpo45bh60h6bsz ~]$ 
[testuser10@izpo45bh60h6bsz ~]$ exit
logout

[root@izpo45bh60h6bsz ~]# usermod -m -d /home/testuser10 testuser10 #修改家目录时,-m连胜
[root@izpo45bh60h6bsz ~]# ls -a /home/testuser10        #新的家目录被创建,且文件存在
.  ..  .bash_history  .bash_logout  .bash_profile  .bashrc 
[root@izpo45bh60h6bsz ~]# ls /tmp/hello                #原有的家目录被删除
ls: cannot access /tmp/hello: No such file or directory

[root@izpo45bh60h6bsz ~]# su - testuser10  #正常登录
Last login: Sat Jan  2 12:08:42 CST 2016 on pts/0
[testuser10@izpo45bh60h6bsz ~]$ 
[testuser10@izpo45bh60h6bsz ~]$ exit
logout

[root@izpo45bh60h6bsz ~]# su - user1 -c ‘whoami‘ #以另一个用户身份执行命令
user1


管理用户的默认shell

[root@izpo45bh60h6bsz ~]# useradd myuser
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd  #新加一个用户,其默认shell为/bin/bash
myuser:x:2007:2007::/home/myuser:/bin/bash
[root@izpo45bh60h6bsz ~]# tail /etc/default/useradd
# useradd defaults file
SHELL=/bin/bash               #此处的shell为默认的shell

[root@izpo45bh60h6bsz ~]# useradd -D -s /bin/sh  #修改默认shell
[root@izpo45bh60h6bsz ~]# tail /etc/default/useradd
# useradd defaults file
SHELL=/bin/sh                #此处的shell随之改变

[root@izpo45bh60h6bsz ~]# useradd myuser1
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd #shell为SHELL变量的值
myuser1:x:2008:2008::/home/myuser1:/bin/sh

[root@izpo45bh60h6bsz ~]# useradd -s /bin/bash myuser2 #SHELL=/bin/sh #手动指明shell,不在随默认shell
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
myuser2:x:2009:2009::/home/myuser2:/bin/bash

[root@izpo45bh60h6bsz ~]# usermod -s /bin/bash myuser1 #修改shell
[root@izpo45bh60h6bsz ~]# tail -1 /etc/passwd
myuser1:x:2008:2008::/home/myuser1:/bin/bash


切换用户

1、交互式切换
[root@izpo45bh60h6bsz ~]# useradd myuser1
[root@izpo45bh60h6bsz ~]# echo $PATH
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@izpo45bh60h6bsz ~]# su - myuser1
-sh-4.2$ echo $PATH
/usr/local/nginx/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin
-sh-4.2$ exit
logout

2、非交互式切换
[root@izpo45bh60h6bsz ~]# echo $PATH
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@izpo45bh60h6bsz ~]# su myuser1
[myuser1@izpo45bh60h6bsz root]$ echo $PATH
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[myuser1@izpo45bh60h6bsz root]$ exit
exit

查看用户的基本信息

[root@izpo45bh60h6bsz ~]# id testuser4
uid=2003(testuser4) gid=10001(AAAAAAAAAAAAAAAAAAAA) groups=10001(AAAAAAAAAAAAAAAAAAAA)
[root@izpo45bh60h6bsz ~]# id -u testuser4
2003
[root@izpo45bh60h6bsz ~]# id -un testuser4
testuser4

[root@izpo45bh60h6bsz ~]# id -g testuser4
10001
[root@izpo45bh60h6bsz ~]# id -gn testuser4
AAAAAAAAAAAAAAAAAAAA

[root@izpo45bh60h6bsz ~]# usermod -a -G myuser1 testuser4
[root@izpo45bh60h6bsz ~]# id testuser4
uid=2003(testuser4) gid=10001(AAAAAAAAAAAAAAAAAAAA) groups=10001(AAAAAAAAAAAAAAAAAAAA),2008(myuser1)
[root@izpo45bh60h6bsz ~]# id -G testuser4
10001 2008
[root@izpo45bh60h6bsz ~]# id -Gn testuser4
AAAAAAAAAAAAAAAAAAAA myuser1


etc/group文件相关的命令:

组名相关的命令

[root@izpo45bh60h6bsz ~]# groupadd aux  #添加组
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group
aux:x:10002:

[root@izpo45bh60h6bsz ~]# groupmod -n eFH aux #修改组名
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group
eFH:x:10002:

*同ID号是同一个组

[root@izpo45bh60h6bsz ~]# groupdel eFH  #删除组
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group
myuser1:x:2008:testuser4


组密码相关的命令

[root@izpo45bh60h6bsz ~]# groupadd -p 123 aux #添加时指明组密码
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group
aux:x:10002:
[root@izpo45bh60h6bsz ~]# tail  -3 /etc/gshadow #查看组密码
myuser:!::
myuser1:!::testuser4
aux:123::

[root@izpo45bh60h6bsz ~]# groupmod -p 666 aux
[root@izpo45bh60h6bsz ~]# tail  -3 /etc/gshadow
myuser:!::
myuser1:!::testuser4
aux:666::

!代表没有密码

[root@izpo45bh60h6bsz ~]# gpasswd aux #设定密码,123
Changing the password for group aux
New Password: 
Re-enter new password: 
[root@izpo45bh60h6bsz ~]# tail  -3 /etc/gshadow #密文存放
myuser:!::
myuser1:!::testuser4
aux:$6$FVea6d2Z$H9MOV7cCj8jJ6M7zxZMB6c9Pot8nOOl96Fy1XrlHzoqMxuP/In8gDsmWx48UoOp0mJtyiGo5KixvQD7Gdp7XL1::

$6$FVea6d2Z$H9M

    6:sha512算法 

    $FVea6d2Z$ : 红色为杂质


以当前组为附加组用户列表

1、生成组内用户列表
[root@izpo45bh60h6bsz ~]# tail /etc/passwd  #查看可用的倒数10行的用户列表
puppet:x:52:52:Puppet:/var/lib/puppet:/sbin/nologin
tom:x:2001:2001::/home/tom:/bin/tcsh
helloeveryone:x:2002:2002::/home/testuser:/bin/tcsh
testuser1:x:667:2003::/home/testuser1:/bin/tcsh
testuser4:x:2003:10001:Xie Daxia,Xiedaxia@666,96168,96168:/home/testuser4:/bin/tcsh
testuser5:x:2004:2004::/home/testuser5:/bin/tcsh
testuser8:x:2005:2005:mageedu.com:/home/testuser8:/bin/tcsh
testuser10:x:2006:2006::/home/testuser10:/bin/bash
myuser:x:2007:2007::/home/myuser:/bin/bash
myuser1:x:2008:2008::/home/myuser1:/bin/sh
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group #没有附加组
aux:x:10002:
[root@izpo45bh60h6bsz ~]# gpasswd -M puppet,tom,helloeveryone,testuser1 aux
[root@izpo45bh60h6bsz ~]# tail -1 /etc/group
aux:x:10002:puppet,tom,helloeveryone,testuser1

2、添加用户时,指定附加组:将此用户的基本组作为这些组的附加组
[root@izpo45bh60h6bsz ~]# tail /etc/group #查看可用的倒数10行的组列表
testuser:x:2002:
testuser1:x:2003:
testuser3:x:2004:
mygrp:x:10000:
AAAAAAAAAAAAAAAAAAAA:x:10001:
testuser8:x:2005:
testuser10:x:2006:
myuser:x:2007:
myuser1:x:2008:testuser4
aux:x:10002:puppet,tom,helloeveryone,testuser1
[root@izpo45bh60h6bsz ~]# useradd -G testuser,testuser1,testuser3 eFH
[root@izpo45bh60h6bsz ~]# id eFH
uid=2009(eFH) gid=2009(eFH) groups=2009(eFH),2002(testuser),2003(testuser1),2004(testuser3)

3、添加附加组
[root@izpo45bh60h6bsz ~]# usermod -G myuser1 -a eFH
[root@izpo45bh60h6bsz ~]# id eFH
uid=2009(eFH) gid=2009(eFH) groups=2009(eFH),2002(testuser),2003(testuser1),2004(testuser3),2008(myuser1)

4、覆盖附加组
[root@izpo45bh60h6bsz ~]# usermod -G myuser1  eFH
[root@izpo45bh60h6bsz ~]# id eFH
uid=2009(eFH) gid=2009(eFH) groups=2009(eFH),2008(myuser1)


临时切换基本组

[root@izpo45bh60h6bsz ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@izpo45bh60h6bsz ~]# groupmod -p 123 aux
[root@izpo45bh60h6bsz ~]# fgrep aux /etc/gshadow
aux:123::puppet,tom,helloeveryone,testuser1
[root@izpo45bh60h6bsz ~]# su - eFH
-sh-4.2$ id
uid=2009(eFH) gid=2009(eFH) groups=2009(eFH),2008(myuser1)
-sh-4.2$ newgrp aux
Password: 
Invalid password.
sh-4.2$ exit
exit

[root@izpo45bh60h6bsz ~]# gpasswd aux
Changing the password for group aux
New Password: 
Re-enter new password: 
[root@izpo45bh60h6bsz ~]# fgrep aux /etc/gshadow
aux:$6$ggVWoVfqDgU5$hYO5qEOslzR/zYY3XZ6G8MEkH9t87Nxdtp24UFVwpC8CEAtvyjd1bouN84o3pl3fMg4RYIWP4VGwukhY40Ns4/::puppet,tom,helloeveryone,testuser1
[root@izpo45bh60h6bsz ~]# su - eFH
-sh-4.2$ id
uid=2009(eFH) gid=2009(eFH) groups=2009(eFH),2008(myuser1)
-sh-4.2$ newgrp aux
Password: 
sh-4.2$ id
uid=2009(eFH) gid=10002(aux) groups=10002(aux),2008(myuser1),2009(eFH)


/etc/shadow文件相关的命令:

锁定/解锁密码

[root@izpo45bh60h6bsz ~]# usermod -p 123 eFH #设定密码
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:123:16802:0:99999:7:::
[root@izpo45bh60h6bsz ~]# usermod -L eFH  #对密码加锁
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:!123:16802:0:99999:7:::
[root@izpo45bh60h6bsz ~]# usermod -U eFH #对密码解锁
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:123:16802:0:99999:7:::

[root@izpo45bh60h6bsz ~]# echo ‘123‘ | passwd --stdin eFH #非交互式设定密码
Changing password for user eFH.
passwd: all authentication tokens updated successfully.
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$cHbhiXqW$xxF35fzXMEQmROJfq6dBM/YXDqHjoMahC6Nq5P1wCe.u7bG7sHXLwWljWZd3uifug6DiRhZUpDPInXtL42cJ61:16802:0:99999:7:::
[root@izpo45bh60h6bsz ~]# passwd -l eFH  #加锁密码
Locking password for user eFH.
passwd: Success
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow 
eFH:!!$6$cHbhiXqW$xxF35fzXMEQmROJfq6dBM/YXDqHjoMahC6Nq5P1wCe.u7bG7sHXLwWljWZd3uifug6DiRhZUpDPInXtL42cJ61:16802:0:99999:7:::
[root@izpo45bh60h6bsz ~]# passwd -u eFH  #解锁密码
Unlocking password for user eFH.
passwd: Success
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:16802:0:99999:7:::

最近一次修改密码的日期

[root@izpo45bh60h6bsz ~]# date #现在的时间
Sun Jul 30 11:31:25 CST 2017
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow #修改密码的天数
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:16802:0:99999:7:::
1、设定修改密码的日期
[root@izpo45bh60h6bsz ~]# passwd -S eFH #具体时间
eFH PS 2016-01-02 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@izpo45bh60h6bsz ~]# chage -l eFH #具体时间
Last password change					: Jan 02, 2016
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7
2、设定修改密码的日期
[root@izpo45bh60h6bsz ~]# chage -d 15000 eFH   #修改最近一次修改密码的时间
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:7:::
[root@izpo45bh60h6bsz ~]# passwd -S eFH
eFH PS 2011-01-26 0 99999 7 -1 (Password set, SHA512 crypt.)
[root@izpo45bh60h6bsz ~]# chage -l eFH
Last password change					: Jan 26, 2011
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

密码的最小、大使用期限

1、修改最小使用期限:0无限制 
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow 
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:7:::
[root@izpo45bh60h6bsz ~]# passwd -n 10 eFH
Adjusting aging data for user eFH.
passwd: Success
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:10:99999:7:::

[root@izpo45bh60h6bsz ~]# chage -m 0 eFH
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:7:::

2、修改最大使用期限:9999,永久
[root@izpo45bh60h6bsz ~]# passwd -x 10 eFH
Adjusting aging data for user eFH.
passwd: Success
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:10:7:::
[root@izpo45bh60h6bsz ~]# chage -M 99999 eFH
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow

密码到最大使用期限前的一段时间(警告时间)

[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:7:::

[root@izpo45bh60h6bsz ~]# passwd -w 10 eFH
Adjusting aging data for user eFH.
passwd: Success
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:10:::

[root@izpo45bh60h6bsz ~]# chage -W 7 eFH
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:7:::

密码到最大使用期限后的一段时间(非活动期限)

1、设定默认值
[root@izpo45bh60h6bsz ~]# cat /etc/default/useradd
# useradd defaults file
INACTIVE=-1

[root@izpo45bh60h6bsz ~]# useradd -D -f 10 
[root@izpo45bh60h6bsz ~]# cat /etc/default/useradd
# useradd defaults file
INACTIVE=10
[root@izpo45bh60h6bsz ~]# useradd user1
[root@izpo45bh60h6bsz ~]# id user1
uid=2010(user1) gid=2010(user1) groups=2010(user1)
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
user1:!!:17377:0:99999:7:10::

2、修改用户的非活动期
[root@izpo45bh60h6bsz ~]# passwd -S myuser
myuser LK 2016-01-02 0 99999 7 -1 (Password locked.)
[root@izpo45bh60h6bsz ~]# usermod -f 10 myuser
[root@izpo45bh60h6bsz ~]# passwd -S myuser
myuser LK 2016-01-02 0 99999 7 10 (Password locked.)

3、修改用户的非活动期
[root@izpo45bh60h6bsz ~]# passwd -i -1 myuser
Adjusting aging data for user myuser.
passwd: Success
[root@izpo45bh60h6bsz ~]# passwd -S myuser
myuser LK 2016-01-02 0 99999 7 -1 (Password locked.)

4、修改用户的非活动期
[root@izpo45bh60h6bsz ~]# chage -I 10 myuser
[root@izpo45bh60h6bsz ~]# passwd -S myuser
myuser LK 2016-01-02 0 99999 7 10 (Password locked.)

账号的过期日期

1、设定默认值
[root@izpo45bh60h6bsz ~]# cat /etc/default/useradd
# useradd defaults file
EXPIRE=

[root@izpo45bh60h6bsz ~]# useradd -D -e 100
[root@izpo45bh60h6bsz ~]# cat /etc/default/useradd
# useradd defaults file
EXPIRE=100

[root@izpo45bh60h6bsz ~]# useradd user13
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
user13:!!:17377:0:99999:7:10:100:

2、修改用户的过期日期
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
user13:!!:17377:0:99999:7:10:100:
[root@izpo45bh60h6bsz ~]# usermod -e 10 user13
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
user13:!!:17377:0:99999:7:10:10:

3、立即过期
[root@izpo45bh60h6bsz ~]# passwd -e user13
Expiring password for user user13.
passwd: Success

4、修改过期的日期
[root@izpo45bh60h6bsz ~]# chage -E 123 user13
[root@izpo45bh60h6bsz ~]# tail -1 /etc/shadow
user13:!!:0:0:99999:7:10:123:


本文出自 “Reading” 博客,请务必保留此出处http://sonlich.blog.51cto.com/12825953/1952071

谢烟客---------Linux之用户

标签:linux

原文地址:http://sonlich.blog.51cto.com/12825953/1952071

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!