开发人员习惯性用root在服务器做各种操作。如果在开发、测试服务器上问题到不大。在生产环境下这样子会有些潜在的风险,不建议使用root用户。 一个是常用root用户登录,如果有误操作强行删除了关键文件等风险难以控制。另外, 如果黑客通过网站漏洞进行攻击拿到root权限,并远程进行各种操作,这样导致的风险将是不可控的。建立好的用户系统,好的做法是
①是不让root远程登录服务器。
②建立运维、开发、应用的三级账户体系。运维账户权限接近root用户。 开发用户可以看日志,不能更改删除文件,不能下载安装程序、文件等。
③做好目录规划
下面的命令添加一个新的账户。本命令默认会在/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用户组是其主组。
userdel 选项 用户名
常用的选项是 -r,它的作用是把用户的主目录一起删除。
例子:
userdel -r newuser
usermod 选项 用户名
常用的选项包括-c, -d, -m, -g, -G, -s, -u以及-o等,这些选项的意义与useradd命令中的选项一样。
-l 选项用来修改用户名。
使用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也不能用。
下面的命令为刚才新增加的用户设置密码。本命令在root用户下操作。
passwd 选项 用户名
可使用的选项:
-l 锁定口令,即禁用账号。
-u 口令解锁。
-d 使账号无口令。
-f 强迫用户下次登录时修改口令。
如果不加用户名,表示操作当前用户。
passwd newuser
普通用户修改自己的口令时,passwd命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而超级用户为用户指定口令时,就不需要知道原口令。
groupadd 选项 用户组
可以使用的选项有:
-g GID 指定新用户组的组标识号(GID)。
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。
例:
groupadd group1
groupdel 用户组
常用的选项有:
-g GID 为用户组指定新的组标识号。
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n新用户组 将用户组的名字改为新名字
切换当前用户到某个用户组。前提条件是用户组确实是该用户的主组或附加组。
newgrp 用户组
切换当前用户到某个用户组。前提条件是用户组确实是该用户的主组或附加组。
cat /etc/group
whoami #要查看当前登录用户的用户名
who am i #表示当前终端的用户登录信息
who mom likes #意思同上
who 选项
选项说明
-a 查看全部信息
-d 查看死掉的进程
-m 同am i,mom likes
-q 查看当前登录用户数及用户名
-u 查看当前登录用户登录信息
-r 查看运行等级
可以直接查看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 |
x | 8 | 12 | /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 |
语法: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 显示版本信息。
详情参看我写的另外一篇博客:让用户获得sudo使用权
chown命令用来更改某个目录或文件的用户名和用户组的。
chown 用户名:组名 文件路径(可以是绝对路径也可以是相对路径) |
例1:把temp下的temp1的用户名和用户组改成user1和user1(只修改了temp1的属组).
chown user1:user1 /temp/temp1
例2:把temp下的temp1下的所有文件的属组都改成user1和user1。
chown -R user1:user1 /temp/temp1
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 与其他用户拥有一样的权限。
参考: