Linux用户管理
Environment: CentOS_7.4 64位;
M1. Linux的用户分类:
① 超级用户(UID=0): 一般指root用户
② 伪用户(UID 1-499): 伪用户与系统和程序服务相关,因为并不是真实的使用者,所以叫伪用户,如bin、daemon、shutdown、halt、ftp、sshd等,与Linux系统的进程相关。
③ 普通用户(uid 500-60000): 使用Linux命令常规创建的用户
M2. Linux的用户管理文件:
Linux用户管理文件最重要的就是/etc/passwd和/etc/shadow这两个文件。其中/etc/passwd是用来存储用户信息的,它的基本格式如下:
示例: root:x:0:0:root:/root:/bin/bash
文件内容每一行代表一个用户的信息,一共包括7个字段的信息,每个字段的信息用冒号隔开。这7个字段分别代表:
1. 账号名称:即登陆时的用户名;
2. 密码:早期UNIX系统的密码是放在这个文件中的,但因为这个文件的特性是所有程序都能够读取,所以,这样很容易造成数据被窃取,因此后来就将这个字段的密码数据改放到/etc/shadow中了;
3. UID:用户ID,每个账号名称对应一个UID,通常UID=0表示root管理员;
4. GID:组ID,与/etc/group有关,/etc/group与/etc/passwd差不多,是用来规范用户组信息的;
5. 用户信息说明栏: 用来解释这个账号是干什么的;
6. 家目录:home目录,即用户登陆以后跳转到的目录,以root用户为例,/root是它的家目录,所以root用户登陆以后就跳转到/root目录这里;
7. Shell:用户使用的shell,通常使用/bin/bash这个shell,这也就是为什么登陆Linux时默认的shell是bash的原因,就是在这里设置的, 如果要想更改登陆后使用的shell,可以在这里修改。另外/sbin/nologin可以用来替代让账号无法登陆的命令,nologin的作用就是限制某些用户通过ssh登陆到shell上。
M3. 超级用户与普通用户的区别:
"root用户可以在Linux系统上做任何操作,权限没有收到任何限制。一般需要root权限的任务包括:移动文件或者文件夹in或者out of 系统目录,复制文件到系统目录,赋予或者收回用户权限,系统维护和安装一些应用程序,例如:安装RPM格式的软件通常需要root权限,因为需要写一些信息到系统目录。还有一个需要注意的就是,对于小于1024端口的知名端口,只有root用户才可以有权限侦听,如果应用程序需要侦听小于1024的端口,可以采用临时提权,侦听端口之后,再收回权限的方式进行。如果一直使用root运行应用程序,将会很危险,Linux的sendmail就曾经出现过使用root运行sendmail因为要侦听25端口,结果sendmail程序出问题之后,可以通过这个安全问题控制整台服务器,因为它是用root用户启的。"(https://blog.csdn.net/jimmyleeee/article/details/7886779)
之所以root用户可以在Linux系统上做任何操作,权限没有收到任何限制,是因为在/etc/sudoers文件中,规定了root用户的权限配置为:
/etc/sudoers是sudo的配置文件。
linux查看某个用户有哪些进程: # ps aux
个中缘由我想是初始化MySQL数据库前,将mysql目录的所有者变更成了mysql用户: #chown -R mysql:mysql ./
M4. Linux创建用户
# useradd testuser 添加用户testuser
# passwd testuser 给用户testuser设置密码
# userdel testuser 删除用户testuser
# userdel -r testuser 删除用户testuser,将它留在系统上的文件也删除掉
# usermod -d /home/test -G test2 testuser 将testuser用户的登录目录改成/home/test,并加入test2组,注意这里是大G。
- -d<登入目录> 指定用户登入时的启始目录。
每个用户至少属于一个用户组,每个用户组拥有多个用户,每个用户组共享共同的权限。
# useradd -r -g mysql mysql 创建mysql用户,并指定用户组为mysql
- -r 建立系统帐号。
- -g<群组> 指定用户所属的群组。
原因:
利用adduser创建新用户(adduser +用户名)这样在/home目录下会自动创建同名文件夹(创建用户的家目录),会建立同名组,建立新用户密码,还会从/etc/SKEL目录下拷贝文件到家目录,完成初始化。
正确操作:
远程登录成功,但是存在权限不足问题:
同时新创建的普通用户也不能vim编辑权限规范文件/etc/sudoers,该文件默认是只有root用户才可以修改和访问的
M5. Linux规范用户权限以及chown、chmod命令的使用
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。
/etc/sudoers是sudo命令的配置文件,在sudoers文件中可以配置普通用户使用sudo命令的规范。同样,Linux规范用户权限可以通过配置该文件实现。
1. Linux为普通用户添加sudo权限:
① root用户下使用vim编辑/etc/sudoers, 在文件中找到如下一行信息:
② 为指定用户添加sudo权限:
强制修改 :wq!
然后cat查看修改后的文件:
③ 测试用户能否使用sudo命令:
测试成功, 通过sudo命令,用户暂时拥有了root权限。
④ 另外一种方法:
修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
然后修改用户,使其属于root组(wheel),命令如下:
#usermod -g root tommy
修改完毕,现在可以用tommy帐号登录,然后用命令 su - ,即可获得root权限进行操作。(https://www.cnblogs.com/blogforly/p/5959210.html)
2. Linux的chown命令: (使用权限 : root )
概述:
chown(change owner)将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员可使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。
1.命令格式:
chown [选项]... [所有者][:[组]] 文件...
2.命令功能:
通过chown改变文件的拥有者和群组。在更改文件的所有者或所属群组时,可以使用用户名称和用户识别码设置。普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
3.命令参数:
必要参数:
-c 显示更改的部分的信息
-f 忽略错误信息
-h 修复符号链接
-R 处理指定目录以及其子目录下的所有文件
-v 显示详细的处理信息
-deference 作用于符号链接的指向,而不是链接文件本身 (https://www.cnblogs.com/fulucky/p/8182459.html)
例子: 安装MySQL时用到:
[root@localhost mysql]# chown -R root:root ./
root用户可以在Linux系统上做任何操作,权限没有收到任何限制。
一般需要root权限的任务包括:移动文件或者文件夹in或者out of 系统目录,复制文件到系统目录,赋予或者收回用户权限,系统维护和安装一些应用程序。
3. Linux的chmod命令: (使用权限 : all)
① 概述:
chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。文件或目录的访问权限分为读(r),写(w)和执行(x)三种。
② 权限分析示例:
文件夹mysql: drwxrwxr-x 2 mysql mysql 4096 Nov 13 22:38 test
看一下[权限]这一列'drwxrwxr-x', 一共有10位, 可以分为4段.
第1位代表文件的类型, ' - ' 代表这是个常规文件, ' d ' 代表这是个文件夹.
2~4这三位代表user的read/write/execute权限.
5~7这三位代表group的read/write/execute权限.
8~10这三位代表others的read/write/execute权限.
如果可读/写/执行, 则用字母r/w/x 表示, 如果不可读/写/ 执行, 则用 - 来表示.
③ 命令格式及参数解释:
# chmod [options] mode files 只能文件(夹)属主或特权用户才能使用该功能来改变文件(夹)权限模式。
常用示例:
chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
参数解释:(https://www.cnblogs.com/adolfmc/p/5898115.html)
chown命令使用注意:
ming用户启动/关闭MySQL, 但安装MySQL数据库时,已经将mysql目录的拥有者设为root用户, 所以操作失败!
① 普通用户将文件拥有者改为其他普通用户
② 普通用户将文件拥有者改为超级用户
root为最高权限用户,若当前用户为普通用户,其权限低于root,所以将文件拥有者改为root时会出现问题。
假如你当前用户为root,将文件权限赋给root或者其他用户,那么将是成功的。