Linux文件管理及权限管理(用户、组、文件管理)

1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示

  1. cat命令:
    文件文本查看工具:
    cat /etc/fstab
    cat /etc/passwd
    cat [OPTION] [FILE]…
    -n:给显示的文件行编号
    -E:显示行结束符$
  2. tac命令:
    与cat相反,逆序显示
    文件文本查看工具:
    tac /etc/fstab
    tac /etc/passwd
    tac [OPTION] [FILE]…
    -n:给显示的文件行编号
    -E:显示行结束符$
  3. file命令:
    查看文件内容的类型
    file [FILE]. . .
  4. more命令:
    more file[…]
    特点:翻屏至文件尾部后自动退出
    例如:
    more /var/log/secure
  5. less命令:
    less file[…]
    特点:q退出,可自由翻屏;
  6. head命令:
    查看文件的前n行,默认为10行;
    head [options] file
    -n #:显示前#行;
    例如:
    head /var/log/messages
  7. tail命令:
    查看文件的后n行
    tail [options] file
    -n #:显示前#行;;
    -f:查看文件尾部内容结束后不退出,阻塞在文件上,追加新内容时会继续显示,Ctrl+c退出;
    例如:
    tail /var/log/messages
    tail -20 /var/log/messages:显示倒数20行;
    tail -f /tmp/fstab:查看不退出,显示实时追加新的内容的变化;
  8. stat命令:
    stat – display file or file system status(查看文件或文件系统状态)
    stat [OPTION]… FILE…
  9. cp命令:
    copy
    单源复制:cp [OPTION]… [-T] SOURCE DEST
    多源复制:cp [OPTION]… SOURCE… DIRECTORY:
    cp [OPTION]… -t DIRECTORY SOURCE…
    单源复制:cp [OPTION]… [-T] SOURCE DEST
    如果目标文件不存在,则事先创建此文件,并复制源文件的数据流到目标文件中
    如果目标文件存在:
    如果目标文件是非目录文件,则覆盖目标文件
    如果目标文件是目录文件,则现在目标文件下创建一个与源文件同名的文件,并复制其数据流
    多源复制:cp [OPTION]… SOURCE… DIRECTORY:(注意:目标必须是目录)
    cp [OPTION]… -t DIRECTORY SOURCE…
    如果目标文件不存在:错误;
    如果目标文件存在:
    如果目标文件是非目录文件:错误;
    如果目标文件是目录文件:分别复制每个文件至目标目录中,并保持原名
    常用选项:
    -i,–interactive:交互式复制,即覆盖目标文件之前提醒用户确认;
    -f,force:强制覆盖目标文件;
    -R,-r,–recursive:递归复制目录及其内容;
    -P,–no-dereference:复制链接文件本身,而非默认的复制链接文件指向的原文件内容;
    -d:复制符号链接本身,而非其指向的源文件(默认为复制链接文件的原文件内容);
    -a,–archive:归档复制;备份时才会使用;
  10. mv命令:
    (不需要-r选项)与使用cp命令相似;
    mv – move (rename) files
    单源移动:mv [OPTION]… [-T] SOURCE DEST
    多源移动:mv [OPTION]… SOURCE… DIRECTORY
    mv [OPTION]… -t DIRECTORY SOURCE…
    注意:原文件目录与目标文件目录相同时,为rename;否则为move;
    不区分目录和文件,直接move;
    常用选项:
    -i,–interactive:交互式复制,移动时,如果目标文件存在时提示用户确定是否覆盖(仅root用户);
    -f,force:强制移动,覆盖前不提示;
  11. rm命令:
    即能删除文件又能删目录,但删目录时要用递归-r选项;
    rm – remove files or directories
    rm [OPTION]… FILE…
    常用选项:
    -r, -R, –recursive:递归删除目录及其内容;
    -f,force:强制删除,不提示确认;
    -i,–interactive:交互式,提示确认;
    危险操作:rm -rf /”或“rm -rf /*”;
    注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录:(模拟回收站,如重定向到/dev/null中);

2、使用命令行展开功能,创建/temp/a1,/temp/a2,/temp/a1/a,/temp/a2/b,在/temp目录下创建目录:x_y,x_z,q_y,q_z。(注:此例是在/home/123/data/目录下创建)

在这里插入图片描述
在这里插入图片描述

3、文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。

  1. 文件的两类数据组成部分:
    元数据(metadata):指用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者等,即属性数据,存放于文件系统中的inode里;数据(data):指普通文件中的实际数据,即数据本身,存放在data blocks里;
    元数据信息包含:
    File:文件名
    Size:文件大小(单位:B)
    Blocks:文件所占块个数
    IO Block:每个数据块的大小(单位:B)
    regular file:普通文件(此处显示文件的类型)
    Inode:文件的Inode号,文件的索引节点号
    Links:硬链接次数
    Access:权限
    Uid:(属主id/属主名)
    Gid:(属组id/属组名)
    Context:文件所在的环境
    Access:最近访问时间access time (atime)
    Modify:数据改动时间modification time (mtime)
    Change:元数据改动时间status time (ctime)
    Creat:文件创建时间
  2. 查看文件的元数据的方法:
    stat命令:stat – display file or file system status,使用stat 查看文件的元数据
    使用语法:stat file…
    示例:查看/etc/passwd文件的元数据
    在这里插入图片描述
  3. 修改文件的时间戳的方法:
    touch命令:
    touch 这个指令最常被使用的情况是:
    建立一个空的文件;
    将某个文件日期修订为目前 (mtime 与 atime)
    touch – change file timestamps修改时间戳
    使用语法: touch [OPTION]… file…
    注意:当touch的文件不存在时,会在目标目录下创建x空文件
    选项:
    不跟任何选项时三个时间戳都会被更新为当前时间。
    -c: 指定的文件路径不存在时不予创建;
    -a: 仅修改access time;
    -m:仅修改modify time;
    -t :指定改为某一时刻的时间,时间参数格式
    [[CC]YY]MMDDhhmm[.ss]
    示例:将/tmp/passwd文件的最近更改时间改为2018年12月23日22点10分10秒
    在这里插入图片描述
    文件的时间是很重要的,如果文件的时间错误的话,可能会造成某些程序无法顺利的运作。

4、在/temp目录下创建以tfile开头,后跟当前日期的时间的文件,文件名形如:tfile-2016-05-27-09-32-22。

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、创建用户Tom,指定UID为5001,指定家目录为/tmp/tom,指定shell为/bin/zsh,指定基本组为tom,附加组为jack。

在这里插入图片描述
开始因为没有关闭SELinux,所以无法创建在/tmp下创建tom的家目录,关闭SELINUX防火墙后即可创建。(setenforce是Linux的selinux防火墙配置命令 执行setenforce 0 表示关闭selinux防火墙,1表示开启。getenforce可查看selinux的状态。)
在这里插入图片描述

7、常用的用户以及文件管理命令有哪些,并演示命令以及用法。

1、用户管理:
Linux中的用户分为两类:管理员和普通用户,普通用户又分为系统用户和登录用户
每个用户都有唯一的用户标识符UserID即UID,由16bits二进制的数字组成:0-65535。
管理员的UID为:0
普通用户的UID为:1-65535
系统用户的UID:1-499(CentOS6),1-999(CentOS7)
登录用户的UID:500-60000(CentOS6),1000-60000(CentOS7)
用户名userName与UID一一对应
在/etc/passwd和/etc/shadow文件中保存用户的相关信息
以下使用cat命令打开/etc/passwd文件的内容
在这里插入图片描述
里面包含了7个字段
name: 用户名
password:可以是加密的密码,也可是占位符x;
UID:用户的标识符
GID:用户所属的主组的ID号;
GECOS:注释信息
directory:用户的家目录,默认在/home/user/下;
shell:用户的默认shell,登录时默认shell程序;
/etc/shadow保存着用户密码,普通用户不能打开。
在这里插入图片描述
里面共有9字段
用户名
加密的密码
最近一次修改密码的时间
最短使用期限
最长使用期限
警告期段
过期期限
保留字段

用户管理命令:
useradd 命令:创建用户
语法:useradd [option] userName
选项:
-u, --uid UID:指定UID;
-g, --gid GROUP:指定基本组ID,此组得事先存在,创建用户时会默认指定与用户同名的组;
-G, --groups GROUP1[,GROUP2,…[,GROUPN]]]:指明用户所属的附加组,多个组之间用逗号分隔;
-c, --comment COMMENT:指明注释信息;
-d, --home HOME_DIR:以指定的路径为用户的家目录;通过复制/etc/skel此目录并重命名实现;指定的家目录路径如果事先存在,则不会为用户复制环境配置文件,默认在/home/user下创建;
-s, --shell SHELL:指定用户的默认shell,可用的所有shell列表存储在/etc/shells文件中, /sbin/nologin为不能登录,一般用于系统用户;
-r, --system:创建系统用户;
echo $SHELL :查看当前用户的 shell 类型
useradd -M USERNAME:创建用户但不创建家目录
useradd -mk USERNAME:创建用户的同时创建家目录,并复制 /etc/skel 中的内容到家目录中。
如果用户没有家目录,那么不能切换到该用户
注意:创建用户时的诸多默认设定配置文件为 etc/longin.defs
useradd –D:显示创建用户的默认配置,useradd –D 选项:修改默认选项的值,修改的结果保存于/etc/default/useradd 文件中;
在这里插入图片描述

usermod 命令:修改用户属性
语法:usermod [option]… userName
选项:
-u, --uid UID:修改用户的ID为此处指定的新UID;
-g, --gid GROUP:修改用户所属的基本组;
-G, --groups GROUP1[,GROUP2,…[,GROUPN]]]:修改用户所属的附加组;原来的附加组会被覆盖;
-a, --append:与-G一同使用,用于为用户追加新的附加组;
-c, --comment COMMENT:修改注释信息;
-d, --home HOME_DIR:修改用户的家目录;用户原有的文件不会被转移至新位置;
-m, --move-home:只能与-d选项一同使用,用于将原来的家目录移动为新的家目录;
-l, --login NEW_LOGIN:修改用户名;
-s, --shell SHELL:修改用户的默认shell;
-L, --lock:锁定用户密码;即在用户原来的密码字符串之前添加一个"!";
-U, --unlock:解锁用户的密码;
例:Usermod –d /tmp/newhome –m user_name
在这里插入图片描述
usermod -a -G GROUPS USERNAME:在原有附加组的基础上追加附加组(注意顺序)
在这里插入图片描述
usermod -d PATH USERNAME:修改家目录。修改后原先家目录中的文件不能访问了,因为在当前的家目录中并不存在这些文件。

userdel命令:删除用户
语法:userdel [option] userName
选项:
-r:删除用户时一并删除其家目录

2、用户密码管理:
passwd 命令:修改用户的密码
语法:passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w warndays] [-i inactivedays] [-S] [–stdin] [username]
(1)、passwd :修改用户自己的密码
(2)、passwd USERNAME :修改指定用户的密码,但仅root由此权限
选项:-l, -u:锁定和解锁用户;
-d:清除用户密码串;
-e DATE: 过期期限,日期;
-i DAYS:非活动期限;
-n DAYS:密码的最短使用期限;
-x DAYS:密码的最长使用期限;
-w DAYS:警告期限;
–stdin:设定用户密码为用户名
echo “PASSWORD” | passwd --stdin USERNAME
3、组管理
在linux 中的每个用户都必须有一个组,不能独立与组外。在Linux中每个文件有所有者、所在组、其他组的概念。
每个组都有唯一的组标识符GroupID即GID,由16bits二进制的数字组成:0-65635。
管理员组的GID为:0
普通用户组的ID为:1-65535
系统组的GID:1-499(CentOS6),1-999(CentOS7)
登录组的GID:500-60000(CentOS6),1000-60000(CentOS7)
组名groupName与GID一一对应;
组的相关信息可在/etc/group文件中查看
在这里插入图片描述
里面共有4个字段
name:组名
grouppasswd:组密码
Gid:组ID
groupuser:所属组的用户
Linux用户和组管理命令:
4、组管理命令:
groupadd 命令:添加组
语法:groupadd [option]… group_Name
选项:-g GID :指定GID;默认是上一个组的GID+1;
-r :创建系统组;
groupmod 命令:修改组属性
语法:groupmod [option] group_Name
选项:-g GID:修改GID
-n new_name:修改组名;groupmod –n new_name old_name
groupdel 命令:删除组
语法:groupdel [option] group
5、组密码管理:
gpasswd 命令:修改组密码:
组密码文件为:/etc/gpasswd
语法:gpasswd [option] groupName
选项:-a USERNAME:向组中添加用户
-d USERNAME:从组中移除用户
6、其他命令newgrp、chage、id、su:
newgrp 命令:临时切换指定的组为基本组
语法:newgrp [-] [groupName]
-:会模拟用户重新登录以实现重新初始化其环境
chage 命令:更改用户密码过期信息
语法:chage [option] userName
选项:-d:上一次更改日期
-E:账号到期的日期,过了这天,此账号将不可用
-W:用户密码到期前,提前收到警告信息的天数
-m:密码可更改的最小天数,为0代表任何时间都可以修改密码
-M: 密码保持有效的最大天数
-id命令:显示用户的真和有效ID;
语法:id [OPTION]… [USER]
选项:-u: 仅显示有效的UID;
-g: 仅显示用户的基本组ID;
-G:仅显示用户所属的所有组的ID;
-n: 显示名字而非ID;
-su命令:登录式切换用户:会通过读取目标用户的配置文件来重新初始化
语法:su - USERNAME
su -l USERNAME
非登录式切换:不会读取目标用户的配置文件进行初始化
su USERNAME
注意:管理员可无密码切换至其它任何用户;
-c ‘COMMAND’:仅以指定用户的身份运行此处指定的命令;
7、文件权限管理命令
chmod用来变更文件或目录的权限。文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件
语法:
chmod [OPTION]… MODE[,MODE]… FILE…
chmod [OPTION]… OCTAL-MODE FILE…
chmod [OPTION]… --reference=RFILE FILE…
文件的三类用户:
u :属主
g :属组
o :其他
a :所有
(1) chmod [OPTION]… MODE[,MODE]… FILE…
MODE表示法:
赋权表示法:直接操作一类用户的所有权限位rwx;
chmod u=rwx,g=rw,o=r file
授权表示法:直接操作一类用户的一个权限位r,w,x;
chmod u+x,g+w file
(2) chmod [OPTION]… OCTAL-MODE FILE…
chmod 764 file
(3) chmod [OPTION]… --reference=RFILE FILE…
选项:-R, --recursive:递归修改
注意:用户仅能修改属主为自己的那些文件的权限
从属关系管理命令:chown,chgrp
chown 命令:
改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户名或者是用户ID,用户组可以是组名或组ID。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。
语法:chown [OPTION]… [OWNER][:[GROUP]] FILE…
chown [OPTION]… --reference=RFILE FILE…
选项:-R:递归修改
例:把文件file给user,添加到market组
chown user:market file
chgrp 命令
用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。
语法:chgrp [OPTION]… GROUP FILE…
chgrp [OPTION]… --reference=RFILE FILE…
参数:-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;
-v或——verbose:显示指令执行过程;
–reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;
注意:仅管理员可修改文件的属主和属组
例:将/usr/meng及其子目录下的文件的组修改为market
chgrp –R market /usr/meng
思考:用户对目录有写权限,但对目录下的文件没有写权限时,能否修改此文件内容?能否删除此文件?
回答:不能修改此文件,但能删除此文件
反向掩码:
umask 命令:文件的权限反向掩码,遮罩码;
文件的权限反向掩码默认为:666-umask
目录的权限反向掩码默认为:777-umask
注意:之所以文件用666去减,表示文件默认不能拥有执行权限;如果减得的结果中有执行权限,则需要将其加1;
例:若反向掩码umask为: 023
则创建的文件的权限默认为:666-023=644
创建的目录的权限默认为:777-023=754
umask:查看当前umask
在这里插入图片描述
umask MASK: 设置umask
在这里插入图片描述
注意:此类设定仅对当前shell进程有效;

猜你喜欢

转载自blog.csdn.net/xiaochenwj1995/article/details/85227374