10-linux基础命令(七)【文件管理二】


上期博客内容

Linux基础命令(七)
在这里插入图片描述
文件管理(2)


rename

rename :批量修改文件名.

示例

将当前目录下所有f开头其中带有txt的文件,将txt全部替换成txt.bak

    [root@Redhat7 data]# ll

    total 4
    -rw-r--r--. 1 root root 59 Sep 25 21:09 file
    -rw-r--r--. 1 root root  0 Sep 25 21:19 file1.txt
    -rw-r--r--. 1 root root  0 Sep 25 21:19 file2.txt
    ...............#省略不写
    -rw-r--r--. 1 root root  0 Sep 25 21:19 file8.txt
    -rw-r--r--. 1 root root  0 Sep 25 21:19 file9.txt
    drwxr-xr-x. 2 root root 22 Sep 25 08:31 script

    [root@Redhat7 data]# rename txt txt.bak f*

    [root@Redhat7 data]# ls 

    file           file2.txt.bak  file4.txt.bak  file6.txt.bak  file8.txt.bak  script
    file1.txt.bak  file3.txt.bak  file5.txt.bak  file7.txt.bak  file9.txt.bak

索引节点

磁盘当中有很多扇区,多个扇区相互组成
文件数据储存在中,而文件的元信息,如文件的创建者、文件的创建日期、文件的大小等,这种储存文件元信息的区域就叫做inode,也叫索引节点;inode也会消耗占用硬盘空间

索引节点包含:

文件的字节数     
文件拥有者的User ID    
文件的Group ID     
文件的读、写、执行权限     
文件的时间戳:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。     
链接数:即有多少文件名指向这个inode     
文件数据block的位置 

使用df -i命令,查看每个硬盘分区的inode总数和已经使用的数量

另外,即便磁盘空间并未完全使用,但如果inode被耗尽,系统同样也会显示内存不足!然而其原因并不是内存不足,而是已经没有更多的inode可以使用了;

#使用 ls -i 可查看文件的inode
    [root@CentOS8 data]# ll -i /home/

    total 0
    68006508 drwx------. 3 td td 99 Sep 25 21:59 td

getent

getent命令示例

[root@CentOS8 data]# getent passwd root 

root:X:0:0:root:/root:/bin/bash

[root@CentOS8 data]# getent passwd td

td:X:1000:1000:td:/home/td:/bin/bash

[root@CentOS8 data]# getent shadow root 

root:$6$FAi.5c4GIBQk.dtE$RNUTc0pJy86Mrpo/kiRy3dydElumBxE5OMBiDqM0.EsBFYUjdmDWltIXpkylBljuwu.f0aKkXjm8viLdNVUc21::0:99999:7:::

[root@CentOS8 data]# getent shadow td

td:$6$rfiJT/RdsYEy4Otp$tfEujCCh5JT5AaegE02xCfTN65lFnSCse/uVh6n/Ze2bnRva8BPLCDwzGeFd77wRJOX1oeiBYLRTZeypFA4Rp1::0:99999:7:::

Linux用户和组的主要配置文件:

/etc/passwd:用户及其属性信息(名称,UID,GID等)
/etc/group:组及其属性信息
/etc/shadow:用户密码及其相关属性
/etc/gshadow:组密码及其相关属性

chage

chage : 修改帐号和密码的有效期限.

选项

    -m:#密码可更改的最小天数。为零时代表任何时候都可以更改密码。
    -M:#密码保持有效的最大天数。
    -w:#用户密码到期前,提前收到警告信息的天数。
    -E:#帐号到期的日期。过了这天,此帐号将不可用。
    -d:#上一次更改的日期。
    -i:#停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
    -l:#例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

示例

     chage td
	 Changing the aging information for td
	 Enter the new value, or press ENTER for the default

	 Minimum Password Age [0]: 

乱码生成指令

cat /dev/urandom (生成乱码)

利用乱码获得随机十位数

[root@CentOS8 data]# cat /dev/urandom |tr -dc ‘[:alnum:]’ |head -c10

qrMrzsOWBR[root@CentOS8 data]# cat /dev/urandom |tr -dc ‘[:alnum:]’ |head -c10

7rx7NGQYNM[root@CentOS8 data]# cat /dev/urandom |tr -dc ‘[:alnum:]’ |head -c10

BRDcP0bRZx[root@CentOS8 data]#


用户管理命令

useradd
usermod
userdel

组账号维护命令

groupadd
groupmod
groupdel

useradd

useradd :用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。

帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。

使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

选项

    -c<备注>#加上备注文字。备注文字会保存在passwd的备注栏位中;
    -d<登入目录>#指定用户登入时的启始目录;
    -D:#变更预设值;
    -e<有效期限>#指定帐号的有效期限;
    -f<缓冲天数>#指定在密码过期后多少天即关闭该帐号;
    -g<群组>#指定用户所属的群组;
    -G<群组>#指定用户所属的附加群组;
    -m:#自动建立用户的登入目录;
    -M:#不要自动建立用户的登入目录;
    -n:#取消建立以用户名称为名的群组;
    -r:#建立系统帐号;
    -s<shell>#指定用户登入后所使用的shell;
    -u<uid>#指定用户id。

家目录模板

    [root@CentOS8 data]# ls -a /etc/skel/              
    
    .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla

skel所有用户家目录的模板

因此,如果我们误删了某个用户的家目录,那么我们就可以复制该目录到/home/user下,同时修改权限属主属组即可恢复

示例

 #恢复被误删的td用户的家目录
cp -r /etc/skel /home/td;chown -R td:td /home/td;chmod 700 /home/td

批量创建用户/密码

newusers text.txt
#批量创建用户,提前创建一个文件text.txt,其内容格式为:td:x:1000:1000:td:/home/td:/bin/bash)

cat text.txt | chpasswd 
#批量创建用户密码,提前创建一个文件text.txt,其内容格式为:user:passwd)

其方法是提前将要创建的用户或密码写入一个文件中,用户文件内容为(参考/etc/passwd)格式;密码文件内容为 用户登录名:密码


usermod

usermod : 用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。

当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序.

选项 :

    -c<备注>#修改用户帐号的备注文字;
    -d<登入目录>#修改用户登入时的目录;
    -e<有效期限>#修改帐号的有效期限;
    -f<缓冲天数>#修改在密码过期后多少天即关闭该帐号;
    -g<群组>#修改用户所属的群组;
    -G<群组>: #修改用户所属的附加群组;
    -l<帐号名称>#修改用户帐号名称;
    -L:#锁定用户密码,使密码无效;
    -s<shell>#修改用户登入后所使用的shell;
    -u<uid>#修改用户ID;
    -U: #解除密码锁定。

示例

    [root@CentOS8 data]# id td

    uid=1000(td) gid=1000(td) groups=1000(td)

    [root@CentOS8 data]# usermod -g root td

    [root@CentOS8 data]# id td

    uid=1000(td) gid=0(root) groups=0(root)

userdel

userdel :用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

选项

    -f:#强制删除用户,即使用户当前已登录;
    -r:#删除用户的同时,删除与用户相关的所有文件。

passwd

passwd用于设置用户的认证信息,包括用户密码、密码过期时间等。
系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

选项

    -d:#删除密码,仅有系统管理者才能使用;
    -f:#强制执行;
    -k:#设置只有在密码过期失效后,方能更新;
    -l:#锁住密码;
    -s:#列出密码的相关信息,仅有系统管理者才能使用;
    -u:#解开已上锁的帐号。
echo 密码 | passwd --stdin 用户   (给用户设置密码)

gpasswd

gpasswd :是Linux下工作组文件/etc/group和/etc/gshadow管理工具。

选项

    -a:#添加用户到组;
    -d:#从组删除用户;
    -A:#指定管理员;
    -M:#指定组成员和-A的用途差不多;
    -r:#删除密码;
    -R:#限制用户登入组,只有组中的成员才可以用newgrp加入该组。

newgrp命令:临时切换主组(若用户原不属于此组则需要组密码)


groupmems

    -g: #更改为指定组(只有root) 
    -a: #指定用户加入组
    -d: #从组中删除用户
    -p, --purge: #从组中清除所有成员
    -l,  --list: #显示组成员列表

groups

groups :查看用户所属组列表;在标准输入输出上输出指定用户所在组的组成员,每个用户属于/etc/passwd中指定的一个组和在/etc/group中指定的其他组.

示例 :

    [root@CentOS8 ~]# groups td

    td : td

    [root@CentOS8 ~]# groups root

    root : root

chmod

chmod用来变更文件或目录的权限.

权限范围的表示法如下

    u User #即文件或目录的拥有者;
    g Group #即文件或目录的所属群组;
    o Other #除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
    a All #即全部的用户,包含拥有者,所属群组以及其他用户;
    
    r 读取权限,数字代号为“4”;
    w 写入权限,数字代号为“2”;
    x 执行或切换权限,数字代号为“1”;
    - 不具任何权限,数字代号为“0”;

选项

    -c或——changes:#效果类似“-v”参数,但仅回报更改的部分;
    -f或--quiet或——silent:#不显示错误信息;
    -R或——recursive:#递归处理,将指令目录下的所有文件及子目录一并处理;
    -v或——verbose:#显示指令执行过程;
    --reference=<参考文件或目录>#把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

修改文件text的权限

    chmod u+x,g+w text 

    chmod u=rwx,g=rw,o=r text

    chmod 764 text

    chmod a+x text

经典试题*:

/etc/fstab复制到/data/dir,至少需要什么权限?

1)cp命令  有执行权限 
2)/etc目录有执行权限,fstab读权限 
3)/data目录有执行权限,dir目录有执行和写权限

chown

chown :改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。

用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

只有文件主和超级用户才可以便用该命令。

选项

    -c或——changes:效果类似“-v”参数,但仅回报更改的部分;
    -f或--quite或——silent:不显示错误信息;
    -h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;
    -R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
    -v或——version:显示指令执行过程;
    --dereference:效果和“-h”参数相同;
    --reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;

示例

#将目录/usr/meng及其下面的所有文件、子目录的文件属主改成 liu 

    chown -R liu /usr/meng

#将file的属主属组改为root

    chown root:root /data/file

chgrp

chgrp用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。

其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。
如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。

在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。

您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。

选项

    -c或——changes:#效果类似“-v”参数,但仅回报更改的部分;
    -f或--quiet或——silent:#不显示错误信息;
    -h或--no-dereference:#只对符号连接的文件作修改,而不是该其他任何相关文件;
    -R或——recursive:#递归处理,将指令目录下的所有文件及子目录一并处理;
    -v或——verbose:#显示指令执行过程;
    --reference=<参考文件或目录>#把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

文件指定要改变所属组的文件列表。多个文件或者目录之间使用空格隔开

示例

#将/usr/meng及其子目录下的所有文件的用户组改为mengxin

 chgrp -R mengxin /usr/meng

umask

umask用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。
用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。

用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。

选项

    -p:#输出的权限掩码可直接作为指令来执行;
    -S:#以符号方式输出权限掩码。

新建文件默认权限:666-umask;如果所得结果中存在奇数权限,则将其+1

新建目录默认权限:777-umask

umask默认为 : 022

全局设置:/etc/bashrc 用户设置:~/.bashrc

Linux文件系统中的特殊权限

SUID,SGID,Sticky 独立于常规权限之外

SUID:作用于可执行的二进制的程序;权限4;功能:用户执行此程序时,将继承此程序所有者的权限。

SGID:作用于可执行的二进制的程序;权限2;功能:用户执行此程序时,将继承此程序所属组的权限。
作用于目录;功能:此目录中新建的文件将自动继承此目录的所属组;

Sticky:作用于目录;权限1;功能:只可删除自己的文件。


setfacl

setfacl :用来在命令行里设置ACL(访问控制列表)。在命令行里,一系列的命令跟随以一系列的文件名。

选项 :

-b,--remove-all:#删除所有扩展的acl规则,基本的acl规则(所有者,群组,其他)将被保留。
-k,--remove-default:#删除缺省的acl规则。如果没有缺省规则,将不提示。
-n,--no-mask:#不要重新计算有效权限。setfacl默认会重新计算ACL mask,除非mask被明确的制定。
--mask:#重新计算有效权限,即使ACL mask被明确指定。
-d,--default:#设定默认的acl规则。
--restore=file:#从文件恢复备份的acl规则(这些文件可由getfacl -R产生)。通过这种机制可以恢复整个目录树的acl规则。此参数不能和除--test以外的任何参数一同执行。
--test:#测试模式,不会改变任何文件的acl规则,操作后的acl规格将被列出。
-R,--recursive:#递归的对所有文件及目录进行操作。
-L,--logical:#跟踪符号链接,默认情况下只跟踪符号链接文件,跳过符号链接目录。
-P,--physical:#跳过所有符号链接,包括符号链接文件。
--:#标识命令行参数结束,其后的所有参数都将被认为是文件名
-:#如果文件名是-,则setfacl将从标准输入读取文件名。


ACL

ACL(Access Control List)實現靈活的權限管理.

mask:設置除所有者和other以外的用戶或組的最高權限;

    setfacl -m u:mage:rw file.txt (設置用戶mage對文件file.txt的ACL權限rw)用戶:u;組:g;

    setfacl -m u:wang:r file.txt (設置用戶wang對文件file.txt的ACL權限r)

    getfacl file.txt         查看文件file.txt的ACL權限

    setfacl -b file.txt      清除文件file.xtt的所有ACL權限

示例

setfacl -m mask::rw file.txt (設置文件file.txt的最高權限rw)

setfacl -R -m u:mage:4 /data/file.txt 設置文件file.txt及子文件對用戶mage的ACL權限r;

setfacl -Rb /data/file.txt 清除文件file.txt及子文件的所有ACL權限;

ACL權限執行順序:所有者,ACL中自定义用户,ACL自定义的组,所属组,other


跳至文章尾部

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值