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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谢烟客---------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)

 * 查看系统的版本

[[email protected] ~]# cat /etc/centos-release 
CentOS Linux release 7.2.1511 (Core) 
[[email protected] ~]# 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上运行时,进程的身份是谁?

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

程序对文件是否有权限

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

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

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


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

获取配置文件的格式:

[[email protected] ~]# man 5 passwd
[[email protected] ~]# man 5 shadow
[[email protected] ~]# man 5 gshadow
[[email protected] ~]# 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命令语法

[[email protected] ~]# type useradd  #获取useradd的类型
useradd is hashed (/usr/sbin/useradd)   #结果被hash化了,之前用过此命令
[[email protected] ~]# hash -r       #清理hash表
[[email protected] ~]# type useradd  #重新获取useradd的类型
useradd is /usr/sbin/useradd            #useradd是外部命令
[[email protected] ~]# 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命令的语法

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

usermod命令的语法

[[email protected] ~]# type usermod
usermod is /usr/sbin/usermod
[[email protected] ~]# 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命令

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

Usage:
 chfn [options] [username]

chsh命令

[[email protected] ~]# type chsh
chsh is /usr/bin/chsh
[[email protected] ~]# chsh --help

Usage:
 chsh [options] [username]

finger命令

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

id命令

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

su命令

[[email protected] ~]# type su
su is /usr/bin/su
[[email protected] ~]# su --help

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


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

groupadd命令

[[email protected] ~]# type groupadd
groupadd is /usr/sbin/groupadd
[[email protected] ~]# groupadd --help
Usage: groupadd [options] GROUP

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

groupdel命令

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

groupmod命令

[[email protected] ~]# type groupmod
groupmod is /usr/sbin/groupmod
[[email protected] ~]# 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

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

管理用户ID号相关的命令

useradd -u UID LOGIN

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

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

useradd -g 组名/组ID LOGIN

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

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

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

usermod -g 组名/组ID LOGIN

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

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

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

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

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

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

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

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

[[email protected] ~]# chfn testuser4
Changing finger information for testuser4.
Name []: helloeveryone
Office []: 123
Office Phone []: 123
Home Phone []: 96168^C
[[email protected] ~]# chfn testuser4
Changing finger information for testuser4.
Name []: Xie Daxia 
Office []: [email protected]
Office Phone []: 96168 
Home Phone []: 96168

Finger information changed.

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

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

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

删除用户相关的命令

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


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


管理用户的主目录

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

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

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

[[email protected] ~]# 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


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

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

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

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


管理用户的默认shell

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

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

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

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

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


切换用户

1、交互式切换
[[email protected] ~]# useradd myuser1
[[email protected] ~]# echo $PATH
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# 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、非交互式切换
[[email protected] ~]# echo $PATH
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] ~]# su myuser1
[[email protected] root]$ echo $PATH
/usr/local/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[[email protected] root]$ exit
exit

查看用户的基本信息

[[email protected] ~]# id testuser4
uid=2003(testuser4) gid=10001(AAAAAAAAAAAAAAAAAAAA) groups=10001(AAAAAAAAAAAAAAAAAAAA)
[[email protected] ~]# id -u testuser4
2003
[[email protected] ~]# id -un testuser4
testuser4

[[email protected] ~]# id -g testuser4
10001
[[email protected] ~]# id -gn testuser4
AAAAAAAAAAAAAAAAAAAA

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


etc/group文件相关的命令:

组名相关的命令

[[email protected] ~]# groupadd aux  #添加组
[[email protected] ~]# tail -1 /etc/group
aux:x:10002:

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

*同ID号是同一个组

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


组密码相关的命令

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

[[email protected] ~]# groupmod -p 666 aux
[[email protected] ~]# tail  -3 /etc/gshadow
myuser:!::
myuser1:!::testuser4
aux:666::

!代表没有密码

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

$6$FVea6d2Z$H9M

    6:sha512算法 

    $FVea6d2Z$ : 红色为杂质


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

1、生成组内用户列表
[[email protected] ~]# 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,[email protected],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
[[email protected] ~]# tail -1 /etc/group #没有附加组
aux:x:10002:
[[email protected] ~]# gpasswd -M puppet,tom,helloeveryone,testuser1 aux
[[email protected] ~]# tail -1 /etc/group
aux:x:10002:puppet,tom,helloeveryone,testuser1

2、添加用户时,指定附加组:将此用户的基本组作为这些组的附加组
[[email protected] ~]# 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
[[email protected] ~]# useradd -G testuser,testuser1,testuser3 eFH
[[email protected] ~]# id eFH
uid=2009(eFH) gid=2009(eFH) groups=2009(eFH),2002(testuser),2003(testuser1),2004(testuser3)

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

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


临时切换基本组

[[email protected] ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[[email protected] ~]# groupmod -p 123 aux
[[email protected] ~]# fgrep aux /etc/gshadow
aux:123::puppet,tom,helloeveryone,testuser1
[[email protected] ~]# 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

[[email protected] ~]# gpasswd aux
Changing the password for group aux
New Password: 
Re-enter new password: 
[[email protected] ~]# fgrep aux /etc/gshadow
aux:$6$ggVWoVfqDgU5$hYO5qEOslzR/zYY3XZ6G8MEkH9t87Nxdtp24UFVwpC8CEAtvyjd1bouN84o3pl3fMg4RYIWP4VGwukhY40Ns4/::puppet,tom,helloeveryone,testuser1
[[email protected] ~]# 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文件相关的命令:

锁定/解锁密码

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

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

最近一次修改密码的日期

[[email protected] ~]# date #现在的时间
Sun Jul 30 11:31:25 CST 2017
[[email protected] ~]# tail -1 /etc/shadow #修改密码的天数
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:16802:0:99999:7:::
1、设定修改密码的日期
[[email protected] ~]# passwd -S eFH #具体时间
eFH PS 2016-01-02 0 99999 7 -1 (Password set, SHA512 crypt.)
[[email protected] ~]# 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、设定修改密码的日期
[[email protected] ~]# chage -d 15000 eFH   #修改最近一次修改密码的时间
[[email protected] ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:7:::
[[email protected] ~]# passwd -S eFH
eFH PS 2011-01-26 0 99999 7 -1 (Password set, SHA512 crypt.)
[[email protected] ~]# 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无限制 
[[email protected] ~]# tail -1 /etc/shadow 
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:0:99999:7:::
[[email protected] ~]# passwd -n 10 eFH
Adjusting aging data for user eFH.
passwd: Success
[[email protected] ~]# tail -1 /etc/shadow
eFH:$6$yR05nh36$JXL77z8usrEDURWC82p57q/5gTqqL9D1abrB07re62utw42eXEll1o5SIDXXsysOXq9nFEP3WyRWfrrEi1VVn1:15000:10:99999:7:::

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

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

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

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

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

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

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

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

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

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

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

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

账号的过期日期

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

[[email protected] ~]# useradd -D -e 100
[[email protected] ~]# cat /etc/default/useradd
# useradd defaults file
EXPIRE=100

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

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

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

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


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

以上是关于谢烟客---------Linux之用户的主要内容,如果未能解决你的问题,请参考以下文章

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

谢烟客---------Linux之脚本编程---函数

谢烟客---------Linux之文件系统管理创建与挂载

谢烟客---------Linux之程序包管理基础知识

谢烟客---------Linux之内核编译及LFS制作

谢烟客---------Linux之Bash基础特性条件测试&&自定义退出状态码