热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

通配符、用户组管理与文件权限

1、文件通配符通配符(wildcardpattern)才用特定的符号,表示特定的含义,此符号称为元meta字符1.1常见的通配符*匹配零个或多个字符,但不匹配'.

1、文件通配符

通配符(wildcard pattern)才用特定的符号,表示特定的含义,此符号称为元 meta 字符


1.1 常见的通配符

* 匹配零个或多个字符,但不匹配 '.' 开头的文件,即隐藏文件
? 匹配任何单个字符
~ 当前用户家目录
~grain 用户grain家目录
~+和. 当前工作目录
~- 前一个工作目录
[0-9] 匹配数字范围
[a-z] 小字母
[A-Z] 大字母
[grain] 匹配括号中的任何的一个字符
[^grain] 匹配括号中的所有字符以外的字符

1.2 其他在linux系统中预定义的字符类

[:digit:] 任意数字,相当于0-9
[:lower:] 任意小写字母,表示 a-z
[:upper:] 任意大写字母,表示 A-Z
[:alpha:] 任意大小写字母
[:alpnum:] 任意数字或字母
[:blank:] 水平空白字符
[:space:] 水平或垂直空白字符
[:print:] 可打印字符

1.3 通配符应用范例



  • 显示/data目录下以非字母开头,后面跟了一个字母及其他任意长度字符的文件或目录列表

[root@CentOS8 data]#ll -d /data/[^[:alpha:]][[:alpha:]]*
-rw-r--r--. 1 root root 0 Feb 22 19:16 /data/1abcT.txt
-rw-r--r--. 1 root root 0 Feb 22 19:16 /data/2leey.log
-rw-r--r--. 1 root root 0 Feb 22 19:16 /data/3g.cre
drwxr-xr-x. 2 root root 6 Feb 22 19:19 /data/4G
drwxr-xr-x. 2 root root 6 Feb 22 19:23 /data/5gkpi


  • 复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中

[root@CentOS8 etc]#cp -r /etc/p*[^0-9] /tmp/mytest1
[root@CentOS8 etc]#ls /tmp/mytest1/
pam.d passwd- plymouth popt.d prelink.conf.d profile protocols
passwd pki pm postfix printcap profile.d


  • 将/etc/issue文件中的内容转换为大写后保存至/tmp/issue.out文件中

[root@CentOS8 data]#cat /etc/issue
\S
Kernel \r on an \m
[root@CentOS8 data]#tr 'a-z' 'A-Z' /tmp/issue.out
[root@CentOS8 data]#cat /tmp/issue.out
\S
KERNEL \R ON AN \M

2、 用户和组管理

2.1 用户创建:useradd

格式:

useradd [options] NAME

常见选项:

-u UID
-o 配合-u,不检查UID的唯一性
-g GID 指明用户基本组,可为组名,也可以GID
-c 用户注释信息
-d 指定家目录路径
-s 指明默认的shell
-G 指明附加组,组要事先存在
-r 创建系统用户,centos6之前 ID<500, centos7以后 ID<1000
-m 创建家目录,用于系统用户
-M 不创建家目录,用户非系统用户

范例:

[root@CentOS8 etc]#useradd -r -ou 666 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache
useradd: group 'apache' does not exist
[root@CentOS8 etc]#groupadd apache
[root@CentOS8 etc]#useradd -r -ou 666 -g apache -s /sbin/nologin -d /var/www -c "Apache" apache[root@CentOS8 etc]#

2.2 用户属性修改: usermod

格式

usermod [option] Name

常见选项:

-u UID: 新UID
-g GID: 新主组
-G group1[,group2...]:新附加组,可多个,原来的附加组会被覆盖,要保留同时使用-a选项
-s shell:新的默认shell
-c 新的注释信息
-d 新的家目录,若要创建新家目录并移动原目录数据,同时使用-m选项
-l 新的名字 login_name
-L 密码栏加锁,!
-U 解锁,去掉!
-e 指明用户账户过期日期
-f 设定宽限期

2.3 删除用户:userdel

常见选项:

-f 强制
-r 删除用户家目录和邮箱

2.4 查看用户ID信息:id


2.5 切换用户或以其他用户身份执行命令 : su

切换用户的方式:



  • su UserName:非登录式切换,即不读取用户配置文件,不改变当前工作目录,称为不完全切换

  • su - UserName:登录式切换,读取用户配置文件,切换到对应用户自己家目录,即完全切换。


2.6 设置密码 :passwd

常见选项:

-d 删除指定用户密码
-l 锁定指定用户
-u 解锁指定用户
-e 强制用户下次登陆修改密码
-f 强制操作
-n 指定最短使用期限
-x 最大使用期限
-w 提前多少天开始警告
-i 指定宽限期
--stdin 从标准输入接受用户密码

2.7 创建组 :groupadd

格式

grouadd [option]...groupname

常见选项:

-g 指明GID
-r 创建系统组
Exp : groupadd -g 666 -r apache

2.8 修改组:groupmod


2.9 删除组:groupdel


2.10 更改组密码: gpasswd

gpasswd命令,可以更改组密码,也可以修改附加组成员关系

常见选项:

-a 将user添加至指定组中
-d 从指定组中移除用户user
-A user1,user2,... 设置有管理员权限的用户列表

2.11 更改和查看组成员:groupmems

groupmems 可以管理附加组的成员关系

常见选项:

-g 更改为指定组,只有root可以操作
-a 指定用户加入组
-d 从组中删除用户
-p 从组中清除所有成员
-l 显示组成员列表

groups 可查看用户组关系


2.12 用户和组管理实例


2.12.1 创建组distro,其GID为2019

[root@CentOS8 data]#groupadd -g 2019 distro

2.12.2 创建用户mandriva,其ID号为1005,基本组为distro

[root@CentOS8 data]#useradd -u 1005 -g distro mandriva
useradd: UID 1005 is not unique # 提示 UID 1005不是唯一的
[root@CentOS8 data]#useradd -ou 1005 -g distro mandriva
[root@CentOS8 data]#id mandriva
uid=1005(mandriva) gid=2019(distro) groups=2019(distro)

2.12.3 创建用户mageia,其ID为1100,家目录为/home/linux

[root@CentOS8 data]#useradd -u 1100 -d /home/linux mageia
[root@CentOS8 data]#id mageia
uid=1100(mageia) gid=1100(mageia) groups=1100(mageia)
[root@CentOS8 data]#tree /home
/home
├── lee
├── linux

2.12.4 给用户mageia添加密码,密码为mageedu,并设置用户密码7天后过期

[root@CentOS8 data]#echo "mageedu" | passwd --stdin mageia
Changing password for user mageia.
passwd: all authentication tokens updated successfully.
[root@CentOS8 data]#passwd -x 7 mageia
Adjusting aging data for user mageia.
passwd: Success
[root@CentOS8 data]#getent shadow | grep mageia
mageia:$6$FW0xrns/UKahsCit$.uQXxR01mm3IxvtsOCUjjatVc6HGHF65Xs6Js5NItZdblel0Btx.LMbXLC9T3l9xqbJwe6mFk7jfNmNQGEI9j0:18680:0:7:7:::

2.12.5 删除用户mandriva,但保留其家目录

[root@CentOS8 data]#userdel mandriva
[root@CentOS8 data]#ls /home/
linux mandriva # 用户mandriva家目录仍存在

2.12.6 创建用户slackware,其ID为2002,基本组为distro,附加组为peguin

[root@CentOS8 data]#groupadd peguin
[root@CentOS8 data]#useradd -u 2002 -g 2019 -G peguin slackware
[root@CentOS8 data]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin)
[root@CentOS8 data]#

2.12.7 修改slackware的默认shell为/bin/tcsh

[root@CentOS8 data]#usermod -s /bin/tcsh slackware
[root@CentOS8 data]#getent passwd | grep slackware
slackware:x:2002:2019::/home/slackware:/bin/tcsh
[root@CentOS8 data]#

2.12.8 为用户slackware新增附加组admins,并设置不可登陆

[root@CentOS8 data]#groupadd admins
[root@CentOS8 data]#usermod -aG admins -L slackware
[root@CentOS8 data]#id slackware
uid=2002(slackware) gid=2019(distro) groups=2019(distro),2020(peguin),2021(admins)
[root@CentOS8 data]#cat /etc/shadow | grep slackware
slackware:!!:18680:0:99999:7:::

3、文件权限管理

3.1 设置文件的所有者 chown

chown命令可以修改文件的属主,也可以修改文件属组

格式

chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...

用法说明:

OWNER #只修改所有者
OWNER:GROUP #同时修改所有者和属组
:GROUP #只修改属组,冒号可以用 . 替换
-R #递归
--reference=RFILE #参考指定的属性来修改

3.2 修改文件权限 chmod

格式

chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...

说明:

MODE: who opt permission
who: u,g,o,a
opt: +,-,=
per: r,w,x
修改指定一类用户的所有权限
u= g= o= ug= a= u=,g=
修改指定一类用户某个或某个权限
u+ u- g+ g- o+ o- a+ a-
-R: 递归修改权限

3.3 文件特殊属性 chattr

设置文件特殊属性,可以防止 root 用户误操作或修改文件

不能删除,改名,更改

chattr +i

只能追加内容,不能删除,改名

chattr +a

显示特殊属性

lsattr

3.4 ACL访问控制列表

Centos7 默认创建的xfs和ext4文件系统具有ACL功能

Centos7 之前版本,默认手工创建的ext4文件系统无ACL功能,需手动增加

tune2fs -o acl /dev/sdb1
mount -o acl /dev/sdb1 /mnt/test

ACL生效顺序:

所有者,自定义用户,所属组|自定义组,其他人

ACL相关命令:

setfacl 可以设置ACL权限
getfacl 可以查看设置的ACL权限

3.5 特殊权限Sticky

具有写权限的目录通常用户可以删除改目录中的任何文件,无论该文件的权限或拥有权

在目录设置Sticky位,只有文件的所有者或root可以删除该文件

sticky设置在文件上无意义

Sticky权限设定

chmod o+t DIR...
chmod o-t Dir...
chmod 1xxx DIr...

3.6 文件权限实例

创建用户user1、user2、user3。在/data下创建目录test



  • 目录/data/test属主、属组为user1

[root@CentOS8 data]#NAME=user;for i in {1..3};do useradd $NAME$i;done
[root@CentOS8 data]#mkdir -pv /data/test
mkdir: created directory '/data/test'
[root@CentOS8 data]#chown user1.user1 /data/test


  • 在目录属主、属组不变的情况下,user2对文件有读写权限

[root@CentOS8 data]#setfacl -m u:user2:rw /data/test
[root@CentOS8 data]#getfacl /data/test/
getfacl: Removing leading '/' from absolute path names
# file: data/test/
# owner: user1
# group: user1
user::rwx
user:user2:rw-
group::r-x
mask::rwx
other::r-x


  • user1在/data/test目录下创建a1.sh,a2.sh,a3.sh,a4.sh,设置所有用户都不能删除a1.sh,a2.sh文件、除了user1及root外,所有用户都不可删除a3.sh,a4.sh。

[root@CentOS8 data]#touch /data/test/a{1..4}.sh
[root@CentOS8 data]#chattr +i /data/test/a1.sh /data/test/a2.sh
[root@CentOS8 data]#chmod o+x /data/test/a3.sh /data/test/a4.sh
[root@CentOS8 data]#chmod o+t /data/test/a3.sh /data/test/a4.sh


  • user3增加附加组user1,同时要求user1不能访问/data/test目录及其下所有文件

[root@CentOS8 data]#usermod -aG user1 user3
[root@CentOS8 data]#setfacl -m u:user1:- /data/test
[root@CentOS8 data]#getfacl /data/test/
getfacl: Removing leading '/' from absolute path names
# file: data/test/
# owner: user1
# group: user1
user::rwx
user:user1:---
user:user2:rw-
group::r-x
mask::rwx
other::r-x


  • 清理/data/test目录及其下所有文件的acl权限

[root@CentOS8 data]#setfacl -R -b /data/test

推荐阅读
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Python语法上的区别及注意事项
    本文介绍了Python2x和Python3x在语法上的区别,包括print语句的变化、除法运算结果的不同、raw_input函数的替代、class写法的变化等。同时还介绍了Python脚本的解释程序的指定方法,以及在不同版本的Python中如何执行脚本。对于想要学习Python的人来说,本文提供了一些注意事项和技巧。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Linux磁盘的分区、格式化的观察和操作步骤
    本文介绍了如何观察Linux磁盘的分区状态,使用lsblk命令列出系统上的所有磁盘列表,并解释了列表中各个字段的含义。同时,还介绍了使用parted命令列出磁盘的分区表类型和分区信息的方法。在进行磁盘分区操作时,根据分区表类型选择使用fdisk或gdisk命令,并提供了具体的分区步骤。通过本文,读者可以了解到Linux磁盘分区和格式化的基本知识和操作步骤。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
author-avatar
猿来缘往
我一直在Coding...
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有