Linux学习-用户和用户组

it2024-12-16  38

Linux用户和用户组管理

Linux系统中有三种用户:系统用户、普通用户、根用户root,普通用户要设置登录密码才能登录到系统中。 Linux系统只能使用数字来记录用户。在实现上,Linux系统采用一个32位的整数来记录用户,这意味着在一套Linux系统中最多可以记录40亿个不同的用户。这个用来区分不同用户的数字被称为user id,简称UID。 通常普通用户的UID大于1000,系统用户是系统运行时的一些特殊用户,这类用户往往不能登录到系统中,但是一些进程需要使用这类用户运行,比如系统中的httpd进程就是使用用户apache运行的;根用户又叫root,它的UID为0,也是系统中的超级用户,拥有至高无上的权限

查看系统中所有用户:

cat /etc/passwd #部分结果显示: root:x:0:0:root:/root:/bin/bash #根用户root bin:x:1:1:bin:/bin:/sbin/nologin #这就是系统用户,系统用户往往没有登录权限 nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin oracle:x:1000:1000::/home/oracle:/bin/bash tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin geoclue:x:997:992:User for geoclue:/var/lib/geoclue:/sbin/nologin UnicodeC:x:1001:1002::/home/UnicodeC:/bin/bash #普通用户

用户和用户组的关系: 创建用户的时候,会同时创建一个同名的用户组,当然,也可以单独创建用户组,把一些用户归到创建的用户组中进行管理。用户可以添加到不同的用户组,当然也可以退出用户组!

1、新建用户

#useradd 创建新用户时,会同时创建一个同名的用户组,用户uid和用户组gid一般是一致的 #需要注意的是:这样创建的用户,是没有设置密码的,那么就无法登录到系统!需要修改密码:passwd UnicodeC useradd User #单独新建用户组 groupadd UnicodeC #将用户添加到某个组下 usermod UnicodeC-G User

2、删除用户

#userdel 删除时,用户家目录不会删除 userdel User #可以使用 userdel -r User 连带用户家目录一起删除 当切换到用户下,然后退回到root下,往往使用 userdel -r User提示有进程正在占用 #单独删除用户组 groupdel UnicodeC

3、不同类别的用户标志

#root用户:# [root@lv2xaeport ~]# #普通用户:$ [UnicodeC@lv2xaeport ~]$ #系统用户:bin

4、切换用户

#1、root用户切换为普通用户:使用-,则会加载所有配置 su - UnicodeC #2、root用户切换为普通用户:不使用-,则会使用当前root用户的shell su UnicodeC #3、退出当前登录用户 ctrl + d #3、从普通用户切换到root用户 su - root

su和su - 的区别: 这两个命令都是切换用户命令,但是最本质的区别就是:su 命令只是切换了用户身份,但是shell环境仍然是原用户的。而su -则是将用户身份和shell环境都进行切换!使用su命令,查看当前工作目录发现还是原工作目录,而su -则是改变为当前用户的家目录 这个区别有时候会导致一些错误,所以一般推荐使用su -命令 退出登录,返回上一次的登录:ctrl + d

5、修改密码

#修改root密码: [root@lv2xaeport ~]# passwd root #修改普通用户密码: [root@lv2xaeport ~]# passwd UnicodeC

6、忘记root密码

忘记root密码,进入不了系统,可以 系统的紧急求援模式 ,使用修改配置文件修改root密码

#1.开机之后在内核上敲击e,然后编辑选项 #2.在linux16这一行,将红框内的内容改成rw rd.break #3、根据提示,使用组合键CTRL+X进入密码修改 #4、进入到系统的紧急求援模式 #5、依次输入 # chroot /sysroot //进入系统的根目录 # passwd //重置密码 # touch /.autorelabel //创建文件,让系统重新启动时能够识别修改 # exit 退出chroot模式 # reboot //重启系统 #6、重启即可

7、sudo

sudo是Linux下常用的允许普通用户使用root权限的工具, sudo是临时赋予用户一些权限(不是升级权限)。这样解决了普通用户需要root用户的一些权限,但又没必要知道root的密码,保证了安全性和灵活性。使用sudo需要输入的密码是此用户的密码,不是root的密码,只是为了证明是此用户在操作. 特点说明:

sudo可以限制用户只在某台主机上运行某些命令提供日志,详细记录了用户干了什么配置文件是/etc/sudoers文件,可以通过配置文件进行管理

sudo使用参数: -l 显示出自己(执行 sudo 的使用者)的权限 -k 将会强迫使用者在下一次执行 sudo 时填写密码(不论有没有超过 N 分钟)

sudo命令的执行流程是: 当前用户转换到root, 然后以root身份执行命令, 执行完成后, 直接退回到当前用户. 配置文件: 可以直接使用visudo命令进行配置, 它会帮你校验文件配置是否正确,如果不正确,在保存退出时就会提示你哪段配置出错的。 1、配置让UnicodeC用户 能够执行root权限的所有命令 在root ALL=(ALL) ALL下添加:UnicodeC ALL=(ALL) ALL 2、让普通用户UnicodeC 只能在某几台服务器上,执行root能执行的某些命令

首先需要配置一些Alias,这样在下面配置权限时,会方便一些,不用写大段大段的配置。Alias主要分成4种 Host_Alias:主机的列表 Cmnd_Alias:允许执行的命令的列表 User_Alias:就是具有sudo权限的用户的列表 Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表 1) 配置Host_Alias:就是主机的列表 Host_Alias HOST_FLAG = hostname1, hostname2, hostname3 2) 配置Cmnd_Alias:就是允许执行的命令的列表,命令前加上!表示不能执行此命令. 命令一定要使用绝对路径,避免其他目录的同名命令被执行,造成安全隐患 ,因此使用的时候也是使用绝对路径! Cmnd_Alias COMMAND_FLAG = command1, command2, command3 ,!command4 3) 配置User_Alias:就是具有sudo权限的用户的列表 User_Alias USER_FLAG = user1, user2, user3 4) 配置Runas_Alias:就是用户以什么身份执行(例如root,或者oracle)的列表 Runas_Alias RUNAS_FLAG = operator1, operator2, operator3 5) 配置权限 配置权限的格式如下: USER_FLAG HOST_FLAG=(RUNAS_FLAG) COMMAND_FLAG 如果不需要密码验证的话,则按照这样的格式来配置 USER_FLAG HOST_FLAG=(RUNAS_FLAG) NOPASSWD: COMMAND_FLAG #实例: # Host alias specification Host_Alias EPG = 192.168.1.1, 192.168.1.2 # User alias specifica\tion # Cmnd alias specification Cmnd_Alias SQUID = /opt/vtbin/squid_refresh, !/sbin/service, /bin/rm Cmnd_Alias ADMPW = /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd, !/usr/bin/passwd root # Defaults specification # User privilege specification root ALL=(ALL) ALL support EPG=(ALL) NOPASSWD: SQUID support EPG=(ALL) NOPASSWD: ADMPW

8、查看系统的所有用户和用户组

在Linux中,对配置文件不清楚的时候,可以使用:man 5 配置文件名

#1、查看系统的所有用户 cat /etc/passwd #备注:首先系统中会存在很多系统用户,在centOS7中是ID小于1000的,大于1000的则是人为新建的普通用户。 #注册名:口令:用户标识号:组标识号:用户名:用户主目录:命令解释程序 。 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: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 apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/false ntp:x:38:38::/etc/ntp:/sbin/nologin UnicodeC:x:1001:1001::/home/UnicodeC:/bin/bash #解释:注册名一般就是用户名、口令x代表密码保存在/etc/shadow、用户标识号UID和组标识号GID是使用数字唯一代表用户和用户组 #以root用户为例。root是用户注册名,X表示密码保存在/etc/shadow,用户ID为0,所在用户组ID为0,用户名是root,home目录为/root,解释程序/bin/bash。 #nologin表示此用户无登录权限:可以看出UnicodeC和mysql用户都是有登录权限的 #2、查看系统的所有用户组 cat /etc/group #组名:密码保存位置:组ID:组成员。 root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mem:x:8: kmem:x:9: wheel:x:10: cdrom:x:11: mail:x:12:postfix man:x:15: dialout:x:18: floppy:x:19: games:x:20: tape:x:33: cgred:x:995: docker:x:994: mysql:x:27: ntp:x:38: UnicodeC:x:1001: #解释:以root用户组为例,即组名是root,密码保存位置为/etc/shadow,root组的GID为0,组下面的用户是root用户。
最新回复(0)