一、用户账户和组账户
用户账号:超级用户:root 用户是 Linux 操作系统中默认的超级用户账号,对本主机拥有最高的权限。系统中超级用户是唯一的。
普通用户:由root用户或其他管理员用户创建,拥有的权限会受到限制,一般只在用户自己的宿主目录中拥有完整权限。
程序用户:在安装Linux操作系统及部分应用程序时,会添加一些特定的低权限用户账号,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行,如 bin、daemon、ftp、mail 等。
组账号:
基本组(私有组):基本组账号只有一个,一般为创建用户时指定的组。
在/etc/passwd文件中第4字段记录的即为该用户的基本组 GID 号。
二、用户账户文件
/etc/passwd
基于系统运行和管理需要,所有用户都可以访问passwd文件中的内容,但是只有root用户才能进行更改。
root❌0:0:root:/root:/bin/bash(以:为划分字段)
字段1:用户帐号的名称
字段2:用户密码占位符“x”
字段3:用户帐号的UID号
字段4:所属基本组帐号的GID号
字段5:用户全名
字段6:宿主目录
字段7:登录Shell信息(/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)
/etc/shadow
默认只有 root 用户能够读取 shadow 文件中的内容,且不允许直接编辑该文件中的内容。
修改主机名hostname
临时修改主机名
[root@localhost ~]# hostname lc
永久修改主机名(两种方法)
1.[root@localhost ~]# vim /etc/hostname
2.[root@localhost ~]# hostnamectl set-hostname lc
[root@localhost ~]# su //刷新
添加用户账号 useradd
-u:指定用户的 UID 号,要求该 UID 号码未被其他用户使用。
-d:指定用户的宿主目录位置(当与-M 一起使用时,不生效)。
-e:指定用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:指定用户的基本组名(或使用 GID 号),对应的组名必须已存在。
-G:指定用户的附加组名(或使用 GID 号),对应的组名必须已存在。
-M:不建立宿主目录。
-s:指定用户的登录 Shell,(比如/bin/bash为可登陆系统,/sbin/nologin和/bin/false为禁止用户登陆系统)。
例:
创建用户lc。指定UID 1010,家目录/opt/lc,基本组test, 附加组test1,指定shell /bin/bash lc
useradd -u 1010 -d /opt/lc -g test -G test1 -s /bin/bash lc
修改用户账号属性 usermod
-u:修改用户的 UID 号。usermod -u uid号 用户名
-d:修改用户的宿主目录位置。
-e:修改用户的账户失效时间,可使用 YYYY-MM-DD 的日期格式。
-g:修改用户的基本组名(或使用 GID 号)。
-G:修改用户的附加组名(或使用 GID 号)。
-s:指定用户的登录 Shell。
-l:更改用户账号的登录名称。
-L:锁定用户账户。
-U:解锁用户账户。
出现-bash-4.2$的解决方法:
[root@localhost home]# cp /etc/skel/.bashrc /home/lc/
[root@localhost home]# cp /etc/skel/.bash_profile /home/lc/
[root@localhost home]# chown test:tets/home/lc/.bash_profile
[root@localhost home]# chown test:test /home/lc/.bashrc
例:恢复登录
#创建test用户
[root@localhost /]# useradd -u 1010 -d /opt/test -g boge -G ky30 -s /bin/bash test
#修改test用户UID
[root@localhost opt]# usermod -u 1005 test
[root@localhost opt]# cat /etc/passwd
[root@localhost opt]# cd /home
[root@localhost home]# ls
123 456 boge ky30 llc
#切换test用户,显示-bash-4.2$是因为家目录没有创建完全。
[root@localhost home]# su - test
Last login: Wed Jun 14 22:43:27 PDT 2023 on pts/0
su: warning: cannot change directory to /home/test: No such file or directory
-bash-4.2$ su
[root@localhost home]# mkdir test
[root@localhost home]# su - test
Last login: Wed Jun 14 22:51:08 PDT 2023 on pts/0
-bash-4.2$ exit
Logout
#复制.bashrc到test目录下
[root@localhost home]# cp /etc/skel/.bashrc /home/test/
#复制.bash_profile到test目录下
[root@localhost home]# cp /etc/skel/.bash_profile /home/test/
#设置文件和目录的归属,发现没有group
[root@localhost home]# chown test:test /home/test/.bash_profile
chown: invalid group: ‘test:test’
[root@localhost home]# cat etc/group
cat: etc/group: No such file or directory
#给test添加group
[root@localhost home]# groupadd test
[root@localhost home]# cat /etc/group
[root@localhost home]# cd test
# test家目录下多出几个隐藏文件,ls -al查看隐藏文件
[root@localhost test]# ls -al
total 8
drwxr-xr-x. 2 root root 42 Jun 14 22:54 .
drwxr-xr-x. 6 root root 75 Jun 14 22:53 ..
-rw-r--r--. 1 root root 193 Jun 14 22:54 .bash_profile
-rw-r--r--. 1 root root 231 Jun 14 22:54 .bashrc
#设置.bash_profile和/.bashrc 的归属为test
[root@localhost test]# chown test:test /home/test/.bash_profile
[root@localhost test]# chown test:test /home/test/.bashrc
[root@localhost test]# su - test
Last login: Wed Jun 14 22:53:12 PDT 2023 on pts/0
用户账号设置密码 passwd
root用户可以指定用户名作为参数,对指定账号的密码进行管理。
普通用户却只能执行单独的“passwd”命令修改自己的密码。
-d:清空指定用户的密码,仅使用用户名即可登录系统。
-l:锁定用户账户,锁定的用户账号将无法再登录系统。
-S:查看用户账户的状态(是否被锁定)。
-u:解锁用户账户。
echo 123 | passwd --stdin dxl //设置密码
附加组gpasswd
附加组(公共组):用户除了基本组以外,额外添加指定的组,可有可无,可以有多个
useradd 123
gpasswd -a lc 123 //正在将用户“lc”加入到“123”组中
gpasswd -d lc 123 //正在将用户“dxl”从“123”组中删除
设置目录和文件的权限 chmod
chmod [ugoa…][±=][rwx] 文件或目录
“ugoa”表示该权限设置所针对的用户类别。“u”代表文件属主,“g”代表文件属组内的用户,“o”代表其他任何用户,“a”代表所有用户(缺省时为a)。
“±=”表示设置权限的操作动作。“+”代表增加相应权限,“-”代表减少相应权限,“=”代表仅设置对应的权限。
“rwx”是权限的字符组合形式,也可以拆分使用,如“r”“rx”等。
chmod nnn 文件或目录
-R:递归修改指定目录下所有子目录及文件的权限
[root@localhost opt]# chmod 777 qzz
设置目录和文件的归属 chown
chown 属主 文件或目录
chown :属组 文件或目录
chgrp 属组 文件或目录
chown 属主:属组 文件或目录
chown 属主.属组 文件或目录
-R:递归修改指定目录下所有子目录及文件的归属
练习
[root@localhost test]# cd /home
[root@localhost home]# vim /etc/profile
#source读取文件配置,使其立即生效
[root@localhost home]# source /etc/profile
[root@localhost home]# cat /etc/passwd
#全局生效
修改.bash_profile,只能在当前用户生效
[root@localhost home]# cd test
[root@localhost test]# ls -al
total 8
drwxr-xr-x. 2 root root 42 Jun 14 22:54 .
drwxr-xr-x. 6 root root 75 Jun 14 22:53 …
-rw-r–r–. 1 test test 193 Jun 14 22:54 .bash_profile
-rw-r–r–. 1 test test 231 Jun 14 22:54 .bashrc
[root@localhost test]# vim .bash_profile
#出现如下情况,需要重启终端再重新执行source
[root@localhost test]# source .bash_profile
‘abrt-cli status’ timed out
同样修改.bashrc,只能在当前用户生效
[root@localhost test]# vim .bashrc
指定用户登陆时,以脚本的形式执行,弹出来提示语 “欢迎你!”
[root@localhost test]# vim test.sh
[root@localhost test]# useradd LC
[root@localhost test]# chmod 777 test.sh
[root@localhost test]# vim /home/LC/.bash_profile
[root@localhost test]# pwd
/home/test
[root@localhost test]# su - LC
欢迎您!
[LC@localhost ~]$