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' < /etc/issue > /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
相关文章推荐
- LFCS 系列第八讲:管理用户和用户组、文件权限和属性以及启用账户 sudo 访问权限
- linux修改文件权限和用户组管理小结 经常会用到的命令
- Linux权限管理(用户权限、用户组权限、文件权限、目录权限)
- linux根-文件系统-目录管理-文件管理-用户及权限详解-用户组-用户管理-权限管理
- linux修改文件权限和用户组管理小结
- Linux用户用户组及文件权限【附管理操作】
- 用户、用户组管理、文件权限管理
- linux修改文件权限和用户组管理小结
- 运维大法之Linux系统中的管理权限(二)设定普通权限的方法和系统默认权限设定以及文件用户用户组管理
- LFCS 系列第八讲:管理用户和用户组、文件权限和属性以及启用账户 sudo 访问权限
- 【Linux】Linux用户组与文件权限管理
- linux修改文件权限和用户组管理小结
- Linux学习命令汇总三——Linux用户组管理,文件权限管理,文本处理工具grep及egrep
- 三周第一次课(4月2日)linux和windows互传文件、用户配置文件和密码配置文件、用户组管理、用户管理
- 文件权限管理
- Git对库文件权限的管理与filemode配置详解
- Linux下的文件权限(下)及acl权限列表管理
- linux安全体系的文件权限管理
- Linux基本指令、文件管理权限及Linux重要目录的整理
- Linux文件权限及用户管理_1