Linux系列--用户、文件管理

一、概述

Linux系统中超级用户是root,通过超级用户root可以创建其它的普通用户,Linux是一个支持多用户的操作系统。在实际使用中,一般会分配给开发人员专属的账户,这个账户只拥有部分权限,如果权限太高,操作的范围过大,一些误操作可能导致系统崩溃,或者数据不安全,所以多用户机制就是一种系统安全策略。

在Linux系统中任何一个用户都对应:一个用户名 + 一个口令。用户使用系统时需要输入用户名和口令进行登录,登录成功后就可以进入自己的主目录(主目录就是自己的工作目录)。

用户账号管理主要包括以下三方面:

  • 用户组的管理
  • 用户的管理
  • 为用户主目录之外的目录授权

二、用户组的管理

一、用户组概念

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。

用户组的管理涉及用户组的添加、修改和删除。

用户组的添加、修改和删除实际上就是对/etc/group文件的更新。

二、查看用户组相关信息

一、使用root账户查看当前系统的用户组有哪些

1、cat /etc/group

一行就是一个组,每一个用户组四部分组成:组名:密码标识:GID:该用户组中的用户列表。

二、查看当前登录的账户属于哪一组

1、groups

三、查看某个用户属于哪一组

1、groups root

三、用户组的添加

一、语法

1、语法:groupadd [选项] 组名 (groupadd之间没有空格)

2、常用选项包括:

  • -g 可以通过这个选项来指定新用户组的标识号(GID)

3、栗子:

  • groupadd dev1
  • groupadd -g 101 dev2 其中101是dev2这个组的组号

二、用户组的修改

1、修改用户组组号

groupmod -g 102 dev2

2、修改用户组组名

将dev2修改为dev3

groupmod -n dev3 dev2

三、用户组的删除

删除用户组dev3

groupdel dev3

三、用户的管理

一、添加用户

一、描述

添加用户就是在系统中创建一个新账号,然后为新账号分配用户组、主目录等资源。

二、语法:useradd [选项] 用户名

三、选项:

  • -d 指定新用户的主目录
  • -g 指定新用户属于哪个组(主组)
  • -G 可以给新用户添加附加组

四、栗子

1、useradd lisi

注意:当新建用户时,没有指定组,也没有指定工作目录时:

  • 默认的组名:和自己用户名一样
  • 默认的主目录:/home/用户名

2、useradd -d /usr/zhangsan zhangsan

3、useradd -d /usr/lisi -g dev -G test lisi

添加lisi用户,该用户的主目录/usr/lisi,所属主组dev(开发组),附加组test(测试组)

二、设置密码

一、命令

passwd lisi

注意:增加用户就是在/etc/passwd文件中为新用户增加一条记录,同时更新其他系统文件如/etc/shadow, /etc/group等。

二、查看用户信息

通过查看/etc/passwd文件可以看到系统中有哪些用户,例如执行:cat /etc/passwd

密码会单独存储在/etc/shadow文件中,例如执行:cat /etc/shadow 这个密码是通过某种算法进行加密的。

三、切换用户

一、切换指定用户

su bjpowernode

二、切换root用户

su root

注意:从普通用户切换到高级用户需要密码。密码输入时不回显。切换到普通用户之后,该普通用户默认只对自己的"主目录"有权限,主目录之外的目录是没有权限的

四、修改用户

修改用户就是对用户名,用户主目录,用户组等进行修改。

一、语法:usermod [选项] 用户名

二、选项

  • -d 指定新用户的主目录
  • -g 指定新用户属于哪个组(主组)
  • -G 可以给新用户添加附加组
  • -l 指定新的用户名(小写的)

三、栗子

1、usermod -l zhangsi zhangsan

2、# -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录。

usermod -d /usr/zhangsan2 -m zhangsan

3、usermod -g dev1 zhangsan

4、usermod -L zhangsan

5、usermod -U zhangsan

五、删除用户

一、命令

userdel -r zhangsan

-r 选项的作用是连同该用户主目录一块删除。

四、为用户主目录之外的目录授权

一、创建目录

mkdir /java

二、给目录授权

-R表示递归设置权限,该目录下所有的子目录以及子文件

chmod -R 775 /java

三、创建组

groupadd dev

四、把目录赋予组

chgrp -R dev /java

五、创建用户

useradd xiaoming

六、设置密码

passwd xiaoming

七、给用户添加附加组

usermod -G dev xiaoming

五、文件权限

一、文件权限概述

Linux为了保证系统中每个文件的安全,引入了文件权限机制。针对于系统中的每一个文件Linux都可以提供精确的权限控制。它可以做到不同的用户同一个文件具有不同的操作权利。而通常这个权利包括以下3个:

  • 读的权利(Read,简称r)
  • 写的权利(Write,简称w)
  • 执行的权利(eXecute,简称x)

不同的用户包括3类用户:

  • 文件拥有者(User,简称U):该文件的创建人
  • 同组用户(Group,简称G):和创建人在同一组的用户
  • 其他组用户(Other,简称O):和创建人不在同一组的用户

这就是UGO模型。也就是说一个文件的权限包括三组:

  • 第一组U:我们可以给文件的创建者设置rwx权限。
  • 第二组G:我们可以给文件创建者的同组人员设置rwx权限。
  • 第三组O:我们可以给和文件创建者不在同一组的人员设置rwx权限。

二、查看文件权限

一、采用"ls -l"命令可以查看文件的具体权限

二、组成:文件类型+文件的权限,共10个字符

1、第1个字符:代表文件的类型,- 代表文件,d代表目录。

其实Linux中文件的类型有7种:

    • 代表普通文件
  • d 代表目录
  • l 代表链接(软链接:快捷方式)
  • b 块设备(硬盘,软盘等存储设备)
  • c 字符设备(通常以字节流的方式访问)
  • p 管道文件(主要用于进程间通讯)
  • s 套接字文件(主要用于网络通讯)

2、第2,3,4个字符:代表文件创建者对该文件的权限

3、第5,6,7个字符:代表与文件创建者在同一组的用户对该文件的权限。

4、第8,9,10 个字符:代表其他组人员对该文件的权限

5、文件权限的9个字符中包含四种字符,分别是:r、w、x、-

  • r:读权限
  • w:写权限
  • x:执行权限
  • -:无权限

三、基于UGO设置文件权限

修改权限的命令是chmod,如果采用UGO方式修改权限的话,大致语法是这样的

1、chmod g+w Hello.java 给同组人员(g:代表同组人员)增加(+)写(w)权限

2、chmod g+w, o+w Hello.java 给同组人员(g:代表同组人员)增加(+)写(w)权限,给其他组成员增加写权限

3、chmod g-w, o-w Hello.java 去除同组人员写权限,去除其他组成员写权限

4、栗子:

将文件拥有者的写权限删除:

尝试使用vim命令编辑HelloWorld.java文件

再把写的权限加上

这个时候文件可以编辑了

四、基于421设置文件权限

一、421采用数字来表示不同的权限

  • 4代表读,100,用二进制转换就是(2的2次方等于4)
  • 2代表写 010,用二进制转换就是(2的1次方等于2)
  • 1代表执行 001,用二进制转换就是(2的0次方等于1)

其实就是rwx,这三个字母,用二进制表示,1代表有对应权限,0代表没有对应权限,

例如:如果让一个用户读、写、执行权限都有的话,就是4 + 2 + 1 = 7(111,表示读、写、执都有),那么7这个数字就代表rwx的权限都具备。如果是5就表示4+1(101)的组合,表示有r和x的权限。如果是6就表示4+2(110)的组合,表示有r和w的权限。如果是0就表示无任何权限。

二、通过421这几个数字的不同组合来表示不同的权限,有以下几种种不同的组合:

  • 0:无权限
  • 1:x 001
  • 4:r 100
  • 5:r + x 101
  • 6:r + w 110
  • 7:r + w + x 111

也就是说一共6个数字:0 1 4 5 6 7

三、采用421方式设置权限

1、语法:chmod 三个数字 文件名

2、栗子:

chmod 755 HelloWorld.java

第一个数字7是文件拥有者的权限,第二个数字5是同组人员的权限,第三个数字5是其他组人员的权限。也就是说文件拥有者的权限是rwx,同组人员是r-x,其他组人员是:r-x

五、chown修改文件拥有者

使用 chown 命令来修改指定文件或目录的拥有者和所属组

一、语法

chown [选项]... [所有者][:[所属组]] 文件...

其中,所有者所属组 可以是用户名或用户 ID、组名或组 ID,如果省略 :所属组,则默认为修改文件的所有者。

二、常用选项

  • -R:递归修改,包括子目录和文件。

三、栗子

1、将 /home/user/file.txt 文件的所有者修改为 root 用户

sudo chown root /home/user/file.txt

2、将 /home/user/dir/ 目录及其子目录和文件的所有者都修改为 userA 用户,所属组修改为 groupA 组,可以使用如下命令:

sudo chown -R userA:groupA /home/user/dir/

注意:在使用 chown 命令时,需要有足够的权限才能修改文件或目录的拥有者和所属组。一般需要使用 sudo 命令或使用具有相应权限的用户来执行。

相关推荐
IT 古月方源10 分钟前
ospf 的 状态机详解
运维·网络·tcp/ip·智能路由器
九河云19 分钟前
Amazon Bedrock Claude 3 在客户服务自动化中的应用方法
运维·人工智能·自动化·aws
hc_bmxxf21 分钟前
Linux应用软件编程-多任务处理(进程)
linux·运维·服务器
M-C-B43 分钟前
配置带外与更改密码
运维·服务器
沐多1 小时前
波折重重:一个Linux实时系统Xenomai宕机问题的深度定位过程
linux·xenomai·实时linux·xenomai4
猿经验1 小时前
tar.gz压缩文件在linux上解压异常问题:gzip:stdin:invalid compressed data
linux·运维·服务器
木卫二号Coding1 小时前
宝塔-firefox(Docker应用)-构建自己的Web浏览器
linux·docker·开源
dawn1 小时前
通过GRE协议组建VPN网络
运维·网络·vpn·gre
SP八岐大兔2 小时前
Linux(Ubuntu/CentOS)配置开机自启动服务
linux·ubuntu·centos
玄德公笔记2 小时前
docker-compose搭建sfpt服务器
服务器·docker·容器·sftp·docker-compose