一、上集回顾

  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. ubuntu docker inflxudb(安装 使用 备份 还原 以及python编码) telegraf Grafana

    inflxudb1.7.7 1.拉取最新的镜像 docker pull influxdb 2.运行实例: docker run -d --restart=always -p 8086:8086 -p ...

  2. 什么是SQL ?

    SQL 1.什么是SQL ? Structured Query Languange:结构化查询语言 其实就是定义了操作所有关系型数据库的规则.每一种数据库操作的方式存在不一样的地方,称为“方言”. 2 ...

  3. C# 手写将对象转换为Json方法

    一.需求场景 (1)不能用JavaScriptSerializer.DataContractJsonSerializer.Newtonsoft.Json这些写好的方法,需要自己写方法. (2)转化的类 ...

  4. Vertx的命令行

    IntelliJ----创建一个运行配置(Application), 用io.vertx.core.Launcher类作为主类,在程序参数输入:run your-verticle-fully-qual ...

  5. react 使用的小建议

    使用pureRender,setState和Immutable.js来操作state Immutable 中文意思不可变. 不能直接修改state的值,要用setState 和Immutable re ...

  6. java。JDK的API,版本1.6.0中文版下载

    转载自https://blog.csdn.net/xiao9469/article/details/87783561 链接: https://pan.baidu.com/s/1YqrbTD_msTmn ...

  7. springmvc处理json数据

    springMVC提供了处理JSON格式请求/响应的HttpMessageConverter MappingJckson2HttpMessageConverter利用Jackson开源类包处理JSON ...

  8. 21、解决关于 vue项目中 点击按钮路由多了个问号

    在vue项目开发过程中,点击按钮结果页面刷新了一遍 后来发现路径变成了 localhost:8080/?#/login 原因: 这里是 form 表单,点击了button 按钮,触发了他的默认事件,就 ...

  9. android中fragment卡顿的原因

    首页的ViewPager有十几个Fragment,在快速切换的时候,容易产生卡顿现象. 二.分析当ViewPager切换到当前的Fragment时,Fragment会加载布局并显示内容,如果用户这时快 ...

  10. django应用之corsheaders[跨域设置]

    安装 pip install django-cors-headers 注册应用 INSTALLED_APPS = ( ... 'corsheaders', ... ) 中间层设置 MIDDLEWARE ...