Linux用户和用户组管理:添加、删除、更改密码等

开发人员习惯性用root在服务器做各种操作。如果在开发、测试服务器上问题到不大。在生产环境下这样子会有些潜在的风险,不建议使用root用户。 一个是常用root用户登录,如果有误操作强行删除了关键文件等风险难以控制。另外, 如果黑客通过网站漏洞进行攻击拿到root权限,并远程进行各种操作,这样导致的风险将是不可控的。建立好的用户系统,好的做法是
①是不让root远程登录服务器。
②建立运维、开发、应用的三级账户体系。运维账户权限接近root用户。 开发用户可以看日志,不能更改删除文件,不能下载安装程序、文件等。
③做好目录规划

一、用户管理

1. 添加新用户

下面的命令添加一个新的账户。本命令默认会在/home目录下为新用户建立一个用户名同名的主目录,也为用户单独建立一个与用户名同名的组。

useradd 选项 用户名

选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

useradd -s /bin/sh -g group1 –G adm,root newuser

此命令新建了一个用户newuser,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

2. 删除用户

userdel 选项 用户名

常用的选项是 -r,它的作用是把用户的主目录一起删除。
例子:

userdel -r newuser

3.修改用户

usermod 选项 用户名

常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样。
-l 选项用来修改用户名。

4.修改用户的登录shell

使用chsh命令可以修改自己的shell,只有超级用户才能用chsh username为其它用户修改shell设置。注意,指定的shell必须是列入/etc/shells文件中的shell,否则该用户将不能登陆。

一般,比较常见的shells文件包括下面这些shell:
/bin/bash2
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
如果使用/usr/bin/passwd,不让用户通过控制台或telnet登录系统,但可以修改帐户密码(比如在FTP里用)。
以及/bin/false,也就是不让这个用户登录的意思,连FTP也不能用。

5. 为用户设置密码

下面的命令为刚才新增加的用户设置密码。本命令在root用户下操作。

passwd 选项 用户名

可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。

如果不加用户名,表示操作当前用户。

passwd newuser

普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。

二、用户组管理

1、增加一个新的用户组

groupadd 选项 用户组

可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

例:

groupadd group1

2、删除用户组

groupdel 用户组

3、修改用户组

常用的选项有:

-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字

4、切换用户组

切换当前用户到某个用户组。前提条件是用户组确实是该用户的主组或附加组。

newgrp 用户组

5、查看所有用户组

切换当前用户到某个用户组。前提条件是用户组确实是该用户的主组或附加组。

cat /etc/group 

三、用户查看

1. 查看个别用户信息

whoami  #要查看当前登录用户的用户名
who am i  #表示当前终端的用户登录信息
who mom likes #意思同上
who 选项

选项说明
-a 查看全部信息
-d 查看死掉的进程
-m 同am i,mom likes
-q 查看当前登录用户数及用户名
-u 查看当前登录用户登录信息
-r 查看运行等级

2. 查看所有用户信息

可以直接查看passwd文件,看到所有用户情况。

cat /etc/passwd  #查看所有用户的属性
cat /etc/shadow  #实际保存的用户加密后的密码信息

下面是输出例子。
在这里插入图片描述
UID(用户ID)对于CentOS6来讲,0–499是系统用户,500+是一般用户。 CentOS7之后,0~999是系统用户,1000+是一般用户。
列成表格看起来更容易些。可以看到,系统初始化的时候建立了很多账户,大部分是不让登录使用的。
可以通过“usermod -s /bin/bash adm”之类的用户修改命令来让其可以登录使用。

用户名称 密码占位符 UID 主要组的GID 用户主要组 用户Home目录 用户默认bash
root x 0 0 root /root /bin/bash
bin x 1 1 bin /bin /sbin/nologin
daemon x 2 2 daemon /sbin /sbin/nologin
adm x 3 4 adm /var/adm /bin/bash
lp x 4 7 lp /var/spool/lpd /sbin/nologin
sync x 5 0 sync /sbin /bin/sync
shutdown x 6 0 shutdown /sbin /sbin/shutdown
halt x 7 0 halt /sbin /sbin/halt
mail x 8 12 mail /var/spool/mail /sbin/nologin
operator x 11 0 operator /root /sbin/nologin
games x 12 100 games /usr/games /sbin/nologin
ftp x 14 50 FTP User /var/ftp /sbin/nologin
nobody x 99 99 Nobody / /sbin/nologin
systemd-network x 192 192 systemd Network Management / /sbin/nologin
dbus x 81 81 System message bus / /sbin/nologin
polkitd x 999 998 User for polkitd / /sbin/nologin
sshd x 74 74 Privilege-separated SSH /var/empty/sshd /sbin/nologin
postfix x 89 89 /var/spool/postfix /sbin/nologin
chrony x 998 996 /var/lib/chrony /sbin/nologin
mark x 1000 1000 mark /home/mark /bin/bash
developer x 1001 1001 /home/developer /bin/bash

3.查看用户的ID,以及所属群组的ID

语法:id [-gGnru][–help][–version][用户名称]
id会显示用户以及所属群组的实际与有效ID。 若两个ID相同,则仅显示实际ID。 若仅指定用户名称,则显示目前用户的ID。
参  数:
 -g或–group  显示用户所属群组的ID(GID)。
 -G或–groups  显示用户所属附加群组的ID(GID)。
 -n或–name  显示用户,所属群组或附加群组的名称。
 -r或–real  显示实际ID。
 -u或–user  显示用户ID。
 -help  显示帮助。
 -version  显示版本信息。

4.允许该用户以管理员身份执行指令

详情参看我写的另外一篇博客:让用户获得sudo使用权

四、权限说明(撰写中)

1. 文件/文件夹权限

  1. 对目录有只读许可的用户,不能用cd命令进入该目录;还必须同时有执行许可才可以进入该目录。
  2. 必须同时拥有读和执行权限才可以使用ls这样的程序列出目录内容清单。
  3. 只对目录有执行权限的用户,想访问该目录下的文件有读权限的文件,必须知道该文件名才可以访问。

2. 权限分配

2.1 chown:改变文件或者文件夹的所有者:

chown命令用来更改某个目录或文件的用户名和用户组的。

chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径)

例1:把temp下的temp1的用户名和用户组改成user1和user1(只修改了temp1的属组).

chown user1:user1 /temp/temp1 

例2:把temp下的temp1下的所有文件的属组都改成user1和user1。

chown -R user1:user1 /temp/temp1 
2.2 chmod:改变文件或者文件夹的读写执行权限
chmod [who] [+ | - | =] [mode] 文件名

命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
  u 表示“用户(user)”,即文件或目录的所有者。
  g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
  o 表示“其他(others)用户”。
  a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
  + 添加某个权限。
  - 取消某个权限。
  = 赋予给定权限并取消其他所有权限(如果有的话)。
设置 mode 所表示的权限可用下述字母的任意组合:
  r 可读。
  w 可写。
 x 可执行。
  X 只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x 属性。
  s 在文件执行时把进程的属主或组ID置为该文件的文件属主。
方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
  t 保存程序的文本到交换设备上。
  u 与文件属主拥有一样的权限。
  g 与和文件属主同组的用户拥有一样的权限。
  o 与其他用户拥有一样的权限。


参考:

  1. Linux 用户和用户组管理:https://www.runoob.com/linux/linux-user-manage.html
  2. linux建立用户 详细:https://www.cnblogs.com/voswin/articles/1508759.html
  3. Linux运维–企业sudo权限规划详解 (实测一个堆命令搞定):https://www.cnblogs.com/huanglinxin/p/9154852.html
发布了73 篇原创文章 · 获赞 27 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/sitebus/article/details/94759622
今日推荐