Linux中一切皆文件,通过权限管理来限制文件的访问,修改删除
1、用户管理
查看用户,可以通过 cat /etc/passwd 来查看用户信息
[root@192 aa]# cat /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
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
libstoragemgmt:x:998:996:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
colord:x:997:995:User for colord:/var/lib/colord:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
saned:x:996:994:SANE scanner daemon user:/usr/share/sane:/sbin/nologin
saslauth:x:995:76:Saslauthd user:/run/saslauthd:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
setroubleshoot:x:994:991::/var/lib/setroubleshoot:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
chrony:x:993:988::/var/lib/chrony:/sbin/nologin
unbound:x:992:987:Unbound DNS resolver:/etc/unbound:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
geoclue:x:991:985:User for geoclue:/var/lib/geoclue:/sbin/nologin
gluster:x:990:984:GlusterFS daemons:/run/gluster:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
gnome-initial-setup:x:989:983::/run/gnome-initial-setup/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
aaa:x:1000:1000:aaa:/home/aaa:/bin/bash
第一列:用户名
第二列:用户的密码,用x来代替
第三列:用户uid,root为0,1-499默认为系统账号,500-65535为用户可登录账号
第四列:用户gid,
第五列:账号的说明解释
第六列:用户的家目录文件夹
第七列:用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的
1.1、添加用户
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s <shell>][-u <uid>][用户帐号]
参数 | 功能 |
-c <备注> | 为这个用户添加备注,显示在/etc/passwd里面 |
-d <登入目录> | 指定用户登入时的起始目录 |
-D | 变更预设值 |
-e<有效期限> | 指定帐号的有效期限。 |
-f<缓冲天数> | 指定在密码过期后多少天即关闭该帐号。 |
-g<群组> | 指定用户所属的群组 |
-G<群组> | 指定用户所属的附加群组 |
-m | 指定用户的登入目录 |
-M | 不要自动建立用户的登入目录 |
-n | 取消建立以用户名称为名的群组 |
-r | 建立系统帐号。 |
-s<shell> | 指定用户登入后所使用的shell |
-u<uid> | 指定用户ID |
# 添加一般用户
useradd test
# 创建一个系统用户
useradd -r test
# 为新创建的用户指定home目录
useradd -d /home/myd test
# 为添加的用户指定相应的用户组
useradd -g root test
1.2、添加用户组
groupadd 选项 用户组
参数 | 功能 |
---|---|
-g GID | 指定新用户组的组标识号(GID) |
-o | 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。 |
# 创建一个用户组
groupadd group1
# 创建一个用户组,并指定组id
groupadd -g 101 group1
1.3、用户权限修改
usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号]
参数 | 功能 |
---|---|
-c<备注> | 修改用户帐号的备注文字 |
-d登入目录> | 修改用户登入时的目录 |
-e<有效期限> | 修改帐号的有效期限 |
-f<缓冲天数> | 修改在密码过期后多少天即关闭该帐号 |
-g<群组> | 修改用户所属的群组 |
-G<群组> | 修改用户所属的附加群组 |
-l<帐号名称> | 修改用户帐号名称。 |
-L | 锁定用户密码,使密码无效 |
-s<shell> | 修改用户登入后所使用的shell |
-u<uid> | 修改用户ID |
-U | 解除密码锁定 |
# 锁定用户密码,禁止登录
usermod -L master
# 解除锁定,允许登录
usermod -U master
1.4、删除用户
userdel(选项)(参数)
参数 | 功能 |
---|---|
-f | 强制删除用户,即使现在该用户正在登录 |
-r | 删除用户的同时,删除与用户相关的所有文件 |
# 强制删除用户
userdel -f master
# 删除用户并删除相关文件
userdel -r master
1.5、删除用户组
groupdel [群组名称]
# 删除用户组
groupdel group1
1.6、修改密码
passwd [-k] [-l] [-u [-f]] [-d] [-S] [username]
参数 | 功能 |
---|---|
-d | 删除密码 |
-f | 强迫用户下次登录时必须修改口令 |
-w | 口令要到期提前警告的天数 |
-k | 更新只能发送在过期之后 |
-l | 停止账号使用 |
-S | 显示密码信息 |
-u | 启用已被停止的账户 |
-x | 指定口令最长存活期 |
-g | 修改群组密码 |
-i | 口令过期后多少天停用账户 |
# 查看用户密码情况
[root@192 aa]# passwd -S master
master PS 2024-06-10 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
# 删除密码
[root@192 aa]# passwd -d master
清除用户的密码 master。
passwd: 操作成功
# 修改密码
[root@192 aa]# passwd master
更改用户 master 的密码 。
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
2、文件基本权限
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux 中我们通常使用以下两个命令来修改文件或目录的所属用户与权限:
- chown (change owner) : 修改所属用户与组。
- chmod (change mode) : 修改用户的权限。
在 Linux 中我们可以使用 ll 或者 ls –l 命令来显示一个文件的属性以及文件所属的用户和组,如:
[root@192 aa]# ls -l
总用量 16
drwxr-xr-x. 3 root root 18 6月 5 23:35 a
-rw-r--r--. 1 root root 1901 6月 5 21:56 file1
-rw-r--r--. 1 root root 74 6月 5 21:51 file2
-rw-r--r--. 1 root root 86 6月 5 22:49 file5
drwxr-xr-x. 2 root root 45 6月 5 23:33 test
-rw-r--r--. 1 root root 918 6月 5 23:35 t.zip
实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
每个文件的属性由左边第一部分的 10 个字符来确定(如下图)。
从左至右用 0-9 这些数字来表示。
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。
# 修改文件的用户和用户组
chown master.master test.log
# 修改文件的权限
chmod 777 test.log
3、sudo权限
Linux sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
使用权限:在 /etc/sudoers 中有出现的使用者。
sudo [-选项]
参数 | 功能 |
---|---|
-V | 显示版本编号 |
-h | 会显示版本编号及指令的使用方式说明 |
-l | 显示出自己(执行 sudo 的使用者)的权限 |
-v | 因为 sudo 在第一次执行时或是在 N 分钟内没有执行(N 预设为五)会问密码,这个参数是重新做一次确认,如果超过 N 分钟,也会问密码 |
-k | 将会强迫使用者在下一次执行 sudo 时问密码(不论有没有超过 N 分钟) |
-b | 将要执行的指令放在背景执行 |
-p | prompt 可以更改问密码的提示语,其中 %u 会代换为使用者的帐号名称, %h 会显示主机名称 |
-u | username/#uid 不加此参数,代表要以 root 的身份执行指令,而加了此参数,可以以 username 的身份执行指令(#uid 为该 username 的使用者号码) |
-s | 执行环境变数中的 SHELL 所指定的 shell ,或是 /etc/passwd 里所指定的 shell |
-H | 将环境变数中的 HOME (家目录)指定为要变更身份的使用者家目录(如不加 -u 参数就是系统管理者 root ) |