Linux学习-第五章

Linux用户管理

Linux系统中超级用户是root,通过超级用户root可以创建其他的普通用户,Linux是一个支持多用户的操作系统。在实际应用中,一般会分配给开发人员专属的账户,这个账户只拥有部分权限,如果权限太高,操作的范围过大,一些误操可能导致系统崩溃,或者数据不安全,所以多用户机制就是一种系统安全策略。
在Linux系统中任何一个用户都对应:一个用户名 + 一个口令(密码)。用户使用系统时需要输入用户名和口令登录,登录成功后就可以进入自己的主目录(主目录就是自己的工作目录)。
用户账号管理主要包括三个方面:

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

1. 用户组的管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
用户组的管理涉及用户组的添加、修改和删除。
用户组的添加、修改和删除实际上就是对/etc/group文件的更新。添加一个用户组,相当于在这个文件中添加一个记录。
使用root账户查看当前系统的用户组有哪些:

[root@iZ2ze4z8h14hq1x56p3n9xZ test]# cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:

在这里插入图片描述
每一条记录都是用冒号隔开的字段,第一个字段表示组名,第二个字段表示组的密码表示,第三个字段是组的ID,再往后是组的成员(可能没有)。即:

组名:密码标识:GID:该用户组中的用户列表

查看当前登录用户属于哪一组:

groups

查看某一个用户属于哪一组:

[root@iZ2ze4z8h14hq1x56p3n9xZ test]# groups root
root : root
[root@iZ2ze4z8h14hq1x56p3n9xZ test]# groups zyx
zyx : zyx

在这里插入图片描述

1.1 用户组的添加

语法:groupadd [选项] 组名
常用选项包括:
	-g :可以通过这个选项来指定新用户组的标识好哦(GID)

添加一个用户组dev1:

groupadd dev1

添加一个用户组dev2并指定GID:

groupadd -g 101 dev2    # 其中101就是dev2这个组的组号

1.2 用户组的修改

修改组标识号:

groupmod -g 102 dev2    # 将dev2这个组的组号改为102

修改组名:

groupmod -n dev3 dev2    # 将dev2修改为dev3

1.3 用户组的删除

删除用户组:

groupdel dev3     # 删除用户组dev3

2. 用户的管理

用户管理工作主要涉及到用户的添加、修改和删除。

2.1 添加用户

添加用户就是在系统中创建一个新账号,然后为新账号分配用户组、主目录等资源。
语法:useradd [选项] 用户名
选项:

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

添加用户:

useradd zyx

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

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

添加用户zhangsan并设置该用户的主目录

useradd -d /usr/zhangsan zhangsan

添加用户lisi并指定附加组

useradd -d /usr/lisi -g dev -G lisi    # 添加lisi用户,该用户主目录为/usr/lisi,所属组dev(开发),附加组test(测试)

2.2 设置密码

给用户设置密码:

passwd 用户名

例如:给用户lisi设置密码:

passwd lisi

注意:增加用户就是在/etcd/passwd文件中为新用户增加一条记录,同时更新其他系统文件如:/etx/shadow,/etc/passwd。
通过查看/etc/passwd文件可以看到系统中有哪些用户,例如执行:cat /etc/passwd:
在这里插入图片描述
用冒号隔开的字段分别是:用户名:密码:用户id:组id:用户备注信息:主目录:shell程序路径

密码会单独存储在/etc/shadow文件中,例如执行:cat /etc/shadow:
在这里插入图片描述

2.3 切换用户

切换用户前面说过,使用su命令就行,例如从root用户切到lisi用户:

su lisi

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

2.4 修改用户

修改用户就是对用户名,用户主目录,用户组等进行修改。
语法:usermod [选项] 用户名

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

修改用户名:

usermod -l zhangsi zhangsan    # 把zhangsan的名字改为zhagnsi

修改主目录:

#    -m 选项很重要,当有了这个选项之后,目录不存在时会新建该目录
usermod -d /usr/zhangsan2 -m zhangsan    # 把zhangsan的主目录改为zhangsan2

修改所属组:

usermod -g dev1 zhangsan    # 把zhangsan的组改为dev1

锁定用户:

usermod -L zhangsan    # 把用户zhangsan锁定

解锁用户:

usermod -U zhangsan    # 给zhagnsan用户解锁

2.5 删除用户

删除用户并连同用户主目录一块删除:

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

3. 为用户主目录之外的目录授权

第一步:创建目录

mkdir /java

第二步:给目录授权

#  -R表示递归设置权限,该目录下所有的子目录以及子文件。chmod是授权的,后面章节会详细说明。 
#  7 7 5 :分别表示文件拥有者的权限 同组人员的权限 其他组成员的权限
chmod -R 775 /java

第三步:创建组

groupadd dev

第四步:把目录赋予组

chgrp -R dev /java    #  把/java这个组给dev这个组

第五步:创建用户

useradd xiaoming    # 这个时候xiaoming是有一个默认的组的(主组)

第六步:设置密码

passwd xiaoming

第七步:给用户添加附加组

usermod -G dev xiaoming
  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 嵌入式Linux应用开发第五章示例3是一个关于文件操作的代码示例。该示例主要涉及到如何在Linux嵌入式系统中使用文件操作的相关函数。 首先,在示例代码中引入了几个与文件操作相关的头文件,包括<fcntl.h>、<sys/types.h>和<sys/stat.h>。这些头文件中定义了一些文件打开、读写和关闭等函数以及文件的相关数据类型。 接下来,代码示例中定义了一个用于存储文件路径的字符串变量path和一个用于存储文件描述符的整型变量fd。在示例中,path被指定为了一个具体的文件路径,这个路径可以根据实际情况进行修改。fd用于存储打开的文件的描述符。使用函数open()来打开文件,并将返回的文件描述符保存到变量fd中。在代码示例中,函数open()的第一个参数为文件路径,第二个参数为打开文件的方式,第三个参数为文件的权限设置。 接下来,代码示例使用函数read()来读取打开的文件中的内容,并将读取到的内容存储到一个用于存储读取结果的字符数组buf中。函数read()的第一个参数为文件描述符,第二个参数为存储读取结果的缓冲区地址,第三个参数为缓冲区的大小。 最后,在代码示例的结尾部分,使用函数close()来关闭文件,传入文件描述符作为参数。 总结而言,该示例代码主要演示了在嵌入式Linux系统中如何进行文件操作,包括打开文件、读取文件内容和关闭文件等操作。通过学习该示例,可以了解到Linux系统中与文件操作相关的函数和头文件的使用方法。 ### 回答2: 嵌入式Linux应用开发第五章示例3代码主要涉及嵌入式设备中使用动态库的开发过程。该示例中使用了一个简单的动态库,主要实现了一个计算两个整数和的函数。 首先,在示例代码中,我们首先需要编写一个动态库的C源文件,可以为该文件命名为libadd.c。该源文件中定义了一个函数add,用于计算两个整数的和。然后,我们使用gcc编译器将该源文件编译为一个动态库,使用的命令是:gcc -shared -o libadd.so libadd.c。编译后的动态库文件为libadd.so。 接下来,在示例代码中,我们需要编写一个可执行文件的C源文件,可以为该文件命名为main.c。在该源文件中,我们通过使用dlopen函数动态加载libadd.so动态库,并通过dlsym函数获取动态库中的add函数的地址。然后,我们可以调用add函数来计算两个整数的和,并输出结果。最后,我们使用gcc编译器将该源文件与动态库链接为一个可执行文件,使用的命令是:gcc -o main main.c -ldl。编译后的可执行文件为main。 最后,在示例代码中,第三个函数是main函数,其中通过调用add函数来计算两个整数的和,并输出结果。 通过以上步骤,我们成功实现了嵌入式设备中动态库的使用。使用动态库可以提供代码的复用性,减少可执行文件的大小,并且方便进行代码的更新和维护。在实际应用中,我们可以根据需要编写更多的动态库,并将其集成到嵌入式系统中,以实现各种功能和服务。 ### 回答3: 第五章示例3代码是一个嵌入式Linux应用开发的示例程序。这个示例程序主要展示了如何在Linux系统上使用C语言编写一个简单的应用程序,以及如何利用Linux内核提供的接口对系统进行控制和管理。 代码的主要结构是一个无限循环,循环中不断读取用户输入的按键值,然后根据按键值执行相应的操作。代码中使用了Linux系统提供的头文件和库函数来实现输入和输出操作。 首先,在程序开始的部分,设置了一些初始化的参数。包括定义了按键值的变量和输入输出设备的文件描述符。 接着,在无限循环中,使用read函数读取用户输入的按键值,并将其存储在按键变量中。然后,通过switch语句对按键进行判断和处理。 代码中的示例操作比较简单,主要是根据不同的按键值打印相应的提示信息。例如,按下“1”键会打印“Hello World”等等。 最后,在代码的结尾处,关闭了打开的输入输出设备的文件描述符。 总的来说,这个示例程序展示了如何在嵌入式Linux系统中进行应用开发和控制,以及如何利用Linux内核提供的接口进行输入和输出操作。这个示例程序比较简单,但是可以作为学习和理解嵌入式Linux应用开发的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值