Linux账号和权限管理

一、用户和用户组

1.1 用户账号类型

  1. 超级管理员:最高权限拥有者;uid和gid都为0
  2. 普通用户:有一定权限的用户,但是权限受限制。一般是由具备系统管理员root的权限的运维人员添加。centos 7中,uid范围:1000+
  3. 程序用户:安装系统后默认就会存在,且默认情况不能登录系统。centos 7中,uid范围:1~999

uid和gid是唯一的

1.2 用户组介绍

  1. 基本组:在用户所属组中的第一个组称为基本组,基本组有且唯一
  2. 附加组:在用户所属组中,除了第一个组(基本组)以外的其他组就是附加组,附加组可有多个

二、用户账号管理

2.1 用户信息储存文件

2.1.1 /etc/passwd

保存用户名称、宿主目录、登录shell等基本信息。

[root@localhost /]# cat /etc/passwd            //查看passwd文件
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:/sbin/nologin
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:997:User for polkitd:/:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
libstoragemgmt:x:998:995:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
saslauth:x:996:76:Saslauthd user:/run/saslauthd:/sbin/nologin
setroubleshoot:x:995:993::/var/lib/setroubleshoot:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
chrony:x:994:990::/var/lib/chrony:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:993:988:User for geoclue:/var/lib/geoclue:/sbin/nologin
sssd:x:992:987:User for sssd:/:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:991:986::/run/gnome-initial-setup/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
xiongchen:x:1000:1000:xiongchen:/home/xiongchen:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin

每一行对应一个用户的账号记录

以(:)作为分隔符,将每行分为了7段。

以为例 root:x:0:0:root:/root:/bin/bash 解释每段的含义
  • 用户账号的名称
  • 用户密码占位符“x”
  • 用户账号的uid
  • 用户账号的gid
  • 用户全名
  • 家目录
  • 登录shell信息

2.1.2 /etc/shadow

只有root可以读取内容,且不能直接编辑该文件的内容

[root@localhost /]# cat /etc/shadow
root:$6$rKhTH45goXKegFc8$YEMJyhV2AurKqWkoL6RtCfGFu7dPUUdFNr1mcJjt.CB6dGKS11IgTpQt..KwMNlCjIfEt8b2USH/CMyEpHYO61::0:99999:7:::
bin:*:17110:0:99999:7:::
daemon:*:17110:0:99999:7:::
adm:*:17110:0:99999:7:::
lp:*:17110:0:99999:7:::
sync:*:17110:0:99999:7:::
shutdown:*:17110:0:99999:7:::
halt:*:17110:0:99999:7:::
mail:*:17110:0:99999:7:::
operator:*:17110:0:99999:7:::
games:*:17110:0:99999:7:::
ftp:*:17110:0:99999:7:::
nobody:*:17110:0:99999:7:::
systemd-network:!!:19472::::::
dbus:!!:19472::::::
polkitd:!!:19472::::::
abrt:!!:19472::::::
libstoragemgmt:!!:19472::::::
rpc:!!:19472:0:99999:7:::
colord:!!:19472::::::
saslauth:!!:19472::::::
setroubleshoot:!!:19472::::::
rtkit:!!:19472::::::
pulse:!!:19472::::::
qemu:!!:19472::::::
ntp:!!:19472::::::
radvd:!!:19472::::::
chrony:!!:19472::::::
tss:!!:19472::::::
usbmuxd:!!:19472::::::
geoclue:!!:19472::::::
sssd:!!:19472::::::
gdm:!!:19472::::::
rpcuser:!!:19472::::::
nfsnobody:!!:19472::::::
gnome-initial-setup:!!:19472::::::
avahi:!!:19472::::::
postfix:!!:19472::::::
sshd:!!:19472::::::
tcpdump:!!:19472::::::
xiongchen:$6$nDr1q0tYSK0CPpJJ$wTLDUCaD//DGN5Yb9V0nw4DtVnoIYCWdJL.r9n0gAb3HZe7aQrHT1ggbWPUCGSRss6eqKHMORofTIhk/S1O9B/::0:99999:7:::
apache:!!:19476::::::

/etc/shadow文件也是以(:)作为分隔符,将每行分成了9段

每段含义:

  • 用户账号名称
  • 使用MD5加密的密码子串信息,为“*”或者“!!”时表示此用户不能登录到系统。若该字段为空,则该用户无需密码,可直接登录
  • 上次修改密码的时间,表示从1970.1.1算起到最近一次修改密码间隔的天数
  • 密码的最短有效天数,即两次修改密码之间所需的最小天数。若不设置,默认为0,表示不进行限制
  • 密码有效期,若为99999,表示永久有效
  • 提前多少天警告用户密码将过期,默认值为7,空字段或者 0 表示没有密码警告期
  • 密码过期后多少天禁用此用户
  • 账号失效时间
  • 保留字段。此字段保留作将来使用。

2.2 添加用户账号

useradd [选项] 用户名
		-u:指定用户uid
		-d:指定用户家目录
		-g:指定用户gid,对应的组名必须已存在
		-G:指定用户附加组,对应的组名必须已存在
		-M:不建立用户家目录
		-s:指定用户的登录shell
		-e:指定用户账号的失效时间,可使用YYYY-MM-DD的日期格式

举例:

[root@localhost /]# useradd yun                   //创建yun用户
[root@localhost /]# cat /etc/passwd | grep yun    //查找/etc/passwd文件中有yun的行
yun:x:1001:1001::/home/yun:/bin/bash
[root@localhost /]# cat /etc/shadow | grep yun    //查找/etc/shadow文件中有yun的行
yun:!!:19482:0:99999:7:::

2.3 切换用户

su 用户名(不完全切换)
su - 用户名(完全切换,最好用这个)

在管理员下使用su相当于刷新

在普通用户下su会切换到管理员

普通用户之间切换时,需要事先设置账户密码,否则切换用户失败

管理员切换到普通用户无需密码,直接切换

[root@localhost /]# useradd yun               //创建yun用户
[root@localhost ~]# useradd ji                //创建ji用户
[root@localhost ~]# su - yun                  //root用户切换到yun用户
上一次登录:五 55 18:46:15 CST 2023pts/2 上
[yun@localhost ~]$ su - ji                    //yun用户切换到ji用户
密码:

su: 鉴定故障

2.4 设置账户密码

passwd [选项] 用户名
		-d:清空指定用户的密码,清空后可通过用户名直接登录,不用输入密码
		-l:锁定用户账号,锁定后无法登录
		-S(大写):查看用户状态(是否被锁定)
		-u:解锁用户账号

举例:

[root@localhost ~]# passwd yun                //设置yun用户的密码
更改用户 yun 的密码 。
新的 密码:                                     //设置的密码不显示
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost ~]# passwd -d yun             //删除yun用户的密码
清除用户的密码 yun。
passwd: 操作成功
[root@localhost ~]# su - yun                  //此时切换用户无需输入密码
上一次登录:五 55 18:58:57 CST 2023pts/2 上
[root@localhost ~]# passwd -l yun             //锁定yun用户的密码 
锁定用户 yun 的密码 。
passwd: 操作成功
[root@localhost ~]# su - ji                   //切换到ji用户
密码:
上一次登录:五 55 18:58:50 CST 2023pts/2 上
[ji@localhost ~]$ su - yun                    //切换到yun用户
密码:
su: 鉴定故障                                   //切换失败
[root@localhost ~]# passwd -S yun
yun LK 2023-05-05 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# passwd -u yun            //解锁yun用户的密码
解锁用户 yun 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@localhost ~]# passwd -uf yun           //yun用户的密码之前被删,需要强制执行
解锁用户 yun 的密码。
passwd: 操作成功
[root@localhost ~]# su - ji                  //切换到ji用户
上一次登录:五 55 19:04:33 CST 2023pts/2 上
[ji@localhost ~]$ su - yun                   //切换到yun用户
上一次登录:五 55 19:04:27 CST 2023pts/2 上
[yun@localhost ~]$                           //切换成功

第二种设置密码的方法:

echo 密码 | passwd --stdin 用户名

[root@localhost ~]# echo 123 | passwd --stdin yun
更改用户 yun 的密码 。
passwd:所有的身份验证令牌已经成功更新。

2.5 修改用户账号信息

usermod [选项] 用户名
		-u:修改uid(注意uid要未使用)
		-d:修改用户家目录
		-e:修改用户的账户失效时间,可使用YYYY–MM-DD的日期格式
		-g:修改用户的基本组名
		-G:修改用户的附加组名
		-s:指定用户的登录Shell
		-L:	锁定用户账户
		-U:解锁用户账户

示例:

[root@localhost ~]# usermod -u 1200 yun             //修改yun用户的uid
[root@localhost ~]# cat /etc/passwd | grep yun      //查看/etc/passwd中有yun的行
yun:x:1200:1001::/home/yun:/bin/bash
[root@localhost ~]# mkdir /opt/yun                  //在opt目录先创建yun目录
[root@localhost opt]# usermod -d /opt/yun yun       //修改yun用户的家目录
[root@localhost opt]# cat /etc/passwd | grep yun    //查找/etc/passwd文件中有yun的行
yun:x:1200:1001::/opt/yun:/bin/bash                
[root@localhost /]# su - yun
上一次登录:五 55 19:14:28 CST 2023pts/2 上
-bash-4.2$                                          //无法登陆 
[root@localhost /]# usermod -L yun                  //锁定yun用户账号
[root@localhost /]# su - ji
上一次登录:五 55 22:44:36 CST 2023pts/2 上
[ji@localhost ~]$ su - yun 
密码:
su: 鉴定故障                                         //切换yun用户账号失败
[ji@localhost ~]$ 
[root@localhost ~]# usermod -U yun                 //解锁用户账号
[root@localhost ~]# su - ji
上一次登录:五 55 22:45:40 CST 2023pts/2 上
[ji@localhost ~]$ su - yun
密码:
上一次登录:五 55 22:44:30 CST 2023pts/2 上
最后一次失败的登录:五 55 22:45:59 CST 2023pts/2 上
最有一次成功登录后有 1 次失败的登录尝试。
[yun@localhost ~]$                                 //切换成功

面试题:锁定用户的两种方式

passwd -l 
usermod -L

2.6 删除用户

userdel -r 用户名

示例:

[root@localhost ~]# userdel -r ji                    //删除用户ji
[root@localhost ~]# tail -5 /etc/passwd              //查看/etc/passwd文件的最后5行
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
xiongchen:x:1000:1000:xiongchen:/home/xiongchen:/bin/bash
yun:x:1001:1001::/home/yun:/bin/bash

2.7 用户账号的配置文件

2.7.1 修改配置文件后使其生效的方法

重启虚拟机

命令:source 更改的配置文件

2.7.2 主要的用户配置文件

  • /etc/profile:系统的全局配置文件,对所有用户生效
  • ~/.bash_profile:用户登录是被执行的脚本,对自己有效
  • ~/.bashrc:是在每个新的bash shell打开时被执行的脚本
  • ~/.bash_logout:是用户退出bash shell是被执行的脚本

2.7.3 配置文件的执行顺序

通常在登录系统时,系统会首先执行 /etc/profile 文件,然后 /.bash_profile 文件会被执行,

然后执行 /.bashrc 文件

而在退出bash shell时,~/.bash_logout 会被执行

三、组管理

3.1 组账号文件

/etc/group:保存组账号基本信息。

/etc/gshadow:保存组账号的密码信息。

3.2 添加组账号

groupadd [-g GID] 组账号名

示例:

[root@localhost ~]# groupadd test              //创建组账号
[root@localhost ~]# tail -f /etc/group
gnome-initial-setup:x:986:
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
xiongchen:x:1000:xiongchen
yun:x:1001:
test:x:1002:

[root@localhost ~]# groupadd -g 78 test1       //创建指定GID的组账号
[root@localhost ~]# tail -f /etc/group
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
xiongchen:x:1000:xiongchen
yun:x:1001:
test:x:1002:
test1:x:78:

3.3 添加删除组成员

gpasswd [选项] 用户名
		-a:向组内添加一个用户
		-d:从组内删除一个用户
		-M:定义组成员列表,以逗号(,)分隔

示例:

[root@localhost ~]# gpasswd -a yun test       //将用户yun添加到test组中
正在将用户“yun”加入到“test”组中
[root@localhost ~]# tail -f /etc/group        //查看/etc/group最后10行
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
xiongchen:x:1000:xiongchen
yun:x:1001:
test:x:1002:yun
test1:x:78:
[root@localhost ~]# gpasswd -d yun test        //将用户yun从test组中删除
正在将用户“yun”从“test”组中删除
[root@localhost ~]# tail -f /etc/group
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
xiongchen:x:1000:xiongchen
yun:x:1001:
test:x:1002:
test1:x:78:
[root@localhost ~]# gpasswd -M xiongchen,yun test      //将用户xiongchen和yun添加到text组中
[root@localhost ~]# tail -f /etc/group
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
xiongchen:x:1000:xiongchen
yun:x:1001:
test:x:1002:xiongchen,yun
test1:x:78:

3.4 删除组账号

groupdel 组账号名

示例:

[root@localhost ~]# groupdel test1              //删除test1
[root@localhost ~]# tail -f /etc/group          
gnome-initial-setup:x:986:
avahi:x:70:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
sshd:x:74:
tcpdump:x:72:
xiongchen:x:1000:xiongchen
yun:x:1001:
test:x:1002:yun

注意:

  1. 当前组有附加组时,无法删除
  2. 基于用户创建(useradd)所得的组无法用 groupdel 删除
  3. groupdel 只能删除没有附加组且由 groupadd 创建的组

四、查询账号信息

4.1 查询用户所属组

[root@localhost ~]# groups yun
yun : yun test

4.2 查询用户身份标识

[root@localhost ~]# id yun
uid=1001(yun) gid=1001(yun)=1001(yun),1002(test)

4.3 用户账号登录属性

[root@localhost /]# finger yun                //finger需要先安装
Login: yun            			Name: 
Directory: /home/yun                	Shell: /bin/bash
Last login 五 55 22:47 (CST) on pts/2
No mail.
No Plan.

4.4 查询已登录到的主机的用户信息

[root@localhost /]# w
 01:20:25 up  7:51,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     :0       :0               264月23 ?xdm?   1:56   0.11s /usr/libexec/gnome-session-binary --session gnome-classic
root     pts/0    :0               264月23  9days  0.02s  0.02s bash
root     pts/2    192.168.147.1    23:31    1.00s  0.21s  0.01s w
[root@localhost /]# who
root     :0           2023-04-26 00:53 (:0)
root     pts/0        2023-04-26 13:49 (:0)
root     pts/2        2023-05-05 23:31 (192.168.147.1)
[root@localhost /]# users
root root root

五、文件/目录的权限和归属

5.1 文件/目录权限管理

r:允许查看文件内容,显示文件列表

w:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录

x:允许运行进程,切换目录

权限项执行执行执行
字符表示rwxrwxrwx
数字表示421421421
权限分配文件所有文件所属其他
chmod _ _ _(三位八进制数) 文件或目录
chmod [u,g,o,a]      [+,-,=]       [r,w,x] 文件或目录
		u:文件拥有者   +:增加        r:读
		g:文件所属组   -:去除        w:写
		o:其他用户     =:设置权限     x:执行
		a:所有用户

示例:

[root@localhost opt]# chmod 777 a
[root@localhost opt]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 56 02:02 a
-rw-r--r--. 1 root root 0 56 02:02 b

[root@localhost opt]# chmod g-w+x b
[root@localhost opt]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 56 02:02 a
-rwxr-xr--. 1 root root 0 56 02:02 b
chmod -R 要修改为的权限 修改对象 
递归修改当前目录下所有文件,包括目录自己的权限

示例:

[root@localhost opt]# mkdir ww                
[root@localhost opt]# cd ww                   
[root@localhost ww]# touch x y z              
[root@localhost ww]# ll                       
总用量 0
-rw-r--r--. 1 root root 0 56 02:13 x
-rw-r--r--. 1 root root 0 56 02:13 y
-rw-r--r--. 1 root root 0 56 02:13 z
[root@localhost ww]# cd ..
[root@localhost opt]# ll
总用量 0
-rwxrwxrwx. 1 root root  0 56 02:02 a
-rwxr-xr--. 1 root root  0 56 02:02 b
drwxr-xr-x. 2 root root 33 56 02:13 ww

[root@localhost opt]# chmod -R 763 ww
[root@localhost opt]# ll
总用量 0
-rwxrwxrwx. 1 root root  0 56 02:02 a
-rwxr-xr--. 1 root root  0 56 02:02 b
drwxrw--wx. 2 root root 33 56 02:10 ww
[root@localhost opt]# cd ww
[root@localhost ww]# ll
总用量 0
-rwxrw--wx. 1 root root 0 56 02:10 x
-rwxrw--wx. 1 root root 0 56 02:10 y
-rwxrw--wx. 1 root root 0 56 02:10 z

注意:chmod -R 在对多个递归目录使用时,只会对最后一个目录和文件生效

5.2 改变文件的属主和属组

chown 要改成的属主:要改成的属组 文件或目录名
chown 要改成的属主.要改成的属组 文件或目录名
以上都表示既改所有者,也改所属组
chown 要改成的属主 文件或目录名      //只改所有者
chown :要改成的属组 文件或目录名    //只改所属组

示例:

[root@localhost opt]# ll
总用量 0
drwxr-xr-x. 3 root root 24 56 02:18 1
-rwxrwxrwx. 1 root root  0 56 02:02 a
-rwxr-xr--. 1 root root  0 56 02:02 b
drwxr-xr-x. 2 root root 33 56 02:13 ww
[root@localhost opt]# chown yun:yun a
[root@localhost opt]# ll
总用量 0
drwxr-xr-x. 3 root root 24 56 02:18 1
-rwxrwxrwx. 1 yun  yun   0 56 02:02 a
-rwxr-xr--. 1 root root  0 56 02:02 b
drwxr-xr-x. 2 root root 33 56 02:13 ww

面试题:cp /etc/passwd /opt/wujian

cp所需的最低权限:x

passwd所需的最低权限:r

wujian所需的最低权限:w

5.3 设置文件和目录的默认权限

umask
控制新建的文件或目录的权限

新建的文件或目录的权限 = 默认权限 - umask权限

文件默认权限为666

目录默认权限为777

tips:

新建的文件不可能有执行权限(x),只能用chmod修改

新建的目录一定有执行权限(x)

六、修改主机名的方法

  1. hostname 主机名 这是临时修改,重启服务器后失效,使用su命令生效
  2. vim /etc/hostname 修改配置文件(只能重启服务器生效)
  3. hostnamectl set-hostname 主机名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值