python实现linux账号管理_Linux基础知识--用户账户管理(示例代码)

本文介绍了如何使用Python来管理Linux系统的用户和组账户,包括创建、修改和删除用户及组,以及查看用户账户信息的相关命令。通过`useradd`、`passwd`、`usermod`、`userdel`等命令操作用户,利用`groupadd`、`gpasswd`、`groupdel`管理组,同时讲解了`/etc/passwd`、`/etc/shadow`、`/etc/group`等文件在用户和组管理中的作用。
摘要由CSDN通过智能技术生成

创建用户账户

用户和组账户概述:

用户账户:

超级用户(root)

普通用户

程序用户

组账户

基本组(私有组)

附加组(公共组)

标识:

UID(用户标识号)

GID(组标识号)

passwd用户账号文件

用于保存用户账户的基本信息

文件位置:/etc/passwd

每一行对应一个用户的账号信息

[[email protected] ~]#head /etc/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

news:x:9:13:news:/etc/news:

每一行对应一个用户的账号信息,每个字段对应的分别是:用户账号名称、密码占位符、用户id、组id、用户全名、宿主目录(家目录)、用户登录的shell信息

shadow存放用户密码信息

文件位置:/ect/shadow

[[email protected] ~]#head /etc/shadow

root:$1$Zn5laWHN$xBRPz7vfHOZKAwrd/IRdS/:17919:0:99999:7:::

bin:*:17919:0:99999:7:::

daemon:*:17919:0:99999:7:::

adm:*:17919:0:99999:7:::

lp:*:17919:0:99999:7:::

sync:*:17919:0:99999:7:::

shutdown:*:17919:0:99999:7:::

halt:*:17919:0:99999:7:::

mail:*:17919:0:99999:7:::

news:*:17919:0:99999:7:::

每一行对应一个用户的密码信息,每个字段分别为:用户账号名称、加密后的密码字串信息、上次修改的时间、密码最短的有效天数默认为0、密码最长的有效天数默认为99999、提前多少天警告用户密码快过期默认为7、在密码过期后多少天禁用此用户、账号失效时间默认为空、保留字段(未使用)

useradd添加用户

格式:useradd [选项]... 用户名

-u指定UID标记号

-d指定宿主目录,缺省为/home/用户名

-e指定账号失效时间

-g指定UID

-G指定GID

-M不为用户创建并初始化宿主目录

-s指定用户的登录Shell

[[email protected] ~]# useradd user01

[[email protected] ~]#tail /etc/passwd

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

pcap:x:77:77::/var/arpwatch:/sbin/nologin

ntp:x:38:38::/etc/ntp:/sbin/nologin

haldaemon:x:68:68:HAL daemon:/:/sbin/nologin

apache:x:48:48:Apache:/var/www:/sbin/nologin

xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin

gdm:x:42:42::/var/gdm:/sbin/nologin

sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin

oracle:x:500:500::/home/oracle:/bin/bash

user01:x:501:502::/home/user01:/bin/bash

Linux中把500以内(不包含500)都留给了系统

[[email protected] ~]#cd /home

[[email protected] home]#ls

audispd.conf file1.tar.gz file3 test test2 user01

file1.tar file2.tar.gz file3.tar.gz test1 test.tar.bz2

可以看到,创建用户时并未指定用户的宿主目录,默认在/home下的user01目录

用户账号创建之后有一些初始的配置文件,这些文件是从/ect/skel中复制过来的

[[email protected] home]#ls -a /home/user01

. .. .bash_logout .bash_profile .bashrc .emacs .mozilla .zshrc

这些文件是用户的一些信息,这些文件中,~.bash_profile是用户每次登录时执行;~.bashrc是每次进入新的bash环境中执行;~.bash_logout是每次退出登录时执行

如果某一天我们不小心把这些文件给删除了,那么我们还可以以user01用户登录,然后从/ect/skel中复制这些文件到用户的宿主目录

以上说的是用户的个人配置信息,当然还有全局的配置信息,在/ect/bashrc和/etc/profile中

passwd设置或者更改用户的密码

格式:passwd [选项]... 用户名

-d清空用户密码,无需密码即可登录

-l锁定用户账户

-S查看用户是否被锁定

-u解锁用户账户

[[email protected] home]#passwd user01

Changing password foruser user01.

New UNIX password:

BAD PASSWORD: it is too simplistic/systematic

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

以上代码给用户user01设定了密码,当密码太过简单会给出相应提示,不需理会。普通用户只能给自己重置密码切不能太简单,而且只能passwd后面不加任何内容

用root用户锁定user01,注意如果在锁定之前已经登录了,user01不受影响,只是在重新登录的时候会被拒绝登录

[[email protected] home]#passwd -l user01

Locking password foruser user01.

passwd: Success

再登录user01,会发现登录不上

login as: user01

user01@192.168.29.128‘s password:

Access denied

查看user01的状态,发现是锁定的状态

[[email protected] home]#passwd -S user01

user01 LK 2019-02-13 0 99999 7 -1 (Password locked.)

解锁user01,即可重新登录user01

[[email protected] home]#passwd -u user01

Unlocking password foruser user01.

passwd: Success.

usermod修改用户账号属性

格式:usermod [选项]... 用户名

-l更改用户账户的登录名

-L锁定用户

-U解锁用户

-u、-d、-g、-G、-e、-s与useradd相同

userdel删除用户账户

格式:userdel [-r] 用户名

-r表示将用户的宿主目录一起删除

组账户:

/etc/group保存组账号基本信息,/ect/gshadow保存组账号的密码信息

groupadd添加组账号,一般的我们创建一个用户时默认给用户创建了一个和用户id相同的组id

格式:groupadd [-g GID] 组账户名

[[email protected] home]#groupadd gruop01

[[email protected] home]#tail /etc/group

stapdev:x:101:

stapusr:x:102:

xfs:x:43:

gdm:x:42:

sabayon:x:86:

screen:x:84:

oinstall:x:500:

dba:x:501:oracle

user01:x:502:

gruop01:x:503:

gpasswd设置组账户密码(极少用),增加删除组成员

格式:gpasswd [选项]... 用户名 组账户名

-a添加一个用户

-d删除一个用户

-M是向用户组中添加多个用户,用逗号隔开

[[email protected] home]#gpasswd -a user01 gruop01

Adding user user01 to group gruop01

[root@localhost home]#tail -5 /etc/group

screen:x:84:

oinstall:x:500:

dba:x:501:oracle

user01:x:502:

gruop01:x:503:user01

可以看到用户user01被添加到gruop01这个用户组中了。user01的基本组是502,附加组是503

[[email protected] home]#gpasswd -d user01 gruop01

Removing user user01 from group gruop01

可以看到user01从gruop01中删除了

groupdel删除组账号

格式:groupdel 组账号名

[[email protected] home]#groupdel gruop01

[[email protected] home]#tail -5 /etc/group

sabayon:x:86:

screen:x:84:

oinstall:x:500:

dba:x:501:oracle

user01:x:502:

可以看到用户组gruop01被删除了

用户和组账号查询

id查询用户身份标识

格式: id [用户名]

[[email protected] home]#id root

uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel)

groups查询用户所属的组

格式:groups [用户名]

[[email protected] home]#groups root

root : root bin daemon sys adm disk wheel

finger查询用户账号的详细信息

格式:finger [-l] 用户名

[[email protected] home]#finger -l root

Login: root Name: root

Directory:/root Shell: /bin/bash

On since Thu Feb14 04:37 (CST) on tty1 1 hour 17minutes idle

On since Thu Feb14 04:51 (CST) on pts/0 from 192.168.29.1New mail received Thu Feb14 05:41 2019(CST)

Unread since Fri Jan25 04:02 2019(CST)

No Plan.

users、w、who查询已登录到主机的用户信息

[[email protected] home]#users

root root

[root@localhost home]#w

06:09:25 up 1:33, 2 users, load average: 0.00, 0.00, 0.01USER TTY FROM LOGIN@IDLE JCPU PCPU WHAT

root tty1- 04:37 1:18m 0.00s 0.00s -bash

root pts/0 192.168.29.1 04:51 0.00s 0.05s 0.00s w

[root@localhost home]#who

root tty1 2019-02-14 04:37root pts/0 2019-02-14 04:51 (192.168.29.1)

总结:/etc/passwd、/etc/shadow存放用户的账户信息和密码信息

useradd、userdel、passwd

/etc/group、/etc/gshadow存放用户组的信息和密码

groupadd、gpasswd、groupdel

id、groups、finger、users、w、who

/etc/skel

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值