一、上集回顾

  1、bash globing,IO重定向及管道

    glob:*,?,[],[^]

    IO重定向:

      >,>>,

      2>,2>>

      &>,&>>

      >  /PATH/TO/SOMEWHERE 2>&1

      <,<<(Here Document)

      COMMAND1 | COMMAND2

      命令:tr,tee

  2、用户管理基础概念

    a、用户类别:

      管理员,普通用户(系统用户和登陆用户)

    b、组类别:

      管理员组,普通用户组

      基本组和附加组(主组和附加组)

      私有组,公共组

    c、数据库文件:

      /etc/passwd

        login:password:uid:gid:comment:home:shell

      /etc/shadow

        login:encrpted_password:最近一次修改密码日期:密码最短使用期限:最长使用期限:警告时长:非活动时间:过期时间:保留字段

      /etc/group

        group:password:gid:user_list

      密码存储格式:单向加密,并借助于salt完成

        md5

        sha1

        sha224

        sha256

        sha384

        sha512

二、Linux用户和组管理

  1、groupadd:添加组   groupadd [options] group

    a、groupadd -g:自定义gid如果不指定那么默认是上一个组的gid + 1

    b、groupadd -r:创建系统组

[root@node1 ~]# tail - /etc/group
centos:x::
gentoo:x::
[root@node1 ~]# groupadd -r testgrp
[root@node1 ~]# tail - /etc/group
gentoo:x::
testgrp:x::
[root@node1 ~]# groupadd -g  grp1
[root@node1 ~]# groupadd -r -g mariadb
[root@node1 ~]# tail - /etc/group
grp1:x::
mariadb:x::

  2、安全上下文模型:

    进程以其发起者的身份运行:

      进程对文件的访问权限,取决于发起此进程的用户的权限:

    系统用户:为了能够让后台进程或服务类进程以非管理员的身份运行,通常需要为此创建多个普通用户,这类用户从不用登陆系统。

  3、groupmod:修改组属性 groupmod  [options] GROUP

    a、groupmod  -g:GID,修改GID

[root@node1 ~]# tail - /etc/group
grp1:x::
mariadb:x::
[root@node1 ~]# groupmod -g mariadb
[root@node1 ~]# tail - /etc/group
grp1:x::
mariadb:x::

    b、group -n  new_name old_name:修改组名称

[root@node1 ~]# groupmod -n perconaserver mariadb
[root@node1 ~]# tail - /etc/group
grp1:x::
perconaserver:x::

  4、groupdel:删除组   groupdel GROUP

[root@node1 ~]# groupdel perconaserver
[root@node1 ~]# groupdel grp1

  5、useradd命令:创建用户   useradd [options] LOGIN

[root@node1 ~]# file $(which adduser)
/usr/sbin/adduser: symbolic link to `useradd'

    a、useradd wohaoshuai1

[root@node1 ~]# useradd wohaoshuai1
[root@node1 ~]# tail - /etc/passwd
wohaoshuai1:x::::/home/wohaoshuai1:/bin/bash
[root@node1 ~]# tail - /etc/group
wohaoshuai1:x::

    b、useradd -u  UID:指明uid

[root@node1 ~]# useradd -u  openstack
[root@node1 ~]# tail - /etc/group
openstack:x::

    c、useradd -g GROUP:指定基本组ID,此组得事先存在,否则可能出错。(指明组名称或组ID都可以)。创建用户的时候如果不指明组那么就会创建默认的私有组。-g表示将用户加入此基本组,-G表示将此用户加入附加组。

[root@node1 ~]# useradd -g openstack wohaoshuai2
[root@node1 ~]# tail - /etc/passwd
wohaoshuai2:x::::/home/wohaoshuai2:/bin/bash
[root@node1 ~]# useradd -g wohaoshuai3
[root@node1 ~]# tail - /etc/passwd
wohaoshuai3:x::::/home/wohaoshuai3:/bin/bash
[root@node1 ~]# tail - /etc/group
openstack:x::

    d、useradd -c :增加注释信息

[root@node1 ~]# useradd -c "MogileFS DFS" mogilefs
[root@node1 ~]# tail - /etc/passwd
mogilefs:x:::MogileFS DFS:/home/mogilefs:/bin/bash

    e、useradd -G && useradd --groups:指明用户所属的附加组,多个组之间用逗号分隔。

[root@node1 ~]# cat /etc/group|grep ygrp
mygrp:x:3000:testuser
[root@node1 ~]# useradd -G mygrp archlinux
[root@node1 ~]# tail -1 /etc/passwd
archlinux:x:5005:5006::/home/archlinux:/bin/bash
[root@node1 ~]# tail -1 /etc/group
archlinux:x:5006:
[root@node1 ~]# cat /etc/group|grep ygrp
mygrp:x:3000:testuser,archlinux

    f、useradd -d HOME_DIR:以指定的路径为用户的家目录,通过复制/etc/skel此目录并重命名来实现,指定的家目录路径如果事先存在则不会为用户复制环境配置文件。

[root@node1 ~]# useradd -d /tmp/moosefs moosefs
[root@node1 ~]# ls /tmp/
moosefs systemd-private-310789de41c149e295ca734de6eb34ff-vgauthd.service-2RCX6b systemd-private-310789de41c149e295ca734de6eb34ff-vmtoolsd.service-fjAVWv
[root@node1 ~]# ls -la /tmp/moosefs/
total
drwx------ moosefs moosefs Dec : .
drwxrwxrwt. root root Dec : ..
-rw-r--r-- moosefs moosefs Aug .bash_logout
-rw-r--r-- moosefs moosefs Aug .bash_profile
-rw-r--r-- moosefs moosefs Aug .bashrc
[root@node1 ~]# mkdir /tmp/mytest
[root@node1 ~]# useradd -d /tmp/mytest mytest
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
[root@node1 ~]# ls -la /tmp/mytest/
total
drwxr-xr-x root root Dec : .
drwxrwxrwt. root root Dec : ..
[root@node1 ~]# ls -la /etc/skel/
total
drwxr-xr-x. root root Jun .
drwxr-xr-x. root root Dec : ..
-rw-r--r--. root root Aug .bash_logout
-rw-r--r--. root root Aug .bash_profile
-rw-r--r--. root root Aug .bashrc

    g、useradd -s SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中

[root@node1 ~]# cat /etc/shells
/bin/sh
/bin/bash
/sbin/nologin #表示系统用户的不登录
/usr/bin/sh
/usr/bin/bash
/usr/sbin/nologin
/bin/tcsh
/bin/csh
[root@node1 ~]# useradd -s /bin/csh keystone
[root@node1 ~]# tail - /etc/passwd
keystone:x::::/home/keystone:/bin/csh

    h、useradd -r 创建系统用户

    i、useradd -M:不要创建用户的主目录,即使/etc/login.defs(Create_Home)中的系统宽设置设置为yes。

    j、用户创建时默认选项在/etc/login.defs文件中

[root@node1 ~]# cat /etc/login.defs |grep -Ev "^#|^$"
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512

    j、useradd -D:显示用户创建时默认的配置信息。默认信息保存路径为/etc/default/useradd。也可以直接编辑此文件进行修改

[root@node1 ~]# cat /etc/default/useradd
# useradd defaults file
GROUP=
HOME=/home
INACTIVE=-
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@node1 ~]# useradd -D
GROUP= #创建用户时同时创建一个与用户同名的私有组
HOME=/home #用户创建时是否创建家目录,如果创建那么家目录就在/home
INACTIVE=- #非活动期限为禁用
EXPIRE= #默认过期期限为永不过期
SHELL=/bin/bash #用户创建时的默认shell
SKEL=/etc/skel #默认在哪个目录复制信息
CREATE_MAIL_SPOOL=yes #是否给用户创建邮件路径。默认在/var/spool/mail/路径下

      修改创建用户时默认的shell为cshell

[root@node1 ~]# useradd -D -s /bin/csh
[root@node1 ~]# useradd -D
GROUP=
HOME=/home
INACTIVE=-
EXPIRE=
SHELL=/bin/csh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
[root@node1 ~]# useradd nova
[root@node1 ~]# tail - /etc/passwd
nova:x::::/home/nova:/bin/csh

  6、usermod命令:修改用户属性。 usermod [options] LOGIN

    a、usermod -u UID:修改用户的ID为此处指定的新UID

    b、usermod -g  GID:修改用户所属的基本组为此处所指定的组,不过此组应该事先存在才可以

    c、usermod  -G  GROUP [,GROUP2,...]:修改用户所属的附加组,原来的附加组会被覆盖,如果不想原来的附加组被覆盖那么加-a,即--append即可。

    d、usermod  -c,即--comment COMMENT:修改注释信息

    e、usermod  -d,即--home HOME_DIR:以指定的路径为用户的家目录。如果用户本来有家目录并且创建了其它文件的话那么修改过后就会没有了,因此我们一般和参数-m一起使用,即      --move-home

    f、usermod -l:即--login NEW_LOGIN,修改用户名

    g、usermod -s,--shell  SHELL:修改用户指定的shell

    h、usermod -L:即--lock,锁定用户密码,即在用户原来的密码字符串之前添加一个"!",如果要解锁用户的密码,那么需要使用-U,即--unlock,解锁用户的密码

  7、userdel命令:删除用户

    a、userdel -r:删除用户时默认不会删除其家目录,添加-r时会一并删除其家目录。

三、练习

  1、创建用户gentoo,UID为4001,基本组为gentoo,附加组为distro(GID为5000)和peguin(GID为5001)

  2、创建用户fedora,其注释信息为"Fedora Core",默认shell为/bin/tcsh

  3、修改gentoo用户的家目录为/var/tmp/gentoo:要求其原有文件仍能被用户访问

  4、为gentoo新增附加组为netadmin

四、其它命令

  1、passwd:密码管理

    a、passwd :修改用户自己的密码

    b、passwd  USERNAME:修改指定用户的密码,但仅root有此权限。

    c、-l,-u:锁定和解锁用户

    d、-d  --delete:清除用户的密码

    e、-e  DATE:过期期限

    f、-i  DAYS:非活动期限

    g、-n DAYS:修改密码的最短使用期限

    h、-x DAYS:密码的最长使用期限

    i、-w  DAYS:警告期限

    j、--stdin,从标准输入获取密码

[root@node1 ~]# echo "wohaoshuai"|passwd --stdin nova
Changing password for user nova.
passwd: all authentication tokens updated successfully.

  2、gpasswd:给组定义密码

    a、-a USERNAME:向组中添加用户

    b、-d USERNAME:从组中移除用户

    c、gpasswd USERNAME:给组添加密码

[root@node1 ~]# gpasswd mygrp
Changing the password for group mygrp
New Password:
Re-enter new password:
[root@node1 ~]# cat /etc/gshadow |grep mygrp
mygrp:$$xdoRQ/GgErjlnaj$OjOXc7zCrU.1OwNA3InYcn1hous5Jmj6iiXwHawiAEsW0tt3rrzpFJzcdVd0JxJpHOJ2IgtZW0zTjckwtO0Ed.::testuser,archlinux
[root@node1 ~]# su - archlinux
[archlinux@node1 ~]$ whoami
archlinux
[archlinux@node1 ~]$ id
uid=(archlinux) gid=(archlinux) groups=(archlinux),(mygrp)
[archlinux@node1 ~]$ touch test
[archlinux@node1 ~]$ ll
total
-rw-rw-r-- archlinux archlinux Dec : test
[archlinux@node1 ~]$ newgrp mygrp #切换基本组为mygrp
[archlinux@node1 ~]$ id
uid=(archlinux) gid=(mygrp) groups=(mygrp),(archlinux)
[archlinux@node1 ~]$ touch test2
[archlinux@node1 ~]$ ll
total
-rw-rw-r-- archlinux archlinux Dec : test
-rw-r--r-- archlinux mygrp Dec : test2
[archlinux@node1 ~]$ exit #退出基本组
exit
[archlinux@node1 ~]$ id
uid=(archlinux) gid=(archlinux) groups=(archlinux),(mygrp) #之所以可以任意切换是因为archlinux本来就属于mygrp组 现在我们来使用nova用户
[root@node1 ~]# su - nova
[nova@node1 ~]$ id
uid=(nova) gid=(nova) groups=(nova)
[nova@node1 ~]$ touch test
[nova@node1 ~]$ ll
total
-rw-rw-r-- nova nova Dec : test
[nova@node1 ~]$ newgrp mygrp #此时就需要输入密码了
Password:
[nova@node1 ~]$ touch test2
[nova@node1 ~]$ ll
total
-rw-rw-r-- nova nova Dec : test
-rw-r--r-- nova mygrp Dec : test2

  3、newgrp命令:临时切换指定的组为其它组

    a、- :会模拟用户重新登录以实现重新初始化其工作环境

  4、chage命令:更改用户密码过期信息   chage [选项] 登录名

    a、-d

    b、-b

    c、-w

    d、-m

    e、-M

  5、id命令:显示用户的实际和有效的id

    a、id :显示自己的

    b、id  username:显示其它人的id

    c、-u:仅显示有效的UID

    d、-g:仅显示用户的基本组GID

[root@node1 ~]# id archlinux
uid=(archlinux) gid=(archlinux) groups=(archlinux),(mygrp)
[root@node1 ~]# id -g archlinux

    c、-G:仅显示用户所属的所有组GID

[root@node1 ~]# id archlinux
uid=(archlinux) gid=(archlinux) groups=(archlinux),(mygrp)
[root@node1 ~]# id -g archlinux [root@node1 ~]# id -G archlinux

    d、-n:仅显示名字而非ID

  6、su命令:switch user

    a、登录式切换(完全式切换):会通过重新读取用户的配置文件来重新初始化

      su - USERNAME

      su -l  USERNAME

[root@node1 ~]# su - nova
Last login: Thu Dec :: CST on pts/
[nova@node1 ~]$ pwd
/home/nova

    b、非登录式切换(非完全切换):不会读取目标用户的配置文件进行初始化

      su  USERNAME

[root@node1 ~]# su nova
[nova@node1 /root]$ pwd
/root

    c、注意:管理员可无密码切换至其它任何用户

    d、su -c 'COMMAND',不切换用户,仅仅以目标用户运行此处指定的命令

[root@node1 ~]# su - nova -c 'pwd'
/home/nova
[root@node1 ~]#

  7、其它不常用命令:

    a、chsh修改管理员sh

[root@node1 ~]# chsh nova
Changing shell for nova.
New shell [/bin/csh]: /bin/sh
Shell changed.
[root@node1 ~]# cat /etc/passwd|grep nova
nova:x::::/home/nova:/bin/sh

    b、chfn

    c、finger

    d、whoami

    e、pwck:查看用户密码是否有问题

    f、grpck:查看组密码是否有问题

五、命令总结

  groupadd,groupmod,groupdel,useradd,usermod,userdel,passwd,gpasswd,newgrp,id,su,chage

linux学习16 Linux用户和组管理命令演练和实战应用的更多相关文章

  1. linux学习(五)用户与组管理命令,以及用户信息文件解释

    目录 (1)/etc/passwd文件 (2)/etc/shadow passwd命令 userdel命令 usermod命令 groupadd @(用户与组管理命令) linux是一个多用户多任务的 ...

  2. Linux用户与组管理命令

    1.列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可. who | cut -d" " -f1 | sort -u 或 who | cut -d ...

  3. Linux用户和组管理命令-用户创建useradd

    用户管理命令 useradd usermod userdel 组帐号维护命令 groupadd groupmod groupdel 用户创建 useradd 命令可以创建新的Linux用户 格式: u ...

  4. Linux:Day4(下) 用户及组管理

    Linux用户:Username/UID 管理员:root,0 普通用户: 1-65535 系统用户:1-499 对守护进程获取资源进行权限分配: 登陆用户:500+ 交互式登录: Linux组:Gr ...

  5. linux用户与组管理命令的基本操作

    用户账号管理命令 为了提高系统的利用率,避免因多个用户共用一个root账号而造成不必要要的系统安全隐患,通常需要为 新用户添加账户.在Linux系统中,添加用户只能由超级用户来完成,也就是说,只能由r ...

  6. linux学习之路第八天(组管理和权限管理)

    组管理和权限管理 1.Linux 组基本介绍 在linux中的每个用户必须属于一个组,不能独立于组外.在linux中每个文件有所有者,所在组,其他组的概念 1)所有者 2)所在组 3)其它组 4)改变 ...

  7. Linux就该这么学--命令集合5(用户与组管理命令)

    1.useradd命令用于创建新用户:(useradd [选项] 用户名) 附录: -d 指定用户的家目录 -D 展示默认值 -e 账号有效截止日期,格式:YYY-MM-DD -g 指定一个初始用户组 ...

  8. Linux用户和组管理命令-用户属性修改usermod

    用户属性修改 usermod 命令可以修改用户属性 格式: usermod [OPTION] login 常见选项: -u UID: 新UID -g GID: 新主组 -G GROUP1[,GROUP ...

  9. Linux用户和组管理命令-切换用户su

    切换用户或以其他用户身份执行命令 su: 即 switch user,命令可以切换用户身份,并且以指定用户的身份执行命令 格式: su [options...] [-] [user [args...] ...

随机推荐

  1. 定时删除10天前的Es索引

    说明 主要用在索引名为 xxxx-yyyy.MM.dd 这种,可以自定义修改下边的脚本 删除索引shell 创建 delete_es_indices_over_10_day.sh #!/bin/bas ...

  2. python利用dijkstra算法求解图中最短距离

    利用dijkstra算法,来完成图中两个顶点间最短的距离,可以直接复制使用,只需要修改参数即可 def dijkstra_raw(edges, from_node, to_node): "& ...

  3. java什么是构造方法

    构造方法 一.构造方法的特点 (1)每当创建给定类的实例时就调用的方法 (2)与类同名,但没有返回类型 (3)Java 为对象分配内存,初始化实例变量并调用构造方法 (4)两种构造方法 1.参数化构造 ...

  4. ASP.NET MVC实现单用户登录

    现在许多网站都要求登录后才能进行进一步的操作,当不允许多用户同时登录一个帐号时,就需要一种机制,当再登录一个相同的帐号时,前面登录的人被挤下线,或者禁止后面的人登录.这里实现的是前一种功能. 网上有许 ...

  5. VS2019 Nuget找不到包的问题处理

    VS不记得改了什么设置之后,发现找不到EF 解决办法 1.点击右侧的设置按钮 2.弹出窗中左侧树形结构选择“程序包源”,再点击右上方的添加按钮 输入一下信息:https://www.nuget.org ...

  6. listener中@Autowired无法注入bean的一种解决方法

    背景:使用监听器处理业务,需要使用自己的service方法: 错误:使用@Autowired注入service对象,最终得到的为null: 原因:listener.fitter都不是Spring容器管 ...

  7. springboot使用 @Transactional 注解配置事务管理

    介绍 springboot对数据库事务的使用非常的方便,只需要在方法上添加@Transactional注解即可.Spring 为事务管理提供了丰富的功能支持.Spring 事务管理分为编程式和声明式的 ...

  8. Socker编程之UDP

    一:socket简介 1. 不同电脑上的进程之间如何通信 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的. ...

  9. Python面向对象继承案例

    面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 继承 实现代码的重用,相同的代码不需要重复的编写 多态 不同的对象调用相同的方法,产生不同的执行结果,增加代码的灵活 ...

  10. python基础--数据结构之字典

    字典 特点:无序,键唯一 目录 1.字典的创建 2. .setdefault 的使用 3.  字典中的查找 4.字典中的改 5. 字典中的删除 6. 打印字典的方法 7. 格式化字符串 8. 合并字符 ...