范例
范例1:显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件
ls /etc/[^a-Z][a-Z]*
范例2:复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中
mkdir -p /tmp/mytest1;cp /etc/p*[^0-9] /tmp/mytest1
范例3:将/etc/issue文件中的内容转换为大写后保存到/tmp/issue.out文件中
cat /etc/issue|tr 'a-z' 'A-Z' > /tmp/issue.out
用户及组管理
Liunx的安全模型(3A)
Authentication:认证,验证用户身份
Authorization:授权,不同的用户设置不同权限
Accouting|Audition:审计
用户
Linux中的每个用户都是通过User ID(UID)来唯一标识。
管理员:root UID为0
普通用户:1~60000自动分配
系统用户:1-499(Centos6以前)1-999(Centos7之后)
作用:对守护进程获取资源进行权限分配
登录用户:500+(Centos6以前)1000+(Centos7之后)
作用:给用户进行交互式登录使用
用户组
Linux中可以将一个或多个用户加入用户组中,用户组是通过Group ID(GID) 来唯一标识的。
管理员组:root UID为0
普通组:1~60000自动分配
系统用户:1-499(Centos6以前)1-999(Centos7之后)
作用:对守护进程获取资源进行权限分配
登录用户:500+(Centos6以前)1000+(Centos7之后)
作用:给用户使用
用户跟用户组的关系
用户的主要组(primary group):用户必须属于一个且只有一个主组,默认创建用户时会自动创建和用户名同名的组,做为用户的主要组,由于此组中只有一个用户,又称为私有组
用户的附加组(supplementary group): 一个用户可以属于零个或多个辅助组,附属组
安全上下文(重要)
Linux安全上下文Context:运行中的程序,即进程 (process),以进程发起者的身份运行,进程所能够访问资源的权限取决于进程的运行者的身份
比如:分别以root和普通用户的身份运行/bin/cat /etc/shadow ,得到的结果是不同的,资源能否能被访问,是由运行者的身份决定,非程序本身
用户和组的配置文件
/etc/passwd 用户及属性信息
/etc/shadow用户密码及相关属性
/etc/group组及其属性信息
/etc/gshadow组密码及其相关属性
用户管理命令
useradd 创建用户
格式:
useradd [options] login
常用选项:
-u 指定UID
-o 配合-u选项,不检查UID
-g 指明用户所属基本组,可为组名,也可以GID
-d 创建指定路径作为家目录
-c "注释信息" 用户的注释信息
-s 指定用户的shell程序
-G 指定用户的附加组,需要注意的是附加组一定要存在
-r 创建系统用户
-m 用于系统用户创建家目录
-N 不创建私有组作为主组,使用users为主组,跟Windows类似
-M 不创建家目录,用于非系统用户
范例1:创建用户mandriva,其ID为1005,基本组为distro
#先创建基本组distro
#创建用户
useradd -u 1005 -g distro mandriva
范例2:创建用户mageia,其ID为1100,家目录为/home/liunx
#创建用户
useradd -u 1100 -d /home/liunx mageia
#查看创建用户的信息
getent passwd mageia
mageia:x:1100:1100::/home/liunx:/bin/bash
usermod 用户属性修改
格式:
usermod [option] login
常用选项:
-u UID: 新UID
-g GID: 新主组
-G GROUP1[,GROUP2,...[,GROUPN]]]:新附加组,原来的附加组将会被覆盖;若保留原有,则要同时使用-a选项
-s SHELL:新的默认SHELL
-c 'COMMENT':新的注释信息
-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据,同时使用-m选项
-l login_name: 新的名字
-L: lock指定用户,在/etc/shadow 密码栏的增加 !
-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉
-e YYYY-MM-DD: 指明用户账号过期日期
-f INACTIVE: 设定非活动期限,即宽限期
范例1:修改slackware的默认shell为/bin/bash
usermod -s /bin/bash slackware
userdel 删除用户
格式:
userdel [option] login
常用选项:
-f 强制
-r 删除用户家目录和邮箱
范例1:删除mandrive用户,并保留家目录
#删除用户
usedel mandrive
#删除邮箱
rm -rf /var/mail/mandrive
ID 查看用户UID,GID相关信息
格式:
id [option] login
常用选项:
-u 查看用户的uid
-g 查看用户的gid
-G 显示用户所属的组ID
-n 显示名称,需配合ugG使用
passwd 修改用户密码
格式:
passwd [OPTIONS] UserName
常用选项:
-d 删除指定用户密码
-l 锁定指定用户
-u 解锁指定用户
-e 强制用户下次登录修改密码
-f 强制操作
-n mindays:指定最短使用期限
-x maxdays:最大使用期限
-w warndays:提前多少天开始警告
-i inactivedays:非活动期限
--stdin:从标准输入接收用户密码,Ubuntu无此选项
chage 修改用户密码策略
格式:
chage [OPTIONS] UserName
常用选项:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
其他命令(不重要)
chfn 指定个人信息
chsh 指定shell,相当于usermod -s
finger 可看用户个人信息
用户组管理命令
groupadd 创建组
格式:
groupadd [option] groupname
常用选项:
-g GID 指明GID号
-r 创建系统组 CentOS 6之前(ID<500)CentOS 7以后(ID<1000)
groupmod 修改组
格式:
groupmod [option] groupname
常用选项:
-n group_name: 新名字
-g GID: 新的GID
groupdel 删除组
格式:
groupdel [option] groupname
常用选项:
-f 强制删除,即使是用户的主组也强制删除组
groupwd更改组密码,修改附加组的成员关系
格式:
groupwd [option] groupname
常用选项:
-a user 把用户添加到指定组中
-d user 从指定组上移除用户
-A user1,user2... 设置有管理员权限的用户列表
newgrp临时切换主组
格式:
newgrp [-] [group]
注意:用户不属于该组,则需要组密码。
更改和查看组成员
groupmems 可以管理附加组的成员关系
格式:
groupmems [options] [action]
常用选项:
-g, --group groupname #更改为指定组 (只有root)
-a, --add username #指定用户加入组
-d, --delete username #从组中删除用户
-p, --purge #从组中清除所有成员
-l, --list #显示组成员列表
groups 可查看用户组关系
格式:
#查看用户所属组列表
groups [OPTION].[USERNAME]...
范例
范例1:创建组distro,其GID为2019
groupadd -g 2019 distro
范例2:创建用户mandriva,其ID为1005,基本组为distro
useradd -u 1005 -g distro mandriva
#查看创建的用户
id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)
范例3:创建用户mageia,其ID为1100,家目录为/home/linux
useradd -u 1100 -d /home/linux mageia
#查看
getent passwd mageia
mageia:x:1100:1100::/home/liunx:/bin/bash
范例4:给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期
echo mageedu | passwd --stdin mageia;chage -M 7 mageia
#查看密码过期日期
chage -l mageia
Last password change: Nov 02, 2020
Password expires: Nov 09, 2020
Password inactive: never
Account expires: never
Minimum number of days between password change: 0
Maximum number of days between password change: 7
Number of days of warning before password expires: 7
范例5:删除mandriva用户,但保留家目录
#删除用户并删除邮箱
userdel mandriva;rm -rf /var/mail/mandriva /var/spool/mail/mandriva
范例6:创建用户slackware,其ID为2002,基本组为distro,附加组为peguin
groupadd peguin;useradd -u 2002 -g distro -G peguin slackware
范例7:修改slackware的默认shell为/bin/bash
usermod -s /bin/bash slackware
范例8:为用户slackware新增附加组admins
groupadd admins;usermod -a -G admins slackware