linux总结--用户和组

用户和组账户管理

linux操作系统是一个多用户操作系统,它允许多用户同时登录到系统上并使用资源。系统会根据账户来区分每个用户的文件,进程,任务和工作环境,使得每个用户工作都不受干扰。

用户相关目录结构

保存用户信息的文件:/etc/passwd

保存密码的文件:/etc/shadow

保存用户组的文件:/etc/group

保存用户组密码的文件:/etc/gshadow

用户配置文件:/etc/default/useradd

 

passwd

用户信息的文件

可以通过more或者cat等命令查看文件

account:password:UID:GID:GECOS:directory:shell

用户名

用户登陆系统的用户名

密码

密码位

UID

用户标示号

GID

默认组标示号

描述信息

存放用户的描述信息

宿主目录

用户登陆系统的默认目录,默认是在/home/下

命令解析器

用户使用的Shell,默认是bash

shadow

用户密码的文件

用户名

登陆系统的用户名

密码

加密密码

最后一次修改时间

用户最后一次修改密码距现在的天数,从1970-1-1起

最小时间间隔

两次修改密码之间的最小天数

最大时间间隔

密码有效天数

警告时间

从系统警告到密码失效的天数

账号闲置时间

账号闲置时间

失效时间

密码失效的天数

标志

标志

group

组名

用的所在的组

组密码

密码位,一般不使用

GID

主标示号

组内用户列表

属于改组的用户列表

操作用户命令

添加用户命令:useradd

-u 指定组ID(uid)

-g 指定所属的组名(gid)

-G 指定多个组,用逗号“,”分开(Groups)

-c 用户描述(comment)

-e 失效时间(expire date)

例子:

useradd -u 888 -g users -G sys,root -c "hr zhang" zhangsan

passwd zhangsan

 

通过 ll home可以看到有了zhangsan的家

修改用户命令:usermod(user modify)

-l 修改用户名 (login)usermod -l a b(b改为a)

-g 添加组 usermod -g sys tom

-G添加多个组 usermod -G sys,root tom

–L 锁定用户账号密码(Lock)

–U 解锁用户账号(Unlock)

如:

将tomcat添加到sys和root组中:usermod -G sys,root tomcat

 

删除用户命令:userdel(user delete)

-r 删除账号时同时删除目录(remove)

添加组:groupadd

-g 指定gid

如:添加一个叫america的组:groupadd america

如:将jerry添加到america组中:usermod -g america jerry

 

修改组:groupmod

-n 更改组名(new group)

如:将america组名修改为am :groupmod -n am america

删除组:groupdel

groups 显示用户所属组

如:查看tomcat的组信息 :groups tomcat

gpasswd 对用户组进行管理

将tomcat用户从root组和sys组删除

gpasswd -d tomcat root

gpasswd -d tomcat sys

 

给zhangsan设置密码:

passwd zhangsan,根据提示输入密码

 

添加一个tom用户,设置它属于users组,并添加注释信息

分步完成:useradd tom

          usermod -g users tom

      usermod -c "hr tom" tom

一步完成:useradd -g users -c "hr tom" tom

修改tom用户的登陆名为tomcat

usermod -l tomcat tom

添加一个jerry用户并设置密码

useradd jerry

passwd jerry

 

切换到root用户

su root

 

sudo

 

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

配置sudo必须通过编辑/etc/sudoers文件,而且只有超级用户才可以修改它,还必须使用visudo编辑。之所以使用visudo有两个原因,一是它能够防止两个用户同时修改它;二是它也能进行有限的语法检查。所以,即使只有你一个超级用户,你也最好用visudo来检查一下语法。

执行visudo就会进入编辑改文件

visudo默认的是在vi里打开配置文件,用vi来修改文件。我们可以在编译时修改这个默认项。visudo不会擅自保存带有语法错误的配置文件,它会提示你出现的问题,并询问该如何处理,就像:

 

>>> sudoers file: syntax error, line 22 <<

此时我们有三种选择:键入“e”是重新编辑,键入“x”是不保存退出,键入“Q”是退出并保存。如果真选择Q,那么sudo将不会再运行,直到错误被纠正。

 

现在,我们一起来看一下神秘的配置文件,学一下如何编写它。让我们从一个简单的例子开始:让用户Foobar可以通过sudo执行所有root可执行的命令。以root身份用visudo打开配置文件,可以看到类似下面几行:

 

# Runas alias specification

# User privilege specificationroot    ALL=(ALL)ALL

我们一看就明白个差不多了,root有所有权限,只要仿照现有root的例子就行,我们在下面加一行(最好用tab作为空白):

 

foobar ALL=(ALL)    ALL

保存退出后,切换到foobar用户,我们就可以用sudo命令了

好了,我们限制一下foobar的权利,不让他为所欲为。比如我们只想让他像root那样使用ls和ifconfig,把那一行改为:

 

foobar localhost=    /sbin/ifconfig,   /bin/ls

 

现在让我们来看一下那三个ALL到底是什么意思。第一个ALL是指网络中的主机,我们后面把它改成了主机名,它指明foobar可以在此主机上执行后面的命令。第二个括号里的ALL是指目标用户,也就是以谁的身份去执行命令。最后一个ALL当然就是指命令名了。例如,我们想让foobar用户在linux主机上以jimmy或rene的身份执行kill命令,这样编写配置文件:

 

foobar    linux=(jimmy,rene)    /bin/kill

 

 

用法示例:以root用户的身份修改主机名为zhidao
sudo hostname zhidao

Linux用户分类

超级用户:(root,UID=0)

普通用户:(UID在500到60000)

伪用户:(UID在1到499)

系统和服务相关的:bin、daemon、shutdown等

进程相关的:mail、news、games等

伪用户不能登陆系统,而且没有宿主目录

 

用户组

每个用户至少属于一个用户组

每个用户组可以包含多个用户

同一个用户组的用户享有该组共有的权限

 

文件归属和权限

在linux中每个文件有所有者、所在组、其它组的概念

 

通过命令可以看到文件的属性,了解到文件的归属和权限信息

ls -l 文件名

权限是分别对于owner、group、others而言。

 

 

如果有文件夹  /a/b/c

ls -l /a 查看的是b文件的权限

ls -l /a/b 查看的是c文件的权限

ls -l /a/b/c 查看的是c文件的权限

 

所有者

所有者一般为文件的创建者,谁创建了该文件,就天然的成为该文件的所有者

可以使用chown 用户名 文件名来修改文件的所有者

 

文件所在组

可以使用chgrp 组名 文件名来修改文件所在的组

 

其它组

除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

 

文件目录默认权限

可以用umask -S查看

值得注意的是,虽然 umask 显示说明是有执行权限的,那只是在创建文件夹的时候,当我们创建文件的时候是不会赋予执行权限的

权限管理

三种基本权限

r 读权限(read)

w 写权限(write)

x 执行权限 (execute)

第1位:文件类型(d 目录,- 普通文件,l 链接文件)

第2-4位:所属用户权限,用u(user)表示

第5-7位:所属组权限,用g(group)表示

第8-10位:其他用户权限,用o(other)表示

第2-10位:表示所有的权限,用a(all)表示

 

完整信息:一个文件,所属用户具有读写执行权限;所属组的用户

有读写权限,没有执行权限;其他用户只有读权限

更改操作权限

如:用数字来表示权限(r=4,w=2,x=1,-=0)

0什么权限也没有

1拥有执行权限

2拥有写权限

3拥有写和执行的权限

4拥有读的权限

5拥有读和执行的权限

6拥有读和写的权限

7读写执行权限都有

 

例如:

chmod  750  b.txt 表示对b.txt,所属用户具有读写执行权限,所属组拥有读和执行权限,其他用户没有权限。

rwx用二进制表示是111,十进制4+2+1=7

r-x用二进制表示是101,十进制4+0+1=5

 

例如:

将/itcast目录下的所有文件与子目录皆设为任何人可读取

chmod -R a+r /itcast

参数:-R 下面的文件和子目录做相同权限操作(Recursive递归的)

 

 

例如:

创建a.txt和b.txt文件,将他们设为其拥有者和所在组可写入,但其他以外的人则不可写入:

chmod ug+w,o-w a.txt b.txt

 

表示所属用户和所属组在原来权限的基础上加上写的权限,其他用户取消写的权限。

加权限用+

减权限用—

是什么权限用=

 

例如

创建c.txt文件所有人都可以写和执行

chmod a=wx c.txt 或chmod 333 c.txt

 

例如:

 

将/itcast目录下的所有文件与子目录的拥有者设为root,用户拥有组为users

chown -R root:users /itcast

 

例如:

将当前目录下的所有文件与子目录的用户皆设为itcast,组设为users

chown -R itcast:users *

修改用户对文件或目录权限

修改文件的权限或目录的命令为“chmod 755 test.sh”。755表示“创建者拥有读写可执行权限、同一组用户以及其他用户拥有读和执行权限”。

对目录下所有的文件的权限修改

chmod 的-R参数可以实现,-R 是处理指定目录以及其子目录下的所有文件,比如给test目录及其下面的所有目录和文件添加rwx权限,用linux命令表示为

修改权限的u,g,o,a

chmod [who] [+ | - | =] [mode] 文件名¼

  命令中各选项的含义为:

  操作对象who可是下述字母中的任一个或者它们的组合:

  u 表示“用户(user)”,即文件或目录的所有者。

  g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。

  o 表示“其他(others)用户”。

  a 表示“所有(all)用户”。它是系统默认值。

  操作符号可以是:

  + 添加某个权限。

  - 取消某个权限。

= 赋予给定权限并取消其他所有权限(如果有的话)。

 

查看用户权限

ls -l /etc/group 查看所有的用户组及权限

ls -l /etc/passwd 查看所有用户及权限

 

posted @ 2022-11-15 10:44  星光闪闪  阅读(391)  评论(0)    收藏  举报