bash 特性及用户和组管理

上篇博文中总结了bash的一些特性,这次做补充:

bash变量

变量:一段由名称的连续的内存空间;这段内存空间的名称,就是变量名,在这       段内存空间存储数据   就是变量值;

程序=指令+数据

数据:文件,存在值;

向内存空间存储数据的过程,就是复制操作,赋值符号“=”;

变量的类型: 123 -- 整型:01111011

-- 字符型:ASCII:3字节

-- 字符型:UTF-8:9字节

变量:

强变量:使用之前必须事先予以声明;必须声明变量类型;

弱变量:在使用之前无需声明,无需指明变量类型;(bash变量)

变量的赋值方法:

VARNAME=VALUE

其含义:将某数值(VALUE)通过赋值操作(=)存储于特定的内存空间中              (VARNAME);

bash中变量名称的命名规范:

1.变量名只能以"_"或"字母"为起始字符,后面的其他字符可以是任意字母,数    字或下划线;

2.变量名中的字母是大小写敏感的;

3.命名的书写格式:

全大写:HISTSIZE

全小写:myvar

驼峰式:MyNewVariable

连接式:My_New_Var

4.变量名要能做到见名知意;

5.变量名不能与已知变量或bash的内置变量重复;

bash中变量的分类:

根据变量的作用范围来分:

全局变量(环境变量):作用范围为整个shell进程,包括其子            shell;

本地变量:作用范围为当前登录时打开的shell进程,不包括子shell;

局部变量:作用范围仅仅是是当前程序段,一般用于函数;

根据变量的声明方式来分:

bash的内置变量:

普通的内置变量:HISTSIZE ...

位置参数变量:$0,$1,$2...

特殊变量:$?,$#,$*,[email protected],$$....

$?:展开为最近一次执行的命令的状态返回值(退出状态码)用以表示最          近一次执行命令是否成功;

$#:不包括$0在内的其余的位置参数的个数,以十进制数字表示;

$*:从$1开始展开为位置参数。当双引号引用展开的结果时,它展开为          特殊变量IFS的第一个字符分割的值;

[email protected]:从$1开始展开为位置参数。当双引号引用展开的结果时,它展开为一          个单独的字符串;

$$:展开为当前shell的进程标识;

自定义变量:

1.变量的声明和赋值;

1):声明全局变量(环境变量):

export VARNAME

export VARNAME=VALUE

declare命令:

declare - Set variable values and attributes.

格式:declare [-aAfFgilrtux] [-p] [name[=value] ...]

常用选项:

-a:声明索引数组(如果支持)

-A:声明关联数组(如果支持)

-i:声明整型变量

-l:声明变量并将变量值中的字母转换为小写字母

-u:声明变量并将变量值中的字母转换为大写字母

-r:声明只读变量,该变量只能进行一次赋值操作

-x:声明变量并将其导出为全局变量

declare -x VARMNAME[=VARLUE]

2):声明本地变量:

VARMNAME=VALUE

也可以将局部变量转换为全局变量:

3):声明局部变量(多用于函数):

local VARNAME=[=VALUE]

2:查看环境变量:

set命令:

查看和改变shell属性的值及查看shell变量的变量名和变量值;

export命令:

查看变量名称,也可以为变量赋值

env命令;

3:查看变量的值:

echo ${VARNAME}

4.撤销变量的赋值及变量声明

unset VARNAME 

有关于保存变量的shell配置文件:

通用配置文件:

/etc/bashrc

/etc/profile

/etc/profile.d/*

私人配置文件:

~/.bashrc

~/.bash_profile

注意:

1.一般情况下,变量都是随用随声明,除非由必要,否则不建议修改配置文件     的内容。

2.声明的变量在使用完以后,最好使用unset命令予以撤销。

用户和组管理:

1.用户账户

2.组账户

3.权限分配

用户账户:实现操作者和计算机交互式操作的基础,是操作者的身份在满足了验          证条件之后的计算机系统中的映射;

用户账户分类;

超级用户(管理员):root

普通用户:

1.系统用户(非登录用户)

为了保证安全,往往会让某些进程或服务必须以非管理员的用户身份         运行;这类非管理员用户称为系统用户;此类用户一般不允许登陆到         系统;

2.登陆用户

能够登陆进而获取资源访问权限并可以对资源进行操作的用户,可以         称为登录用户;

用户账户的标识方式:

      用户登陆名称:

操作者提供简单容易记的字符串标识;

用户的数字ID(UID)

为计算机操作系统提供标准的数字表示符号,0-2^32-1

超级用户:

用户名:root

UID:0

       

普通用户:

1.系统用户:

Centos 6-:1~499

Centos 7+:1~999

2.登陆用户

Centos 6-:500+

Centos 7+:1000+

注意:6000+的用户UID通常需要用户自定义标识;

名称解析:

用户名<-->UID

用户名解析库:/etc/passwd

操作系统的认证组件通过解析库实现认证机制,即验证登录用户是否         为已经存在的用户;

用户认证库:/etc/shadow

通过此前的解析库认定的用户是存在的,在经过认证库的认证,来证         明登陆用户就是其声明的用户;

默认的认证机制:密码认证;

密码复杂性的要求:

1.尽量避免使用有规律或者来源于自字典中的字符串作为密码;

2.密码要足够长,一般不到少于6个字符;

3.密码要足够复杂,其中应该至少包括大写字母,小写字母,数字及           其它符号中的三类;

4.不定期的更换。

在Linux中,保存到认证库的密码是经过单向加密算法处理的;

能够加密密码的算法:

MD:

MDS,Message Digest Version 5:消息摘要算法第五版;

128位定长输出;

SHA:Secure Hash Algorithm:安全的哈希算法;

sha1:160加密输出

sha224:

sha256:

sha384:

sha512:默认的加密算法;

salt:通过随机算法计算得到的随机数;

随机数的生成装置;

/dev/random:仅仅从熵池中返回随机数;如果熵池中随         机数耗尽,进程会被阻塞

/dev/urandom:首先试图从熵池中返回随机数,如果熵         池中随机数耗尽,则利用伪随机数生成器生成伪随机数;

再认证库系统中密码的 最终形态:算法+salt+加密字符串;

算法:$1~$6

salt:$随机字符串

加密字符串:$单项加密的结果;

组账户:

将具有某些相同或相似属性的用户联系在一起以便可以集中授权的容器

组的分类;

1.超级用户组

2.普通用户组:

1)系统用户组

2)登陆用户组

组账户的标识方法:

组账户名称:

组账户ID(GID):

 超级用户组:0

系统用户组:

Centos 6-:1~499

 Centos 7+:1~999

登陆用户组:

Centos 6-:500+

Centos 7+:1000+

组名解析:

解析库:/etc/passwd

认证库:/etc/shadow

注意:组也需要密码加密保护;

用户账户和组账户之间的关系:

在Linux中,每个用户必须至少属于一个组;

用户账户的GID标识被称为用户的主要组(基本组),Primary

Group:每个用户必须要有主要组,且只能有一个;

在主要组的基础上,用户可以和其他的组账户存在逻辑关系,此类           组称为用户的附加组,AdditionGroup:对于用户来说,此类组可           以没有,也可以由多个;

用户和组的管理命令:

组账户的管理命令:

groupadd,groupdel,groupmod

用户账户的管理命令:

useradd,userdel,usermod

认证相关的命令:

passwd、gpasswd

其他的相关命令:

chage,chsh,finger,su,id

与用户和组相关的命令:

1.groupadd

groupadd - 创建一个新组

格式:groupadd [Options...] group

常用选项:

-g GID:指定要创建的组的GID;

-r:将组创建为系统组,此时应该保证GID在系统组范围内;

2.groupdel

groupdel - 删除一个组

格式:groupdel [Options...] group

注意:如果某个组是某个用户的主要组,则该组不能删除;

3.groupmod

groupmod - modify a group definition on the system

格式: groupmod [Options...] group

常用选项:

-g GID:修改指定组的GID;

-n GROUP_NAME:修改指定组的组帐户名称;

4.useradd

useradd - 创建一个新用户或更新默认新用户信息

格式:useradd [选项] username

useradd -D [选项]

常用选项:

-c, --commentCOMMENT:为用户添加注释信息;

-d, --homeHOME_DIR:为用户指定家目录的路径;此目录不能事先在;

-e, --expiredateEXPIRE_DATE:用户密码的过期的绝对时间                                 如:2018/01/01

-f, --inactiveINACTIVE:为用户指定密码使用达到最大时间之后的宽                        限期;

-g, --gidGROUP:为用户指明GID;如果不写此选项,系统会创建一个与          用户名相同的组并且将之设置为诶此用户的主要组;

-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:为用户添加附加组;

-m, --create-home:必须为用户创建家目录;

-M:不为用户创建家目录;在创建系统用户时常用此选项;

-r, --system:创建系统用户;

-s, --shellSHELL:为用户指定默认的shell;

-u, --uidUID:为用户指定UID;

5.userdel

userdel - 删除用户账户和相关文件

格式:userdel [选项] username

常用选项:

-r, --remove:删除用户的同时删除用户的家目录及用户邮箱文件;

6.usermod

usermod - 修改一个用户账户

格式:usermod [选项] username

常用选项:

-c, --commentCOMMENT:修改用户的注释信息;

-d, --homeHOME_DIR:修改用户的家目录;

-e, --expiredateEXPIRE_DATE:修改用户密码过期的绝对日期;

-f, --inactiveINACTIVE:修改用户密码过期之后的宽限期;

-g, --gidGROUP:修改用户的主要组(GID);

-G, --groupsGROUP1[,GROUP2,...[,GROUPN]]]:修改用户的附加组为此          列表中的组,如果同时使用了-a选项,则保留原有的附加组,将此          列表中的组追加至用户的附加组列表;

-l, --loginNEW_LOGIN:修改用户的登录名;

-s, --shellSHELL:修改用户的登录shell;

-u, --uidUID:修改用户的UID;

-L, --lock:锁定用户;

-U, --unlock:解锁被usermod -L锁定的用户;

7.passwd

passwd - update user‘s authentication tokens

格式:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x              maxdays] [-w warndays] [-i inactivedays] [-S] [--stdin]            [username]

常用选项:

-l, --lock:锁定用户;

-u, --unlock:解锁用户;

--stdin:通过标准输入接受密码,可以用于管道;

-d, --delete:删除用户的密码,也可以用于解除用户锁定;

-e, --expire:直接设置用户密码过期;

-n, --minimum DAYS:用户密码的最短使用时长;默认值为0;

-x, --maximum DAYS:用户密码的最长使用时长;默认值为99999;

-w, --warning DAYS:用户密码过期之前多少天开始发送警告信息;

-i, --inactive DAYS:用户密码过期之后的宽限期;

-S, --status:查看用户密码的状态信息;

8.chage

chage - 更改用户密码过期信息

格式:chage [选项] username

常用选项:

-d, --lastdayLAST_DAY

-E, --expiredateEXPIRE_DATE

-I, --inactiveINACTIVE

-l, --list

-m, --mindaysMIN_DAYS

-M, --maxdaysMAX_DAYS

-W, --warndaysWARN_DAYS

9.chsh

chsh - change your login shell == usermod -s

格式:chsh [-s shell] [-l] [-u] [-v] [username]

10.finger

finger — user information lookup program

格式:finger [-lmsp] [user ...] [[email protected] ...]

11.id

id - print real and effective user and group IDs

格式:id [OPTION]... [USER]

常用选项:

-u:显示用户的有效UID;

-g:显示用户的有效GID;

-n:显示名称;

12.su

su - run a command with substitute user and group ID

格式:su [options...] [-] [user [args...]]

常用选项:

-l, --login:以后面的用户身份登录到系统;

-c "COMMAND":以前面指定的用户身份运行COMMAND;不进行身份登录         切换;

  

时间: 2024-10-04 04:32:05

bash 特性及用户和组管理的相关文章

用户和组管理基础

用户和组管理基础 简介 在linux系统中,用户管理是基于用户名和密码的方式进行资源的分配 用户类别: 用户标识:UserID,UID 16bits二进制数字:0-65535 管理员:ID号为0:------只要是为0的就是管理员用户 普通用户:1-65535     系统用户:1-499(CentOS 6),1-999(CentOS 7)     登录用户:500-60000(CentOS6),1000-60000(CentOS7) 名称解析:名称转换     Username <--> U

玩转linux第四天之用户及组管理概念(一)

1    前言 本文档主要介绍用户及组管理类相关概念,并提供相应案例解释其含义. 学习这些基础命令是一个Linux爱好者需要具备的首要条件,让小编带领你们进入Linux的世界看看它的一颦一笑. 读者对象 本文档(本指南)主要适用于以下人员: Linux爱好者 2     环境简介 项目 配置 硬件型号 Tinkpad T440P CPU I5-4210 内存 4G 操作系统 Windows 8.1 虚拟系统 Vmware workstation 11 CPU 1Core 内存 1G 操作系统 C

linux综合顺练(涉及管道,正则,重定向、用户及组管理、权限管理等相关知识点)

一.概述   本博文是对前边总结的知识点的一个综合利用,涉及的知识点比较广泛,涉及的大概有"bash特性之管道","bash特性之重定向","grep命令与正则表达式的利用","linux下用户与组管理","linux下权限管理"等.下面给出上边提到知识点之前的博客链接: bash的重定向和管道相关知识点:http://blog.51cto.com/9657273/2172717 文件基础管理类命令汇总:h

用户和组管理类命令

1.列出当前系统上所有已经登陆的用户的用户名,注意:同一个用户登陆多次,则显示一次即可. who |cut -d' ' -f1 | sort | uniq 2.取出最后登陆到当前系统的用户的相关信息 w|tail-n1或者who|tail-n1 3.取出当前系统上被用户当做其默认shell的最多的那个shell cat /etc/passwd | awk -F':' '{print $7}'|uniq –c 结果为:/sbin/nologin awk -F':' '{a[$7]++}END{fo

5、linux用户和组管理详解

linux用户和组管理 类Unix系统的设计初衷就是为让多用户同时工作,所以也迫使Linux系统有了极强的安全性,在前面安装红帽RHEL7操作系统时还特别要求"设置root用户密码",而root用户是存在于所有类UNIX系统中的"超级用户". 用户管理 root账户介绍(超级管理员) root用户拥有极高的系统所有权,能够管理系统的各项功能,如添加/删除用户,启动/关闭进程,开启/禁用硬件设备等权限.虽然使用root用户工作时不会受到权限的控制,但老话讲"

Linux重定向及用户和组管理

一.bash的I/O重定向及管道 1.Linux下一般缺省的输入称之为标准输入,即键盘输入,缺省的输出称之为标准输出,即显示器输出.Linux给程序提供了三种I/O设备: 标准输入(STDIN)--0:默认接受来自键盘的输入 标准输出(STDOUT)--1:默认输出到终端窗口 标准错误(STDERR)--2:默认输出到终端窗口 I/O重定向即改变默认位置. 输出重定向常用语法: CMD > file:把STDOUT重定向到file文件中,原有文件内容会被覆盖: CMD >> file:在

linux用户和组管理

在Linux系统上,用户管理是基于用户名和密码的方式进行资源的分配,Linux上的用户分为以下类别: 管理员:root UID 0 普通用户:1-65535 系统用户:1-999 对守护进程获取资源进行权限分配 登录用户:1000+ 通过交互式方式登录 组group 管理员组;root GID 0 普通组:1-65535,普通组又分为: 系统组:1-999 一般组:1000+,而一般组分为: 基本组:也叫私有组,创建用户时,如果没有指定其所属的组,系统自动为期创建一个与用户同名的组,用户必须属于

Linux用户与组管理(一)

Linux用户与组管理(一) 简介Linux用户与组 useradd usermod userdel groupadd groupmod groupdel 环境:CentOS 6.8 简介Linux用户与组 Linux系统在静态视角下,无非就是由诸多文件组成的一个"文件系统":从动态视角来看,无非就是一个在内核支配之下的一个"文件系统".这两种角度是有些区别的:动态角度下,内核是独立的,内核负责管控文件系统,而在静态角度下,连内核本身也是文件系统下的一个文件而已.故

Solaris用户管理(一):用户与组管理

2008-07-01 09:19 用户管理是系统管理的基础.Solaris中不但支持传统Unix所支持的用户和组的概念,还从Solaris 8开始引入了基于角色的访问控制(RBAC),提供了一种更加安全.灵活的方式来进行权限分配和管理. 先看看Solaris下的基本用户管理.(详细的资料可以自行查阅man手册) Solaris 下的基本用户管理体系包括/etc目录下的passwd.group和shadow三个配置文件,以及useradd.usermod.userdel. passwd.group