张大帅学Linux之用户及用户组管理

张大帅学Linux之用户及用户组管理

标签(空格分隔): Linux

用户概述及管理

Linux系统是一个多用户多任务系统。通过授予不同的用户权限,可以让不同的用户执行指定的任务及访问不同的资源。当Linux系统拥有越来越多的用户时,管理任务会更复杂,因此需要系统能够支持用户的添加与管理,以完成日常的管理任务。


Linux作为一个网络操作系统,意味者可能有一个或更多的用户在同时使用这个操作系统,因此,建立彼此分开的用户账户是必要的。在Linux系统中,根用户(即root账户,类似Windows系统中的Admin)具有系统最高的权限,可以进行任何操作,如果在使用这个账号时,出现一个错误操作,就有可能使系统崩溃,因此管理员要根据不同的需要授予用户不同的操作权限,以保障系统的安全及运行的稳定性。当然,合理地对各种授权的用户进行系统资源方面的管理也是非常重要的。

Linux在系统中的用户分为三种超级用户、普通用户和特殊用户

  • 超级用户

在默认安装的初始情况下,Linux系统中的超级用户为root,也称其为根用户,具有系统中最高的权限。超级用户可以对Linux系统做任何操作,比如终止进程、添加或删除硬件设备、超越任何用户和用户组的权限来对文件或目录进行读取、修改或删除,所以除非绝对必要,不要使用超级用户来进行操作或者登录,经常使用超级用户进行操作,会使系统存在很大的危险!许多网络服务器在处理超级用户时都有一些特殊的考虑。比如在默认安装的情况下,超级用户是无法通过telnet登录Linux系统的,如果允许这样做,就会成为一个相当大的安全漏洞。需要初学者注意的是,在大部分Unix和Linux操作系统里,UID为0的即为超级用户,其登录名称并不一定是“root”。


  • 普通用户

由超级用户创建及授权,并且可以登录到计算机执行某些任务。普通用户为受限用户,只能操作其拥有权限的目录和文件,用户之间私人的资源可以相互隔离,例如用户A只能修改自己用户目录下的资料,而不可以修改或查看用户B的资料。同时普通用户只能管理由自己启动的进程,而不能结束由其它用户发起的进程。

  • 系统用户

也称虚拟用户、伪用户、假用户或者特殊用户。在Linux系统中,每个文件、目录和进程,都归属于某一个用户,为了完成特定的任务,系统内建了若干用户,比如mail、ftp、bin等,系统用户也是受限用户。默认情况下,系统用户都是无法登录的,如果给这些用户授权登录口令后,就可以使用用户登录系统。但为了安全起见,最好不要给这些用户授权口令。


用户管理

1. useradd或adduser:添加用户。

基本格式:useradd [选项] <用户名>
常用选项有:
-u:直接指定一个特定的 UID 给这个帐号,默认情况下,普通用户一般其UID大于499。
-g:直接指定用户所在组的名称。
-M:强制不要建立用户家目录。
-c:指定用户信息描述。
-d:指定用户家目录,不使用系统默认值。
-s:指定用户shell ,而不使用默认的/bin/bash。
-G:指定用户所属的附加组。
-mk:复制其他用户主目录下的文件和配置信息来创建用户。
-e expire_date:帐号终止日期。日期的指定格式为MM/DD/YY。
-f inactive_days:帐号过期几日后永久停权。当值为0时帐号则立刻锁定禁用。而当值为-1时则关闭此功能,预设值为-1。

2. userdel:删除用户。

基本格式:userdel [选项] <用户名>
常用选项有:
-r:删除用户的同时一并删除用户家目录及其拥有的所有文件
notice:   tail /etc/passwd      //查看用户账号是否存在


3. passwd:设置及更改用户口令。

基本格式:passwd [选项] [用户名]
常用选项及含义:
-l:锁定用户账号。
-u:解锁用户账号。
-d:设置用户口令为空。但该用户可以在系统中登录。
-x:密码使用最大时间(天)。
-n:密码使用最小时间(天)。
-w:在距多少天提醒用户修改密码。
-i:密码过期多少开之后被禁用。
注意:在Linux系统中,超级用户可修改任何用户的密码,普通用户只可修改自己的密码.
图片4.png

4. usermod:更改用户账户属性。

该命令可用于更改、设置用户属性,其语法与useradd基本相同。
基本格式:usermod [-c comment] [-d home_dir [ -m]] [-e expire_date] [-f inactive_time] [-g initial_group] [-G group[,…]] [-l login_name] [-p password][-s shell] [-u uid [ -o]] [-L|-U] <用户名>
选项含义:
-c:修改用户帐号的备注。
-d:修改用户家目录,
-e:修改账号有限期限。
-f:修改账号密码过期多少天之后即关闭该账号。
-g:修改用户所属的群组。
-G:修改用户所属附加群组。
-l:修改用户账号名称。
-p:修改用户密码。
-s:修改用户登录后的shell。
-u:修改用户uid。
-L:锁定用户不得登录。
-U:解除用户锁定。
图片5.png


5. su:使用指定用户的shell,经常理解为切换用户身份。

基本格式:su [选项] [用户名]
常用选项及含义:
-f:不必读启动文件(如 csh.cshrc 等),仅用于csh或tcsh两种Shell。
-l:使用指定用户的登录环境,例如HOME、SHELL和USER等,并且工作目录也会改变。如果没有指定用户,缺省情况是root。
-m:执行su时不改变环境变量。
-c command:临时变更账号为指定用户,并执行指令(command)后再返回为原来的使用者。
图片7.png
提示:在使用su时经常携带参数“-”号,表示同时使用该用户的环境变量和Shell。

扫描二维码关注公众号,回复: 4711592 查看本文章

6. finger:查看指定用户信息。

图片6.png
从示例可见finger并不是一个很安全的指令,在某些版本的Linux系统中,默认不安装此命令。

组管理

1. groupadd:添加组。

基本格式:groupadd [-g GID] <组名> 常用用法示例:

[root @test/root]#groupadd -g 55 testing //添加一个组,GID为55
[root @test/root]#groupadd pro //添加一个组,其它值为默认
[root @test/root]#groupadd -g pro oradba //添加一个组,指定其属组为pro

2. groupdel:删除组。

[root @test/root]#groupdel pro //删除组


3. gpasswd:管理组群信息

[root @test/root]#gpasswd -d oradba pro //将用户oradba从pro组中删除
[root @test/root]#gpasswd -a oradba pro //将用户oradba加入pro组中删除

4.查看所属组

groups命令用于显示指定用户所属的组,如未指定用户则显示当前用户所属的组。该命令的语法格式为:
groups 用户名

sudo命令

用途:以可替换的其他用户身份执行命令,若未指定目标用户,默认为root用户
格式:

sudo[-u 用户名] 操作命令

说明:操作命令需在配置文件中授权给用户

sudo配置文件:/etc/sudoers

作用:授权哪些用户可以通过sudo方式执行哪些命令

  • 编辑方式:
    (1)visudo (2)vi /etc/sudoers
    推荐方式(1)
    3.png
    提升权限的几个步骤:
    chmod 660 sudoers
    vi sudoers
    user_name ALL=(ALL) ALL

RPM软件包管理

rpm软件包管理常用于以下用途:

  • 安装、删除、升级和管理软件。
  • 支持在线安装和升级软件。
  • 明确RPM包包含哪些文件,查看系统中的某个文件属于哪个软件包。
  • 查询系统中的软件包是否已安装。
  • 查看软件包版本。
  • 开发者可以把自己的程序打包为RPM 包并发布。
  • 软件包签名GPG和MD5的导入、验证和签名发布。
  • 依赖性的检查。
    RPM软件包的安装、删除、更新只有具有root权限才能使用,而查询功能任何用户都可以操作。

1. RPM命令的一般选项:

-v:显示附加信息。
–keep-temps:保留临时文件。临时文件通常位于“/tmp/rpm-*”,此选项用于debug。
–quiet:安静工作,只有当出现错误时才给出提示信息。
–help:显示帮助。
–version:显示当前使用的RPM版本。

2. 安装和升级:

使用RPM安装的一般格式如下:
rpm –i [安装选项] <软件包>
rpm –U [升级选项] <软件包>

安装选项与升级选项大致相同。
常用选项及含义有:
-h:安装时输出hash记号“#”。
–test:只对安装进行测试,并不实际安装。
–percent:以百分比的形式输出安装的进度。
–excludedocs:不安装软件包中的文件文件。
–includedocs:安装文件。
–replacepkgs:强制重新安装已安装的软件包。
–replacefiles:替换属于其他软件包的文件。
–force:忽略软件包及文件的冲突。
–noscripts:不运行预安装和后安装脚本。
–prefix:将软件包安装到指定的路径下。
–ignorearch:不校验软件包的结构。
–ignoreos:不检查软件包运行的操作系统。
–nodeps:不检查依赖性关系。

注意:如果要升级RPM软件包,只需要把参数“i”更换为“U”即可,其过程基本相同,只不过在升级安装时,系统会自动检测系统内原有版本,如果未安装软件包或者现版本号高于原版本,则删除原版本后再进行安装。
在进行安装或者升级时,有时会配合其它的一些选项一起使用,比如↓:

  • –force:强制安装。当要安装的软件版本已经安装在系统上,或者是系统上现有的版本比将要安装的版本高,系统就会发出警告,这时,用户如果坚持安装的话,可以用–force选项。

  • –nodeps:使用RPM安装前,RPM会检查该软件包的依赖关系,即正确运行该软件包所需的其他软件包是否已经安装。如果没有安装,系统会给出警告,这时,用户要强行安装的话,可以使用这个选项。但并不推荐这种做法。


3. 查询选项:

查询的命令格式如下:
rpm –q [查询选项]
这里的选项包括两大类:软件包选项和信息选项。
软件包选项有以下几个:
<软件包名字>:查询系统上是否已经安装这个软件包。
-a:查询所有安装的软件包。
–whatrequires <功能>:查询所有需要<功能>才能正常运行的软件包。
–whatprovides:查询所有能提供某功能的软件包。
-f:查询文件属于哪一个软件包。
–requiredby <软件包>:查询所有安装<软件包>所需要的其他软件包。
-p:查询未安装的软件包<软件包名字>。这个软件包可以指定为FTP路径,这时,RPM会下载它的头部信息并查询。
-g:查询属于某个组的软件包。
信息选项有:
-i:显示软件包的信息,包括名称、版本、描述信息。
-R:显示这个软件包所依赖的软件包。
–provides:显示这个软件包所提供的功能。
-l:列出这个软件包内所包含的文件。
-s:显示这个软件包的状态。状态是指normal、not installed或replaced。
-d:列出被标注为文档的文件 (如man 手册、 info 信息、README等等) 。
-c:列出被标注为配置文件的文件。这些文件是需要在安装完毕后加以定制的。如 (sendmail.cf、passwd、inittab等)
图片3.png

实例:↓
查看系统安装的所有软件包:

rpm -qa

查看系统是否安装了zz软件包

rpm -qa | grep zz  //用grep筛选

查看 /etc/httpd/conf/httpd.conf文件由哪个软件包所安装

rpm -qf /etc/httpd/conf/httpd.conf

查看已经安装的软件包相关信息

rpm -qi xxx(软件包)

查看软件包所安装的文件位置及名称

rpm -ql xxx(软件包)

查询某RPM包要安装的信息

rpm -qlp xxx(软件包)

4. 校验选项:

校验命令的一般格式如下:
rpm -V[校验选项] <软件包名称>
常用校验选项及含义:
-f:校验文件所属软件包。
-p:校验已安装的软件包。
-a:校验所有已安装的软件包。
-g:校验所有属于某个组的软件包。
校验会把软件包所安装的软件与原先数据库中存储的软件信息做一个比较。RPM可以验证文件的大小、MD5校验码、文件权限、类型、属主等信息。特定软件的验证选项同查询选项一样。
校验输出的格式是一个包括8个字符的字符串,这8个字符中每个字符都代表同数据库中信息所比较的结果。如是结果是“.”,就代表没有问题。下面是相应字符的意义:
S:文件大小。
M:属性(包括读写权限和文件类型)。
5 :MD5 校验。
L:符号链接
D:设备文件。
U:用户名。
G:组名。
T:文件修改时间。
?:不可读文件。
图片2.png
图片1.png

验证所有的软件包或者是查看误删了哪些文件

rpm -Va

4.删除软件包

命令如下:
rpm -e <软件名>

注意: 在卸载软件包时使用软件包名称zsh-4.2.6-1,而不是软件包文件名称zsh-4.2.6-1.rpm。

猜你喜欢

转载自blog.csdn.net/qq_42137895/article/details/84720569