Linux 用户和用户组管理
Linux账号管理
从当前章节开始,我们正式进入CentOS的学习,我们先从简单的命令开始,比如操作账号、用户组、系统管理等。
在实际使用场景中,用户账号的管理主要涉及到用户账号的添加、修改和删除操作。
现在,我们就通过命令的方式添加用户账号(账号名字可以自定义,但是是要符合书写规范)。
添加用户
我们在Windows创建账号主要是是控制面板--用户账户--创建一个新账户,这是在Windows创建账户的流程,而在Linux中,我们可以通过命令的方式进行创建账户。
使用者权限:管理员用户 root
useradd 选项 用户名
useradd 用户名
参数说明:
选项:
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,
可以创建主目录。
-g 用户组 指定用户所属的用户组。
-G 用户组,用户组 指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell。
-u 用户号 指定用户的用户号,如果同时有-o选项,
则可以重复使用其他用户的标识号。
常用选项
用户名:
指定新账号的用户名(后续我们可以使用这个用户名进行系统登录)。
添加用户CCCP执行
useadd CCCP
我们使用useradd命令创建了一个用户 czbk
useradd 可以来建立用户账号,账号建好之后再用passwd来设定账户的密码。
[root@VM-8-3-centos ~]# useradd CCCP
[root@VM-8-3-centos ~]#
用户口令
引子:
相当于我们在Windows系统中给个用户更改密码,
只是我们在CentOS中是更改密码是通过命令完成的。
用户管理的一项重要内容是用户口令的管理,用户账户刚创建时是没有口令的,
但是被系统锁定了,无法使用,必须为其指定口令后才可以使用。
使用者权限:管理员用户
指定和修改用户口令的Shell命令是passwd,管理员可以为自己和其他用户指定口令,
普通用户只能用它来修改自己的口令,命令的格式为:
passwd 选项 用户名
passwd 用户名
可使用的选项:
-
-l 锁定口令,即禁用账号。
-
-u 口令解锁。
-
-d 使账号无口令。
-
-f 强迫用户下次登录时修改口令。
设置当前用户口令
passwd CCCP
此处我们设置一个密码zgyz11183
(注意密码必须高于8位,不能简单的都是数字,不然报错)
修改用户
相当于我们在Windows系统中修改一个用户,
只是我们在CentOS中是修改用户是通过命令完成的。
usermod 命令通过修改系统帐户文件来修改用户账户信息。
修改用户账号就是根据实际情况更改用户的有关属性,
如用户号、主目录、用户组、登录Shell等。
使用者权限:管理员用户
修改已有用户的信息使用usermod
命令,其格式如下:
usermod 选项 用户名
usermod 选项 修改名 用户名
常用选项
演示-将CCCP用户名修改为CCRP
usermod -l CCRP CCCP
删除用户
相当于我们在Windows系统中删除一个用户,
只是我们在CentOS中是删除用户是通过命令完成的。
假如我们其中一个用户的账号不再使用,可以从系统中删除。
删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,
必要时还删除用户的主目录。
使用者权限:管理员用户
删除一个已有的用户账号使用userdel
命令,其格式如下:
userdel 选项 用户名
-f:强制删除用户,即使用户当前已登录;
-r:删除用户的同时,删除与用户相关的所有文件;
删除用户CCRP(一般最好加上-rf,不然删不干净)
userdel -rf CCRP
此时我们已经删除了用户 CCRP 也可以看到找不到CCRP用户
userdel 常用选项
-f --force
(强制执行一些会失败的操作,例如删除仍然登录的用户或文件,即使该用户不拥有这些文件)
-h --help (显示此帮助信息并推出)
-r --remove (删除主目录和邮件池)
-R --root CHROOT_DIR (chroot 到的目录)
-Z --selinux-user (为用户删除所有的 SELinux 用户映射)
Linux用户组
为了方便用户管理, 提出了组的概念 ,
新增一个账户,它默认属于自己(账户)的组,
比如新建账户【阳阳】,那么它默认对应的组就是阳阳。
一个用户可以有一个或者多个组,
假如说,我们在企业级开发过程中,我们有多个组,其中一个开发组对应三个账户,张三、李四、王五、如果就像上面提到的, 一个用户默认对应一个组,那么三个账户张三、李四、王五就有了三个不同的组,如果大家都操作一个文件,在进行权限分配的时候,就要对不同的三个组进行授权,显然这样是不合理的,因为太过繁琐。
所以,才有了组(新建组)的概念,我们把张三、李四、王五统一放到【开发组】,在对文件授权的时候,我们只对【开发组】进行授权由此,这样的话【张三、李四、王五】都有相等的权利操作了。
增加用户组
新增一个用户组(组名可见名知意,符合规范即可),然后将用户添加到组中。
使用者权限:管理员用户
groupadd 选项 用户组
groupadd 用户组
使用的选项有:
-
-g GID 指定新用户组的组标识号(GID)。
-
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
新增用户组CCCP
groupadd CCCP
此命令向系统中增加了一个新组CCCP,
新组的组标识号是在当前已有的最大组标识号的基础上加1
常用选项
修改用户组
使用者权限:管理员用户
groupmod 选项 用户组
常用的选项有:
-
-g GID 为用户组指定新的组标识号。
-
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-
-n新用户组 将用户组的名字改为新名字
groupmod -n 新组名 旧组名
此命令将旧组名改为新组名
常用选项
查询用户所属组
在查询用户所属的用户组之前,先增加一个用户,然后再新建一个组
useradd 用户名
groupadd 组名
要查询一个用户属于哪个用户组,使用groups命令
groups 用户名
查询用户属于某个用户组,执行groups命令
groups 你的用户名
你的用户属于你的用户组(用户组默认与用户名一样)
删除用户组
使用者权限:管理员用户
要删除一个已有的用户组,使用groupdel命令
groupdel 用户组
常用选项
将用户添加到组
已经存在的用户添加到组中 usermod -a -G 组名 用户名
注:执行成功是不会有反馈的
新用户添加到指定组 useradd -g 组名 新用户名
显示用户
logname命令用于显示用户名称。
执行logname指令,它会显示目前用户的名称。
语法为如下:
logname [--help][--version]
参数:
-
--help 在线帮助。
-
--vesion 显示版本信息。
显示登录账号的信息
logname
su切换账户
比如我们在新增用户、修改用户或者操作用户组的时候常常需要切换到管理员账户,
这个时候,我们就可以使用su进行快速切换
su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
使用权限:所有使用者。
从root管理员权限切换到其他用户,直接 su 用户名
切换到root 只需要 exit 即可
当然,如果最初登陆的不是管理员则需要 su root (一般管理员都是问你要密码了)
这样我们才能进入到root用户下
sudo执行
sudo:控制用户对系统命令的使用权限,root允许的操作。
通过sudo可以提高普通用户的操作权限。
使用者权限:普通用户
语法:
sudo -V
sudo -h
sudo -l
sudo -v
sudo -k
sudo -s
sudo -H
sudo -b [ -u username/#uid] -s
sudo command
参数
-
-V 显示版本编号
-
-h 会显示版本编号及指令的使用方式说明
-
-l 显示出自己(执行 sudo 的使用者)的权限
-
-v 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码
-
-k 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟)
-
-b 将要执行的指令放在背景执行
-
-p prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称
-
-u username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码)
-
-s 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell
-
-H 将环境变数中的 HOME 指定为要变更身份的使用者HOME目录(如不加 -u 参数就是系统管理者 root )
-
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
top命令
top命令用于实时显示 process 的动态。
使用权限:所有使用者
top 显示进程信息
状态监控属性
PID:进程ID
USER:进程的所有者
PR:进程的优先级
VIRT:占用的虚拟内存
RES:占用的物理内存
SHR:使用的共享内存
S:进行状态 S:休眠 R运行 Z僵尸进程 N nice值为负
%CPU:占用的CPU
%MEM:占用内存
TIME+: 占用CPU的时间的累加值
COMMAND:启动命令
top可以显示指定的进程信息,top -p 0(进程的id)
ps命令
Linux ps命令用于显示当前进程 (process) 的状态信息
使用者权限:所有用户
ps -ef | grep 进程名称
kill命令
Linux kill命令用于删除执行中的程序或工作(可强制中断)
使用者权限:所有用户
kill [-s <信息名称或编号>][程序] 或 kill [-l <信息编号>]
参数
-
-l <信息编号> 若不加<信息编号>选项,则-l参数会列出全部的信息名称。
-
-s <信息名称或编号> 指定要送出的信息。
-
程序可以是程序的PID或是PGID,也可以是工作编号。
结束进程
kill - 9 进程号
一般配合ps使用,ps 可以查到进程的pid
clear命令
clear命令用于清除屏幕
使用者权限:所有使用者都可使用。
用法就此命令
clear
通过执行clear命令,就可以把缓冲区的命令全部清理干净
目录常用命令
-
ls: 列出目录
-
cd: 切换目录
-
pwd: 显示目前的目录
-
mkdir:创建一个新的目录
-
rmdir:删除一个空的目录
-
cp: 复制文件或目录
-
rm: 移除文件或目录
-
mv: 移动文件与目录或修改文件与目录的名称
ls (列出目录)
ls命令相当于我们在Windows系统中打开磁盘、
或者打开文件夹看到的目录以及文件的明细。
注意:在Linux系统当中, ls 命令算是比较常用的命令
使用者权限:所有使用者都可使用。
ls [选项] 目录名称
选项:
-
-a :全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用)
-
-d :仅列出目录本身,而不是列出目录内的文件数据(常用)
-
-l :长数据串列出,包含文件的属性与权限等等数据;(常用)
ls -l
可以查看文件夹下文件的详细信息, 从左到右 依次是:
-
权限(A区域), 第一个字符如果是
d
表示目录 -
硬链接数(B区域), 通俗的讲就是有多少种方式, 可以访问当前目录和文件
-
属主(C区域), 文件是所有者、或是叫做属主
-
属组(D区域), 文件属于哪个组
-
大小(E区域):文件大小
-
时间(F区域):最后一次访问时间
-
名称(G区域):文件的名称
注:ls -l 可以缩写成 ll 效果一样。
这三种是经常被使用到的命令
ls 显示不隐藏的文件与文件夹
ls -l(ll) 显示不隐藏的文件与文件夹的详细信息
ls -al 显示所有文件与文件夹的详细信息
pwd显示当前目录
就是看当前目录
就跟这种效果一样,要拿到这个地址。
cd (切换目录)
Linux的cd切换目录,相当于我们在Windows中通过鼠标或者快捷键点开不同的目录
注意:在Linux系统当中, cd 命令算是比较常用的命令
cd是Change Directory的缩写,这是用来变换工作目录的命令
使用者权限:所有使用者都可使用。
cd 路径(此路径仅目录名也可)
mkdir(创建目录)
Linux的mkdir命令相当于我们在Windows中通过鼠标或者快捷键新建文件夹
mkdir命令用于建立名称为 dirName 之子目录
使用权限:于目前目录有适当权限的所有使用者
参数
-p 确保目录名称存在,不存在的就建一个
mkdir 目录名
也可以直接创建到子目录
mkdir -p 目录名/目录名2
rmdir(删空目录)
Linux的rmdir命令相当于我们在Windows中通过鼠标或者快捷键删除文件夹。
稍微有点不同的就是在Linux中删除子目录的时候,如果主目录下没有了目录以及文件,会连同主目录同时删除了(需要写Linux带有P的参数)
rmdir命令删除空的目录
使用权限:于目前目录有适当权限的所有使用者。
参数
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
rmdir -p 目录
注: 我建议带-p 这样删的干净
Linux 文件基本属性
压缩与解压
tar zcf 自定义名称.tar.gz 你要压缩的文件名
tar zxvf 你要解压的文件
Linux中使用命令模式替换修改
:1,$ s/你要替换的内容/你想要更改的内容/g
(1表示第一行,$表示最后一行, s替换,g全局)
显示行数并展示前面
nl -ba 你的文件 | head -n 你要的行数
显示行数并展示最后
nl - ba 你的文件 | tail -n 你要的行数
关于其他:这部分是删除mysql的内容
(这部分是删除文件后,但mysql在其他文件还有内容,否则则没删干净导致的错误,所以我们需要删除干净后才能再装mysql,环境变量的内容只需要改最后加的内容,换一个地址即可)
同时需要查看etc内是否一个my.cnf的文件。我们需要删除他
查看名为mysql的目录
rprpm -qa|grep -i mysql(查mysql)
rpfind / -name mysql(查mysql)
rprm -rf 路径(用来删除mysql)
rpm -ev --nodeps 路径(用来删除mysql)
只要能查到mysql就都需要删除。