Linux的文件操作与用户管理

添加删除用户

1.添加用户-useradd

-u :后面接的是 UID ,是一组数字。直接指定一个特定的 UID 给这个帐号;
-g :后面接的那个群组名称就是我们上面提到的 initial group 啦~
该群组的 GID 会被放置到 /etc/passwd 的第四个字段内。
-G :后面接的群组名称则是这个帐号还可以加入的群组。
这个选项与参数会修改 /etc/group 内的相关数据喔!
-M :强制!不要创建使用者主文件夹!(系统帐号默认值)
-m :强制!要创建使用者主文件夹!(一般帐号默认值)
-c :这个就是 /etc/passwd 的第五栏的说明内容啦~可以随便我们设置的啦~
-d :指定某个目录成为主文件夹,而不要使用默认值。务必使用绝对路径!
-r :创建一个系统的帐号,这个帐号的 UID 会有限制 (参考 /etc/login.defs)
-s :后面接一个 shell ,若没有指定则默认是 /bin/bash 的啦~
-e :后面接一个日期,格式为“YYYY-MM-DD”此项目可写入 shadow 第八字段,
亦即帐号失效日的设置项目啰;
-f :后面接 shadow 的第七字段项目,指定密码是否会失效。0为立刻失效,
-1 为永远不失效(密码只会过期而强制于登陆时重新设置而已。)
adduser vbird1   /建立用户,需要设置密码
useradd vbird1   /建立用户,不需要设密码,但在/home目录下没有用户目录 没有shell
需要通过 useradd -m -s 用户名 添加shell

示例:
在这里插入图片描述

  • 使用者帐号与密码参数方面的文件:/etc/passwd, /etc/shadow
  • 使用者群组相关方面的文件:/etc/group, /etc/gshadow
  • 使用者的主文件夹:/home/帐号名称
    在这里插入图片描述
    假设我已知道我的系统当中有个群组名称为 users ,且 UID 1500 并不存在,请用 users 为初始群组,以及 uid 为 1500 来创建一个名为 vbird2 的帐号
useradd -u 1500 -g users vbird2

2.删除用户-userdel

sudo userdel -r username /-r删除用户和对应用户所有文件

示例:

添加删除组

1.添加组-groupadd命令

[root@study ~]# groupadd [-g gid] [-r] 群组名称
选项与参数:
-g :后面接某个特定的 GID ,用来直接给予某个 GID ~
-r :创建系统群组啦!与 /etc/login.defs 内的 GID_MIN 有关。

示例:
在这里插入图片描述

题目:添加一个用户user01到组group01中。(已生成group01)

sudo useradd -m -s /bin/bash -g group01 user01

2.删除组-groupdel

sudo groupdel groupname
  • 删除组时,需要组内没有用户才能删除

用户身份切换

  • 以“ su - ”直接将身份变成 root 即可,但是这个指令却需要 root 的密码,也就是说,如果你要以 su 变成 root 的话,你的一般使用者就必须要有 root 的密码才行;
  • 以“ sudo 指令 ”执行 root 的指令串,由于 sudo 需要事先设置妥当,且 sudo 需要输入使用者自己的密码, 因此多人共管同一部主机时, sudo 要比 su 来的好喔!至少root 密码不会流出去!
su     /单纯使用“ su ”切换成为 root 的身份
su username     /切换到对应用户上
  • 输入exit,退出root用户

示例:
![在这里插入图片描述](https://img-blog.csdnimg.cn/f4f6e7f768b64f1badac8eccfb3df722.png


sudo命令

sudo 的执行则仅需要自己的密码即可! 甚至可以设置不需要密码即可执行 sudo 呢!由于 sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),并非所有人都能够执行 sudo。

[root@study ~]# sudo [-b] [-u 新使用者帐号]
选项与参数:
-b :将后续的指令放到背景中让系统自行执行,而不与目前的 shell 产生影响
-u :后面可以接欲切换的使用者,若无此项则代表切换身份为 root 。

范例一:你想要以 sshd 的身份在 /tmp 下面创建一个名为 mysshd 的文件

sudo -u sshd touch /tmp/mysshd

在这里插入图片描述

修改文件的所有者和所属组-chown/chgrp

1.chown命令

选项:

[root@study ~]# chown [-R] 用户名 文件或目录
[root@study ~]# chown [-R] 用户名.组用户名 文件或目录
选项与参数:
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件都变更

实例:

ojh@ojh-virtual-machine:~$ touch txt
ojh@ojh-virtual-machine:~$ touch dir/hello
ojh@ojh-virtual-machine:~$ sudo chown user2 txt /文件所属用户者改为用户user2
ojh@ojh-virtual-machine:~$ sudo chown user2.user2 txt   /文件所属用户者改为用户user2,文件所属组用户改为组用户user2
ojh@ojh-virtual-machine:~$ ls -l txt
-rw-rw-r-- 1 user2 user2 0 1月  13 00:19 txt

2.chgrp命令

选项:

root@study ~]# chgrp [-R] 组用户名 文件或目录
选项与参数:
-R : 进行递回(recursive)的持续变更,亦即连同次目录下的所有文件、目录
都更新成为这个群组之意。常常用在变更某一目录内所有的文件之情况。

实例:

ojh@ojh-virtual-machine:~$ mkdir dir
ojh@ojh-virtual-machine:~$ touch dir/hello
sudo chgrp user2 dir   /文件夹所属用户者改为用户user2
ojh@ojh-virtual-machine:~$ ll -d dir 
drwxrwxr-x 2 ojh user2 4096 1月  13 00:20 dir/

查找命令

1.命令查找-whereis/which命令

whereis 只找系统中某些特定目录下面的文件。
实例:

ojh@ojh-virtual-machine:~$ whereis ls
ls: /bin/ls /usr/share/man/man1/ls.1.gz
ojh@ojh-virtual-machine:~$ which ls
/bin/ls
ojh@ojh-virtual-machine:~$ whereis vim
vim: /usr/bin/vim.basic /usr/bin/vim /usr/bin/vim.tiny /etc/vim /usr/share/vim /usr/share/man/man1/vim.1.gz
ojh@ojh-virtual-machine:~$ which vim
/usr/bin/vim

2.文件查找-locate/find命令

locate 是从数据库来搜寻文件名
locate选项:

[root@study ~]# locate [-ir] keyword
选项与参数:
-i :忽略大小写的差异;
-c :不输出文件名,仅计算找到的文件数量
-l :仅输出几行的意思,例如输出五行则是 -l 5
-S :输出 locate 所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等
-r :后面可接正则表达式的显示方式

实例:

ojh@ojh-virtual-machine:~$ locate ifconfig 
/sbin/ifconfig
/snap/core/14399/sbin/ifconfig
/snap/core18/2654/usr/lib/python3/dist-packages/cloudinit/distros/parsers/ifconfig.py
/snap/core18/2654/usr/lib/python3/dist-packages/cloudinit/distros/parsers/__pycache__/ifconfig.cpython-36.pyc
...
...

find选项:

[root@study ~]# find [PATH] [option] [action]
选项与参数:
1. 与时间有关的选项:共有 -atime, -ctime 与 -mtime ,以 -mtime 说明
-mtime n :n 为数字,意义为在 n 天之前的“一天之内”被更动过内容的文件;
-mtime +n :列出在 n 天之前(不含 n 天本身)被更动过内容的文件文件名;
-mtime -n :列出在 n 天之内(含 n 天本身)被更动过内容的文件文件名。
-newer file :file 为一个存在的文件,列出比 file 还要新的文件文件名
ojh@ojh-virtual-machine:~$ touch hello.c hello.o
ojh@ojh-virtual-machine:~$ find -name hello.c
./hello.c
ojh@ojh-virtual-machine:~$ find -name "*hello*"
./hello.c
./dir/hello
./hello.o
./test1/hello2.h
./test1/hello

删除所有.o文件命令

ojh@ojh-virtual-machine:~$ find -iname “.o” -sxec rm -rf {} \;

grep命令

可在文件内查找特定内容

格式为:grep [选项] 格式[文件及路径]

常用选项

-n 输出显示行号
-v 去除包含此参数的行,输出剩余行
-i 忽略字符大小写的差别
-c:只输出匹配行的计数。
-q:不输出到终端
-A,-B,-C:三者后面都是接阿拉伯数字
-A是显示匹配后和它后面的n行
-B是显示匹配行和它前面的n行
-C是匹配行和它前后各n行

示例:

ojh@ojh-virtual-machine:~$ grep ojh /etc/passwd    
ojh:x:1000:1000:ojh,,,:/home/ojh:/bin/bash
ojh1:x:1001:203::/home/ojh1:/bin/sh

shell配置

linux系统下配置文件有四个:

  • letc/profile:此文件为系统的每个用户设置环境信息当用户第一次登录时,该文件被执行.并从etc/profile.d目录的配置文件中搜集shell的设置:
  • letc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取;
  • ~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取:此文件类似于/etc/bashrc,不需要重启生效,重新打开一个bash即可生效
  • ~/.bash_profile 是交互式、login 方式进入bash 运行的:

读入环境配置文件的指令-source命令

[dmtsai@study ~]$ source 配置文件文件名

范例:将主文件夹的 ~/.bashrc 的设置读入目前的 bash 环境中

ojh@ojh-virtual-machine:~$ source ~/.bashrc
ojh@ojh-virtual-machine:~$ . .bashrc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值