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
rootx00root/root/bin/bash
binx11bin/bin/sbin/nologin
daemonx22daemon/sbin/sbin/nologin
admx34adm/var/adm/bin/bash
lpx47lp/var/spool/lpd/sbin/nologin
syncx50sync/sbin/bin/sync
shutdownx60shutdown/sbin/sbin/shutdown
haltx70halt/sbin/sbin/halt
mailx812mail/var/spool/mail/sbin/nologin
operatorx110operator/root/sbin/nologin
gamesx12100games/usr/games/sbin/nologin
ftpx1450FTP User/var/ftp/sbin/nologin
nobodyx9999Nobody//sbin/nologin
systemd-networkx192192systemd Network Management//sbin/nologin
dbusx8181System message bus//sbin/nologin
polkitdx999998User for polkitd//sbin/nologin
sshdx7474Privilege-separated SSH/var/empty/sshd/sbin/nologin
postfixx8989/var/spool/postfix/sbin/nologin
chronyx998996/var/lib/chrony/sbin/nologin
markx10001000mark/home/mark/bin/bash
developerx10011001/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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值