1.修改文件属主和属组的命令chown
chown命令只有管理员可以使用:change owner)命令用于设置文件所有者和文件关联组的命令。
#chown USERNAME file,…
#chown USERNAME:GROUPNAME file,…
#chown USERNAME.GROUPNAME file,…
-R : 处理指定目录以及其子目录下的所有文件
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
[root@localhost ~]# chown lgl10 abc
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 lgl10 root 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
[root@localhost ~]# chown .lgl10 abc
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 lgl10 lgl10 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
2.遮罩码
root用户创建的文件默认权限是 644, 即属主:读、写;属组:只读;其他:只读;
目录的默认权限是755,即属主:读、写和执行;属组:读和执行;其他:读和执行;
文件最终的权限为:
666-umask
目录最终的权限为:
777-umask
文件默认是不能具有执行权限
[root@localhost ~]# touch def
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 lgl10 lgl10 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 5 22:44 def
[root@localhost ~]# mkdir hehe
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 lgl10 lgl10 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 5 22:44 def
drwxr-xr-x. 2 root root 6 Nov 5 22:45 hehe
[root@localhost ~]# umask ---root 用户的遮罩码
0022
[qn@localhost ~]$umask ---普通用户的遮罩码
0002
[root@localhost ~]# umask 033
[root@localhost ~]# mkdir xixi
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 lgl10 lgl10 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 5 22:44 def
drwxr-xr-x. 2 root root 6 Nov 5 22:45 hehe
drwxr--r--. 2 root root 6 Nov 5 22:51 xixi
3.特殊权限
SUID 是一种对二进制程序进行设置的特殊权限,可以让二进制程序的执行者临时拥有属 主的权限
chmod u+s file
chmod u-s file
如果file本身原来就有执行权限,则SUID显示为s,否则显示为S
[root@localhost ~]# chmod u+s abc
[root@localhost ~]# ll
total 4
-rwSr--r--. 1 lgl10 lgl10 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 5 22:44 def
drwxr-xr-x. 2 root root 6 Nov 5 22:45 hehe
drwxr--r--. 2 root root 6 Nov 5 22:51 xixi
[root@localhost ~]# chmod u-s abc
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 lgl10 lgl10 0 Nov 5 22:39 abc
-rw-------. 1 root root 1175 Sep 8 19:41 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Nov 5 22:44 def
drwxr-xr-x. 2 root root 6 Nov 5 22:45 hehe
drwxr--r--. 2 root root 6 Nov 5 22:51 xixi
SGID的目录的属组
chmod g+s DIR
chmod g-s DIR
如果file本身原来就有执行权限,则SGID显示为s,否则显示为S
[root@localhost ~]# ll /usr/bin/vi
-rwxr-xr-x. 1 655 root 1416744 Jul 23 2019 /usr/bin/vi
[root@localhost ~]# chmod 655 /usr/bin/vi
[root@localhost ~]# ll /usr/bin/vi
-rw-r-xr-x. 1 655 root 1416744 Jul 23 2019 /usr/bin/vi
[root@localhost ~]# chmod g+s def
[root@localhost ~]# ll def
-rw-r-Sr--. 1 root root 0 Nov 5 22:44 def
[root@localhost ~]# chmod g-s def
[root@localhost ~]# ll
-rw-r--r--. 1 root root 0 Nov 5 22:44 def
Sticky(1) #在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
chmod o+t DIR
chmod o-t DIR
#果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T
4755 #UID,文件权限为755
2755 #有SGID,文件权限为755
1755 #有Sticky,文件权限为755
这里前面的4、2、1分别表示SUID、SGID、Sticky
4.文件系统访问控制列表facl
facl作用:
除了文件的所有者,所属组和其它人,可以对更多的用户设置权限
命令:setfacl
语法格式
setfacl [options] [user:perm|group:perm] FILE
常用选项:
-m:授权
u:指定用户
g:指定组
[root@localhost ~]# su - lgl10
[lgl10@localhost ~]$ cd /123
[lgl10@localhost 123]$ ll
total 0
[lgl10@localhost 123]$ pwd
/123
[lgl10@localhost 123]$ rm -f 123
[lgl10@localhost 123]$ ll
total 0
[lgl10@localhost tmp]$ getfacl abc
#file: abc
#owner: root
#group: root
user::rw-
user:lgl10:rw-
group::r--
mask::rw-
other::r--
5.sudo
权限委派
经由 sudo 所执行的指令就好像是 root 亲自执行。
使用权限:在 /etc/sudoers 中有出现的使用者。
语法
-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 )
command 要以系统管理者身份(或以 -u 更改为其他人)执行的指令
[root@localhost ~]# visudo
##Sudoers allows particular users to run various commands as
##the root user, without needing the root password.
##
##Examples are provided at the bottom of the file for collections
##of related commands, which can then be delegated out to particular
##users or groups.
##
##This file must be edited with the 'visudo' command.
#Host Aliases
#Groups of machines. You may prefer to use hostnames (perhaps using
#wildcards for entire domains) or IP addresses instead.
#Host_Alias FILESERVERS = fs1, fs2
#Host_Alias MAILSERVERS = smtp, smtp2
##User Aliases
##These aren't often necessary, as you can use regular groups
##(ie, from files, LDAP, NIS, etc) in this file - just use %groupname
##rather than USERALIAS
#User_Alias ADMINS = jsmith, mikem
##Command Aliases
"/etc/sudoers.tmp" 120L, 4328C
##The COMMANDS section may have other options added to it.
##
##Allow root to run any commands anywhere
root ALL=(ALL) ALL
6.管理命令
w #当前登录到系统的用户有哪些,以及其正在做什么
[root@localhost ~]# w
01:00:45 up 30 min, 2 users, load average: 0.00, 0.00, 0.04
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty1 - 00:31 29:16 0.01s 0.01s -bash
root pts/0 192.168.110.1 00:31 2.00s 0.03s 0.02s
sleep #睡眠,写脚本为防止上一个命令没执行完下一命令就开始执行时可以加上sleep #
//表示停顿#秒后再执行后面的命令
sleep
s:秒,默认
m:分
h:小时
d:天
last #显示/var/log/wtmp文件,显示用户登录历史及系统重启历史
-n # //显示最近#次的相关信息
lastb //显示/var/log/btmp文件,显示用户错误的登录尝试
-n # //显示最近#次的相关信息
lastlog //显示每个用户最近一次成功登录信息
-u username //显示特定用户最近的登录信息
basename //显示路径基名
[root@localhost ~]# sleep 6
[root@localhost ~]# sleep 6m
[root@localhost ~]# sleep 6h
[root@localhost ~]# sleep 6d
[root@localhost ~]# last
root pts/1 192.168.110.1 Fri Nov 6 01:02 still logged in
root pts/0 192.168.110.1 Fri Nov 6 00:31 still logged in
root tty1 Fri Nov 6 00:31 still logged in
reboot system boot 4.18.0-193.el8.x Fri Nov 6 00:30 still running
root pts/1 192.168.110.1 Thu Nov 5 23:12 - 00:28 (01:16)
root pts/0 192.168.110.1 Thu Nov 5 22:06 - 00:28 (02:22)
root tty1 Thu Nov 5 22:06 - 00:28 (02:22)
reboot system boot 4.18.0-193.el8.x Thu Nov 5 22:05 - 00:28 (02:23)
root tty1 Tue Sep 8 20:59 - 20:59 (00:00)
reboot system boot 4.18.0-193.el8.x Tue Sep 8 20:58 - 20:59 (00:00)
root tty1 Tue Sep 8 19:45 - 19:47 (00:02)
reboot system boot 4.18.0-193.el8.x Tue Sep 8 19:44 - 19:47 (00:03)
wtmp begins Tue Sep 8 19:44:40 2020
[root@localhost ~]# last -n 2
root pts/1 192.168.110.1 Fri Nov 6 01:02 still logged in
root pts/0 192.168.110.1 Fri Nov 6 00:31 still logged in
wtmp begins Tue Sep 8 19:44:40 2020
[root@localhost ~]# last -2
root pts/1 192.168.110.1 Fri Nov 6 01:02 still logged in
[root@localhost ~]# lastb
root pts/1 Thu Nov 5 23:21 - 23:21 (00:00)
lgl10 ssh:notty 192.168.110.1 Thu Nov 5 23:12 - 23:12 (00:00)
lgl10 ssh:notty 192.168.110.1 Thu Nov 5 23:12 - 23:12 (00:00)
btmp begins Thu Nov 5 23:12:08 2020
[root@localhost ~]# lastb -1
root pts/1 Thu Nov 5 23:21 - 23:21 (00:00)
btmp begins Thu Nov 5 23:12:08 2020
[root@localhost ~]# lastlog
Username Port From Latest
root pts/1 192.168.110.1 Fri Nov 6 01:02:09 +0800 2020
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
sync **Never logged in**
shutdown **Never logged in**
halt **Never logged in**
mail **Never logged in**
operator **Never logged in**
games **Never logged in**
ftp **Never logged in**
nobody **Never logged in**
dbus **Never logged in**
systemd-coredump **Never logged in**
systemd-resolve **Never logged in**
tss **Never logged in**
polkitd **Never logged in**
unbound **Never logged in**
sssd **Never logged in**
sshd **Never logged in**
rngd **Never logged in**
lgl10 pts/1 Thu Nov 5 23:27:43 +0800 2020
root pts/0 192.168.110.1 Fri Nov 6 00:31 still logged in
wtmp begins Tue Sep 8 19:44:40 2020
[root@localhost ~]# lastlog -u root
Username Port From Latest
root pts/1 192.168.110.1 Fri Nov 6 01:02:09 +0800 2020
[root@localhost ~]# tty
/dev/pts/0
[root@localhost ~]# ps -elf| head
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 44756 do_epo 19:11 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
1 S root 2 0 0 80 0 - 0 - 19:11 ? 00:00:00 [kthreadd]
1 I root 3 2 0 60 -20 - 0 - 19:11 ? 00:00:00 [rcu_gp]
1 I root 4 2 0 60 -20 - 0 - 19:11 ? 00:00:00 [rcu_par_gp]
1 I root 6 2 0 60 -20 - 0 - 19:11 ? 00:00:00 [kworker/0:0H-kblockd]
1 I root 8 2 0 60 -20 - 0 - 19:11 ? 00:00:00 [mm_percpu_wq]
1 S root 9 2 0 80 0 - 0 - 19:11 ? 00:00:00 [ksoftirqd/0]
1 R root 10 2 0 80 0 - 0 - 19:11 ? 00:00:00 [rcu_sched]
1 S root 11 2 0 -40 - - 0 - 19:11 ? 00:00:00 [migration/0]
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 179024 13416 ? Ss 19:11 0:02 /usr/lib/syst
root 2 0.0 0.0 0 0 ? S 19:11 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 19:11 0:00 [rcu_gp]
root 4 0.0 0.0 0 0 ? I< 19:11 0:00 [rcu_par_gp]
root 6 0.0 0.0 0 0 ? I< 19:11 0:00 [kworker/0:0H
root 8 0.0 0.0 0 0 ? I< 19:11 0:00 [mm_percpu_wq
root 9 0.0 0.0 0 0 ? S 19:11 0:00 [ksoftirqd/0]
root 10 0.0 0.0 0 0 ? R 19:11 0:00 [rcu_sched]
root 11 0.0 0.0 0 0 ? S 19:11 0:00 [migration/0]
root 12 0.0 0.0 0 0 ? S 19:11 0:00 [watchdog/0]
root 13 0.0 0.0 0 0 ? S 19:11 0:00 [cpuhp/0]
过滤
[root@localhost ~]# ps -elf|grep vi
4 S root 896 1 0 80 0 - 21281 x64_sy 19:12 ? 00:00:00 /usr/bin/VGAuthService -s
0 R root 1389 1274 0 80 0 - 3027 - 20:19 pts/0 00:00:00 grep --color=auto vi
[root@localhost ~]# ps -ef |grep vi
root 896 1 0 19:12 ? 00:00:00 /usr/bin/VGAuthService -s
root 1392 1274 0 20:20 pts/0 00:00:00 grep --color=auto vi
[root@localhost ~]# ps -o pid,comm,ni
PID COMMAND NI
1274 bash 0
1393 ps 0