本文最后更新于:2024年9月8日 晚上
Linux 用户与权限
- Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
- 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
- 每个用户账号都拥有一个唯一的用户名和各自的口令,用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录,实现用户账号的管理,要完成的工作主要有如下几个方面:
- 用户账号的添加。
- 删除与修改。
- 用户口令的管理。
- 用户组的管理。
用户账号的管理
- #表示是具有root权限的用户。
- $表示不具有root权限的用户。
who
- -H 或 --heading:显示各栏位的标题信息列。
- -i 或 -u 或 --idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串。
- -m:此参数的效果和指定"am i"字符串相同。
- -q 或–count:只显示登入系统的帐号名称和总人数。
- -s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题。
- -w 或-T或–mesg或–message或–writable:显示用户的信息状态栏。
实例:显示当前登录系统的用户。
1 2 3 4 5
| who root tty7 2014-05-13 12:12 (:0) root pts/0 2014-05-14 17:09 (:0.0) root pts/1 2014-05-14 18:51 (192.168.1.17) root pts/2 2014-05-14 19:48 (192.168.1.17)
|
whoami
useradd
- Linux中一切皆文件,这里的添加用户说就是往
/etc/passwd
中写入用户的信息。
-c<备注>
:指定用户帐号的备注文字。
-d登入目录>
:指定用户登入时的目录。
-e<有效期限>
:指定帐号的有效期限。
-f<缓冲天数>
:指定在密码过期后多少天即关闭该帐号。
-g<群组>
:指定用户所属的群组。
-G<群组>
:指定用户所属的附加群组。
-l<帐号名称>
:指定用户帐号名称。
-L
:锁定用户密码,使密码无效。
-U
:解除密码锁定。
-s<shell>
:指定用户登入后所使用的shell
-u<uid>
:指定用户ID
userdel
1 2
| userdel -选项用户名。 -r 用户名 #删除用户的时候将他的目录页一并删掉!
|
usermod
-c<备注>
:修改用户帐号的备注文字。
-d登入目录>
:修改用户登入时的目录。
-e<有效期限>
:修改帐号的有效期限。
-f<缓冲天数>
:修改在密码过期后多少天即关闭该帐号。
-g<群组>
:修改用户所属的群组,覆盖群组。
-G<群组>
:修改用户所属的附加群组,添加群组。
-l<帐号名称>
:修改用户帐号名称。
-L
:锁定用户密码,使密码无效。
-U
:解除密码锁定。
-s<shell>
:修改用户登入后所使用的shell
-u<uid>
:修改用户ID
su
1 2
| su 用户名 #切换用户。 su -用户名 #如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-
|
sudo
1 2
| sudo 命令 # 以管理员的权限运行命令。 sudo su #从普通用户切换到root用户。
|
-i
:为了频繁的执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用该命令,提示输入密码时该密码为当前账户的密码,没有时间限制,执行该命令后提示符变为"#”而不是"$”,想退回普通账户时可以执行"exit”或"logout”
exit
exit
命令用于退出目前的shell
- 执行exit可使shell以指定的状态值退出,若不设置状态值参数,则shell以预设值退出,状态值0代表执行成功,其他值代表执行失败,exit也可用在script,离开正在执行的script,回到shell
passwd
root用户
1 2 3
| $ passwd [username] new password: #输入密码。 re password: #重新输入密码。
|
-l 用户名
:锁定之后这个用户不能登录。
-u 用户名
:解锁某个用户。
-d 用户名
:没有密码也不能登录。
-S 或 --status 用户名
:查看用户状态信息。
普通用户
1 2 3 4
| $ passwd (current) UNIX password: Enter new UNIX password: Retype new UNIX password:
|
hostname
1 2
| hostname #查看主机名。 hostname 主机名 #修改主机名(临时修改)
|
write
write命令用于向指定登录用户终端上发送信息,通过write命令可传递信息给另一位登入系统的用户,当输入完毕后,键入EOF表示信息结束,write命令就会将信息传给对方,如果接收信息的用户不只登入本地主机一次,你可以指定接收信息的终端机编号。
- 用户:指定要接受信息的登录用户。
- 登陆终端:指定接收信息的用户的登录终端(ttyname)
实例
- 传信息给Rollaend,此时Rollaend只有一个tty:
- 接下来就是将信息打上去,结束请Ctrl+C:
- 传信息给Rollaend,Rollaend的tty有pts/2,pts/3:
- 接下来就是将信息打上去,结束请Ctrl+C:
- 若对方设定
mesg n
,则此时信息将无法传给对方。
wall
wall命令用于向系统当前所有打开的终端上输出信息,通过wall命令可将信息发送给每位同意接收公众信息的终端机用户,若不给予其信息内容,则wall命令会从标准输入设备读取数据,然后再把所得到的数据传送给所有终端机用户。
实例
1 2 3 4 5
| $ wall this is a test line
Broadcast message from root (pts/1) (Fri Dec 20 11:36:51 2013):
this is a test line
|
用户组管理
- 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理(开发,测试,运维, root),不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
- 用户组的管理涉及用户组的添加,删除和修改,组的增加,删除和修改实际上就是对
/etc/group
文件的更新。
groupadd
-g id
:创建完用户组后可以得到一个组的id,这个id是可以指定的,如果不指定就是自增1
groupdel
groupmod
-g id
:修改组id
-n 新组名
:修改新组名。
gpasswd
-a
:添加用户到组。
-d
:从组删除用户。
-A
:指定管理员。
-M
:指定组成员和-A的用途差不多。
-r
:删除密码。
-R
:限制用户登入组,只有组中的成员才可以用newgrp加入该组。
实例
- 如系统有个 peter 账户,该账户本身不是 groupname 群组的成员,使用 newgrp 需要输入密码即可。
- 让使用者暂时加入成为该组成员,之后 peter 建立的文件 group 也会是 groupname,所以该方式可以暂时让 peter 建立文件时使用其他的组,而不是 peter 本身所在的组。
- 所以使用 gpasswd groupname 设定密码,就是让知道该群组密码的人可以暂时切换具备 groupname 群组功能的。
- 这样 peter 就是 users 群组的管理员,就可以执行下面的操作:
1 2
| gpasswd -a mary users gpasswd -a allen users
|
- 注意:添加用户到某一个组可以使用 usermod -G group_name user_name 这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。
- 所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用 gpasswd 这个命令来添加操作用户:
1
| gpasswd -a user_name group_name
|
newgrp
- 用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。
- newgrp 指令类似 login 指令,它是以相同的帐号,另一个群组名称,再次登入系统,欲使用 newgrp 指令切换群组,您必须是该群组的用户,否则将无法登入指定的群组。
- 单一用户如果同时隶属多个群组,需利用交替用户的设置,若不指定群组名称,则 newgrp 指令会登入该用户名称的预设群组。
配置文件
/etc/passwd
- 用户组的所有信息都存放在/etc/group文件中,此文件的格式是由冒号(:)隔开若干个字段。
- 登录口令:把真正的加密后的用户口令字存放到
/etc/shadow
文件中。
- 0~999为系统保留的系统标识号。
1 2 3 4 5 6 7 8 9 10 11 12
| 用户名:口令(登录密码x,不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin # 无法登录该用户。 bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin mail:x:8:8:mail:/var/mail:/usr/sbin/nologin news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
|
/etc/shadow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志。
root:*:18646:0:99999:7::: daemon:*:18646:0:99999:7::: bin:*:18646:0:99999:7::: sys:*:18646:0:99999:7::: sync:*:18646:0:99999:7::: games:*:18646:0:99999:7::: man:*:18646:0:99999:7::: lp:*:18646:0:99999:7::: mail:*:18646:0:99999:7::: news:*:18646:0:99999:7::: uucp:*:18646:0:99999:7::: proxy:*:18646:0:99999:7::: www-data:*:18646:0:99999:7::: backup:*:18646:0:99999:7::: list:*:18646:0:99999:7::: irc:*:18646:0:99999:7::: gnats:*:18646:0:99999:7::: nobody:*:18646:0:99999:7:::
|
/etc/group
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| 组名:口令:组标识号:组内用户列表。
root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: kmem:x:15: dialout:x:20: fax:x:21: voice:x:22: cdrom:x:24: floppy:x:25:
|
/etc/gshadow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| 组名:加密密码:组管理员:组附加用户列表。
root:*:: daemon:*:: bin:*:: sys:*:: adm:*:: tty:*:: disk:*:: lp:*:: mail:*:: news:*:: uucp:*:: man:*:: proxy:*:: kmem:*:: dialout:*:: fax:*:: voice:*:: cdrom:*:: floppy:*:: tape:*:: sudo:*:: audio:*::
|