如何在linux上用命令实现用户和组的管理?
Linux上用命令实现本地用户和组的管理
本地用户和组:管理文件和进程等等
本地用户和组:
1)root: 超级管理员 系统创建的第一个账户
特点:
id为:0
家目录:/root
具有系统的完全控制权: 小心使用。
# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
#
2)普通用户: 不具有管理员权限
特点:
id范围:
1000 <= id <=60000
家目录: /home/用户名
# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
#
3)服务用户: 为服务提供权限
特点:
id范围:
0 < id < 1000
家目录:应用程序服务目录
# id apache
uid=48(apache) gid=48(apache) groups=48(apache)
#
如果是yum,rpm安装的软件: 由rpm包中的脚本创建服务账户
Include conf.modules.d/*.conf
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User apache
Group apache
# ‘Main’ server configuration
#
本地组:
1) 主组:一个用户一定要属于某个主组中。 当些用户在创建文件时,给文件的归属组
2)从属组: 用户容器 ,组织和管理用户 权限管控
作用:
文件:
进程:
$ ps -ux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
student 32178 0.0 0.4 93052 9360 ? Ss 15:00 0:00 /usr/lib/system
student 32182 0.0 0.3 253776 7072 ? S 15:00 0:00 (sd-pam)
student 32188 0.0 0.2 159412 4980 ? S 15:00 0:00 sshd: student@p
student 32189 0.0 0.2 233912 4864 pts/0 Ss 15:00 0:00 -bash
student 32293 0.3 0.2 159408 5192 ? D 15:43 0:00 sshd: student@p
student 32294 0.3 0.2 233912 4924 pts/1 Ss 15:43 0:00 -bash
student 32319 0.5 0.2 233940 4804 pts/1 S 15:43 0:00 /bin/bash
student 32341 0.0 0.2 269312 3876 pts/1 R+ 15:43 0:00 ps -ux
$
账户文件:
1) /etc/passwd:保存用户信息
# cat /etc/passwd |grep student
student: x :1000:1000: Student User:/home/student:/bin/bash
用户名 密码 uid 主组ID 描述 家目录 登录shell
#
# cat /etc/passwd |grep -w root:x
root:x:0:0:root:/root:/bin/bash
#
# cat /etc/passwd |grep apache
apache:x:48:48:Apache:/usr/share/httpd: /sbin/nologin
服务账号 无法登录系统
#
2. /etc/shadow : 保存用户密码的 HASH ,密码的有效性信息,密码修改时间,账户有效期。
#
# ls -l /etc/shadow
———-. 1 root root 1014 Mar 29 11:39 /etc/shadow
#
#
# cat /etc/shadow |grep student
student:$6$8oIjLCsc$/n1iQXYh1E6.uOEuJKgioqAtmqm2TQmkJGF2RwyteIr1tIfrPdiRYgWe6Sjen5/eMij2uHM/a1tue/QRlo3X80:18038:0:99999:7:::
#
密码的HASH: sha512
8oIjLCsc$/n1iQXYh1E6.uOEuJKgioqAtmqm2TQmkJGF2RwyteIr1tIfrPdiRYgWe6Sjen5/eMij2uHM/a1tue/QRlo3X80
18038:天数 密码最后一次修改的时间 从1970-01-01 + 18038 天之后 那一天
0: 密码最少使用天数 0 没有限制 用户随时可以改密码
99999 :天数, 密码最大修改时间 永久 200多年
7 : warning 警告时间, 当密码快到最后修改时间前7天, 通知用户修改。
::天数 失效时间 inactive 用户密码过了最后修改时间,未改变密码 ,再过多少天,账户将被 锁定
:: 账户有效期
创建用户和组:
创建时,没有密码:
# useradd zhangsan
# useradd lisi
# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan)
# id lisi
uid=1002(lisi) gid=1002(lisi) groups=1002(lisi)
#
无法登录:与PAM 有关
$
$ su – zhangsan
Password:
Password:
su: Authentication failure
$
设置密码:
#
# cat /etc/passwd |grep zhangsan
zhangsan:x:1001:1001::/home/zhangsan:/bin/bash
# cat /etc/shadow |grep zhangsan
zhangsan:!!:18350:0:99999:7::: # !! 未设置密码
#
# passwd zhangsan
Changing password for user zhangsan.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
#
#
# cat /etc/shadow |grep zhangsan
zhangsan:$6$3wxuXomVbQ58wQcK$oQW6injgldxa2N/Pt4tCPDVRqWRVGw.UNZdxE4R0nhEt8K/3UDKzxap6ReIReEvDpG.GdwjpMiiDh7.f6DJNQ0:18350:0:99999:7:::
#
chage 可以查看用户 密码属性
# chage -l zhangsan
Last password change : Mar 29, 2020
Password expires : never
Password inactive : never
Account expires : never
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
#
创建组:从属组
#
# groupadd it
#
#
# groupadd sales
#
#
#
# cat /etc/group
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:student
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:33:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
users:x:100:
nobody:x:65534:
dbus:x:81:
utmp:x:22:
utempter:x:35:
input:x:999:
kvm:x:36:
render:x:998:
systemd-journal:x:190:
systemd-coredump:x:997:
systemd-resolve:x:193:
tss:x:59:
polkitd:x:996:
rpc:x:32:
unbound:x:995:
ssh_keys:x:994:
sssd:x:993:
setroubleshoot:x:992:
rpcuser:x:29:
insights:x:991:
cockpit-ws:x:990:
sshd:x:74:
chrony:x:989:
tcpdump:x:72:
student:x:1000:
printadmin:x:988:
libstoragemgmt:x:987:
slocate:x:21:
postdrop:x:90:
postfix:x:89:
apache:x:48:
zhangsan:x:1001:
lisi:x:1002:
it:x:1003: 组成员列表
sales:x:1004:
#
# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
#
将用户添加进组: zhangsan ,加入it组,lisi,sales组
# id student
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
# usermod -aG it zhangsan
#
#
# usermod -aG sales lisi
#
#
# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan),1003(it)
# id lisi
uid=1002(lisi) gid=1002(lisi) groups=1002(lisi),1004(sales)
#
删除用户:
# useradd andy
默认删除,保留用户的文件:
#
# userdel andy
#
#
# useradd andy #重建andy会不一样, uid会不同
useradd: warning: the home directory already exists.
Not copying any file from skel directory into it.
Creating mailbox file: File exists
#
# useradd user1
# useradd user2
# id andy
uid=1003(andy) gid=1005(andy) groups=1005(andy)
# userdel -r any
userdel: user ‘any’ does not exist
#
# userdel -r andy #不保留用户的文件。家目,邮箱文件 ,skel文件都会
#
#
# id andy
id: ‘andy’: no such user
# useradd andy
# id andy
uid=1006(andy) gid=1008(andy) groups=1008(andy)
#
从组中移除用户:
#
# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan),1003(it) #zhangsan主组 ,it 从属组
#
命令:
# gpasswd -d zhangsan it
Removing user zhangsan from group it
#
#
# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan)
#
#
# usermod -aG it zhangsan
#
#
# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) groups=1001(zhangsan),1003(it)
#
#
#
# groups zhangsan
zhangsan : zhangsan it
#
直接修改文件:
# vim /etc/group
# cat /etc/group |grep it:
it:x:1003:
#
删除组:
# groupadd test
#
#
# groupdel test
创建自定义用户和组:
实验:用户名mary, 指定用户id 2000,家目录/maryhome ,不用登录系统 描述 this is mary user
#
# useradd -u 2000 -d /maryhome -s /sbin/nologin -c “this is mary” mary
#
# id mary
uid=2000(mary) gid=2000(mary) groups=2000(mary)
# cat /etc/passwd |grep mary
mary:x:2000:2000:this is mary:/maryhome:/sbin/nologin
#
# su – mary
Last login: Sun Mar 29 16:48:49 CST 2020 on pts/0
This account is currently not available.
#
创建自定义组:指定组id
# groupadd -g 3000 group1
# cat /etc/group |grep group1
group1:x:3000:
#