一、上集回顾

  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. 超级简单POI多sheet导出Excel实战

    本章节主要基于上一章节单sheet导出的基础上进行改造实现多sheet的导出,上一章节参考地址:https://www.cnblogs.com/sunny1009/p/11437005.html 1. ...

  2. memcached源码分析一-slab

    Slab作为一种内存管理方案,其作用主要有以下2点: a) 避免频繁的内存分配释放造成的内存碎片 b) 减少内存分配操作产生的性能开销 Linux内核数据结构中也有slab的设计,Linux提供了一套 ...

  3. uniapp销毁addEventListener事件

    百度了很多vue的方法,结果都不适用,只好自己想办法,也是无关紧要的东西,不影响运行,但是看着心里都烦,有更好的解决方案欢迎指点上报错信息 这是一个监听滚动的方法,离开了那个页面进入详情页发现这个没有 ...

  4. .net core 2.0的认证和授权

    在asp.net core中,微软提供了基于认证(Authentication)和授权(Authorization)的方式,来实现权限管理的,本篇博文,介绍基于固定角色的权限管理和自定义角色权限管理, ...

  5. 【题解】Kathy函数 [BZOJ1223] [P2235] [HNOI2002]

    [题解]Kathy函数 [BZOJ1223] [P2235] [HNOI2002] 这几疯狂刷了数位\(dp\)的题,到这道题时被卡了一天,一看大佬的讲解发现居然是求回文数╮(╯_╰)╭ 感觉被大佬狠 ...

  6. 『炸弹 线段树优化建图 Tarjan』

    炸弹(SNOI2017) Description 在一条直线上有 N 个炸弹,每个炸弹的坐标是 Xi,爆炸半径是 Ri,当一个炸弹爆炸 时,如果另一个炸弹所在位置 Xj 满足: Xi−Ri≤Xj≤Xi ...

  7. http://blog.csdn.net/baidu_31657889/article/details/52315902

    Java技术——你真的了解String类的intern()方法吗 转载 2016年08月25日 16:30:14 标签: java intern / intern / java 技术 6542 0.引 ...

  8. C# Winform 文本框默认提示信息

    private string Notes = "提示文本"; private void textBox1_Leave(object sender, EventArgs e) { / ...

  9. 关于 返回数据类型 后 加& 的作用

    关于  返回数据类型 后 加& 的作用 请看以下图片 我的测试 //纯粹就是 为了 可作为 左值而存在的 方法 前 的返回值 int& ,如 int& Method(); // ...

  10. 象棋中“车”的攻击范围_C#

    如题: var a = new String[8,8]; int h, l; Console.WriteLine("输入车所在的行(0-7):"); h = int.Parse(C ...