权限管理
文章目录
1. 权限管理
文件的权限主要针对三类对象进行定义:
- owner:属主,u
- group:属组,g
- other:其它,o
每个文件针对每个访问者都定义了三种权限:
权限 | 对应的操作对象 | 权限说明 |
---|---|---|
r | 文件 | 可读,可以使用类似cat等命令查看文件内容 |
w | 文件 | 可写,可以编辑或删除此文件 |
x | 文件 | 可执行,eXacutable,可以在命令提示符下当作命令提交给内核运行 |
r | 目录 | 可以对此目录执行ls以列出内部的所有文件 |
w | 目录 | 可以在此目录中创建文件,也可删除此目录中的文件 |
x | 目录 | 可以使用cd切换进此目录,也可以使用ls -l查看内部文件的详细信息 |
权限的八进制与十进制转换:
权限 | 二进制 | 十进制 |
---|---|---|
--- | 000 | 0 |
--x | 001 | 1 |
-w- | 010 | 2 |
-wx | 011 | 3 |
r-- | 100 | 4 |
r-x | 101 | 5 |
rw- | 110 | 6 |
rwx | 111 | 7 |
2. 权限管理命令
2.1 修改权限的命令chmod
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
用法:chmod [选项] ...模式[,模式] ...文件...... 或:chmod [选项] ...八进制模式文件... 或:chmod [选项] ... --reference =参考文件文件...... 将每个文件的模式更改为MODE。 使用--reference,将每个FILE的模式更改为RFILE的模式。 -c, - 更改类似于详细信息,但仅在进行更改时报告 -f, -- silent, - quiet抑制大多数错误消息 -v, -- verbose为每个处理的文件输出诊断 --no-preserve-root不要特别处理'/'(默认值) --preserve-root无法在'/'上递归操作 --reference = RFILE使用RFILE的模式而不是MODE值 -R, - 递归地递归更改文件和目录 --help显示此帮助信息并退出 --version显示版本信息并退出 修改某类用户或某些类用户权限: u,g,o,a(用户类别) chmod 用户类别=MODE file,..... chmod 用户类别=MODE,用户类别=MODE file,..... 修改某类的用户某位或某些位权限: u,g,o,a(用户类别) chmod 用户类别+|-MODE file,..... chmod 用户类别+|-MODE,用户类别+|-MODE file,..... chmod +|-MODE file,..... 每个MODE的形式为'[ugoa] *([-+ =]([rwxXst] * | [ugo]))+ | [-+=] [0-7] +'。 |
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[root@wenhs5479 ~]# ll 总用量 8 -rw-r--r--. 1 root root 0 3月 5 18:35 a -rw-------. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 3月 5 18:35 b -rw-r--r--. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg drwxr-xr-x. 3 root root 15 3月 5 19:11 w [root@wenhs5479 ~]# chmod 777 a [root@wenhs5479 ~]# ll 总用量 8 -rwxrwxrwx. 1 root root 0 3月 5 18:35 a -rw-------. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 3月 5 18:35 b -rw-r--r--. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg drwxr-xr-x. 3 root root 15 3月 5 19:11 w [root@wenhs5479 ~]# chmod u-x,g-w,o-r a [root@wenhs5479 ~]# ll 总用量 8 -rw-r-x-wx. 1 root root 0 3月 5 18:35 a -rw-------. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 3月 5 18:35 b -rw-r--r--. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg drwxr-xr-x. 3 root root 15 3月 5 19:11 w |
切换到shell脚本所在的目录,执行
以绝对路径的方式执行
直接用bash或sh执行
现行的shell中执行
对于第4种不会创建子进程,而是在父进程中直接执行。
上面的差异是因为子进程不能改变父进程的执行环境,所以CD(内建命令,只有内建命令才可以改变shell 的执行环境)没有成功,但是第4种没有子进程,所以CD成功。
2.2 修改文件属主和属组的命令chown
chown命令只有管理员可以使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[openstack@wenhs5479 ~]$ chown root.root w chown: 正在更改"w" 的所有者: 不允许的操作 [openstack@wenhs5479 ~]$ sudo chown root.root w 我们信任您已经从系统管理员那里了解了日常注意事项。 总结起来无外乎这三点: #1) 尊重别人的隐私。 #2) 输入前要先考虑(后果和风险)。 #3) 权力越大,责任越大。 [sudo] openstack 的密码: openstack 不在 sudoers 文件中。此事将被报告。 [openstack@wenhs5479 ~]$ ll 总用量 2244 -rwsr-xr-x. 1 openstack openstack 2294208 3月 5 19:30 vim -rw-rw-r--. 1 openstack openstack 0 3月 6 09:31 w [openstack@wenhs5479 ~]$ 由此可见,普通账户无法更改文件属主属组 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
用法:chown [选项] ... [所有者] [:[组]]文件...... 或:chown [选项] ... --reference =参考文件文件...... 将每个文件的所有者和/或组更改为所有者和/或组。 使用--reference,将每个FILE的所有者和组更改为RFILE的所有者和组。 -c, --changes 类似于详细信息,但仅在进行更改时报告 -f, --silent, --quiet 抑制大多数错误消息 -v, --verbose 为每个处理的文件输出诊断 --deference 会影响每个符号链接的引用(这是 默认情况下),而不是符号链接本身 -h, --no-dereference 影响符号链接而不是任何引用文件 (仅适用于可以更改的系统 符号链接的所有权) --from =当前所有者:当前所属组 只当每个文件的所有者和组符合选项所指定时才更改所 有者和组。其中一个可以省略,这时已省略的属性就不 需要符合原有的属性。 --no-preserve-root 不要特别处理'/'(默认值) --preserve-root 无法在'/'上递归操作 --reference = RFILE使用RFILE的所有者和组而不是 指定OWNER:GROUP值 -R, - 递归地对文件和目录进行递归操作 以下选项修改-R时遍历层次结构的方式 选项也被指定。如果指定了多个,则仅指定最终 一个生效。 -H 如果命令行参数是符号链接到一个目录,遍历它 -L 遍历到目录的每个符号链接遇到 -P 不遍历任何符号链接(默认) --help显示此帮助信息并退出 --version显示版本信息并退出 如果失踪,所有者不变。如果遗失,则组不变,但已更改 如果在符号所有者之后隐含':',则登录组。 OWNER和GROUP可以是数字也可以是符号。 chown root /u 将/u的属主更改为“root”。 chown root:staff /u 和上面类似,但同时也将其属更改为“staff”。 chown -hR root /u 将/u及其子目录下所有文件的属主更改为“root”。 |
示例下面练习题比较全
2.3 修改文件的属组命令chgrp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
用法:chgrp [选项] ...用户组文件... 或:chgrp [选项] ... --reference =参考文件文件...... 将每个FILE的组更改为GROUP。 使用--reference,将每个FILE的组更改为RFILE的组。 -c, - 更改类似于详细信息,但仅在进行更改时报告 -f, --silent, --quiet 抑制大多数错误消息 -v, --verbose 为每个处理的文件输出诊断 --deference 会影响每个符号链接的引用(这是 默认情况下),而不是符号链接本身 -h, --no-dereference 影响符号链接而不是任何引用文件 (仅适用于可以更改的系统 符号链接的所有权) --no-preserve-root 不要特别处理'/'(默认值) --preserve-root 无法在'/'上递归操作 --reference = RFILE使用RFILE的组而不是指定 GROUP值 -R, --recursive 地对文件和目录进行递归操作 以下选项修改-R时遍历层次结构的方式 选项也被指定。如果指定了多个,则仅指定最终 一个生效。 -H 如果命令行参数是符号链接到一个目录,遍历它 -L 遍历到目录的每个符号链接遇到 -P 不遍历任何符号链接(默认) --help 显示此帮助信息并退出 --version 显示版本信息并退出 |
1 2 3 4 5 6 7 8 9 10 |
[root@wenhs5479 ~]# chgrp openstack a [root@wenhs5479 ~]# ll 总用量 8 -rw-r-x-wx. 1 root openstack 0 3月 5 18:35 a -rw-------. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 3月 5 18:35 b -rw-r--r--. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg drwxr-xr-x. 3 root root 15 3月 5 19:11 w 只能更改属组,较为鸡肋,推荐使用chown,方便快捷 |
3. 遮罩码
为什么文件创建以后默认权限是644? 为什么目录创建以后默认权限是755?
- 因为有遮罩码的存在,所以默认权限是644和755,遮罩码用来遮盖一些权限,保证文件的安全性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@wenhs5479 ~]# touch a [root@wenhs5479 ~]# ll 总用量 8 -rw-r--r--. 1 root root 0 3月 5 18:35 a -rw-------. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg -rw-r--r--. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg [root@wenhs5479 ~]# mkdir b [root@wenhs5479 ~]# ll 总用量 8 -rw-r--r--. 1 root root 0 3月 5 18:35 a -rw-------. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 3月 5 18:35 b -rw-r--r--. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg [root@wenhs5479 ~]# |
这是由遮罩码umask来控制的。
1 2 |
[root@wenhs5479 ~]# umask 0022 \\默认遮罩码 |
umask: 用法:umask [-p] [-S] [模式]
从名字就能看出来,遮罩码umask是用来隐藏一些权限的。举例:如果你不想让人家认出你,你会怎么办?
文件最终的权限为:
- 666-umask
目录最终的权限为:
- 777-umask
文件默认是不能具有执行权限的,如果算得的结果有执行权限则将其权限整体加1。
修改的权限不在遮罩码范围类,也就是改什么权限,就是什么权限
chattr锁定文件:
chattr +i 文件路径
锁定文件,不得移动删除等chattr -i 文件路径
解锁文件
4. linux安全上下文与特殊权限
4.1 linux安全上下文
前提:进程有属主和属组;文件有属主和属组
- 任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有可执行权限;
- 启动为进程后,其进程的属主为发起者,属组为发起者所属的组
- 进程访问文件时的权限取决于进程的发起者:
- 进程的发起者是文件的属主时,则应用文件属主权限
- 进程的发起者是文件的属组时,则应用文件属组权限
- 应用文件“其它”权限
4.2 特殊权限
linux默认权限是根据linux安全上下文的方式来控制的,而特殊权限的存在打破了linux安全上下文的规则。
SUID(4)(给程序的特殊权限) //运行程序时,这个程序启动的进程的属主是程序文件自身的属主,而不是启动者为属主
1 2 3 |
chmod u+s file chmod u-s file 如果file本身原来就有执行权限,则SUID显示为s,否则显示为S |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@wenhs5479 ~]# chown openstack.openstack /home/openstack/vim [root@wenhs5479 ~]# ls -al /home/openstack/ 总用量 2256 drwx------. 3 openstack openstack 89 3月 5 19:30 . drwxr-xr-x. 4 root root 35 3月 5 18:21 .. -rw-------. 1 openstack openstack 18 3月 5 18:21 .bash_logout -rw-------. 1 openstack openstack 193 3月 5 18:21 .bash_profile -rw-------. 1 openstack openstack 231 3月 5 18:21 .bashrc drwx------. 4 openstack openstack 39 3月 5 18:21 .mozilla -rwxr-xr-x. 1 openstack openstack 2294208 3月 5 19:30 vim [root@wenhs5479 ~]# chmod 4755 /home/openstack/vim [root@wenhs5479 ~]# ls -al /home/openstack/ 总用量 2256 drwx------. 3 openstack openstack 89 3月 5 19:30 . drwxr-xr-x. 4 root root 35 3月 5 18:21 .. -rw-------. 1 openstack openstack 18 3月 5 18:21 .bash_logout -rw-------. 1 openstack openstack 193 3月 5 18:21 .bash_profile -rw-------. 1 openstack openstack 231 3月 5 18:21 .bashrc drwx------. 4 openstack openstack 39 3月 5 18:21 .mozilla -rwsr-xr-x. 1 openstack openstack 2294208 3月 5 19:30 vim [root@wenhs5479 ~]# /home/openstack/vim s ------------------------------------------------------------------------ [root@wenhs5479 ~]# ps -ef |grep vim opensta+ 116362 109853 0 19:32 pts/1 00:00:00 /home/openstack/vim s root 116420 116367 0 19:32 pts/2 00:00:00 grep --color=auto vim |
SGID(2)(给目录的特殊权限) //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基本组
1 2 3 4 5 6 |
默认情况下,用户创建文件时,其属组为此用户所属的基本组; 一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组 \ 为此设定了SGID的目录的属组 chmod g+s DIR chmod g-s DIR 如果file本身原来就有执行权限,则SGID显示为s,否则显示为S |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
[root@wenhs5479 ~]# chmod g+s w [root@wenhs5479 ~]# ll 总用量 8 -rw-r-x-wx. 1 root openstack 0 3月 5 18:35 a -rw-------. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg drwxr-xr-x. 2 root root 6 3月 5 18:35 b -rw-r--r--. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg drwxr-sr-x. 3 openstack openstack 15 3月 5 19:11 w [root@wenhs5479 ~]# cd w [root@wenhs5479 w]# ls e [root@wenhs5479 w]# ll 总用量 0 drwxr-xr-x. 3 openstack openstack 15 3月 5 19:11 e [root@wenhs5479 w]# touch 1 [root@wenhs5479 w]# ll 总用量 0 -rw-r--r--. 1 root openstack 0 3月 6 09:44 1 drwxr-xr-x. 3 openstack openstack 15 3月 5 19:11 e [root@wenhs5479 w]# mkdir 2 [root@wenhs5479 w]# ll 总用量 0 -rw-r--r--. 1 root openstack 0 3月 6 09:44 1 drwxr-sr-x. 2 root openstack 6 3月 6 09:45 2 drwxr-xr-x. 3 openstack openstack 15 3月 5 19:11 e [root@wenhs5479 w]# |
Sticky(1) (给目录的特殊权限) //在一个公共目录,每个人都能创建文件,删除自己的文件,但是不能删除别人创建的文件
1 2 3 |
chmod o+t DIR chmod o-t DIR 如果DIR本身原来就有执行权限,则Sticky显示为t,否则显示为T |
1 2 3 4 5 |
4755 //有SUID,文件权限为755 2755 //有SGID,文件权限为755 1755 //有Sticky,文件权限为755 7755 //有SUID、SGID、Sticky,文件权限为755 这里前面的4、2、1分别表示SUID、SGID、Sticky |
1 2 3 4 5 6 7 8 9 10 11 12 |
[test@wenhs5479 test]$ ll 总用量 0 -rw-rw-r-T. 1 openstack openstack 0 3月 6 09:51 openstack -rw-rw-r--. 1 test test 0 3月 6 09:53 test2 [test@wenhs5479 test]$ rm -rf openstack rm: 无法删除"openstack": 不允许的操作 [test@wenhs5479 test]$ sudo rm -rf openstack [sudo] test 的密码: [test@wenhs5479 test]$ ll 总用量 0 -rw-rw-r--. 1 test test 0 3月 6 09:53 test2 [test@wenhs5479 test]$ |
管理员的权限是一个流氓用户,一般情况下都可以为所欲为,普通账号的话,无法删除别人创建的东西
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[test@wenhs5479 test]$ touch openstack [test@wenhs5479 test]$ sudo chown openstack.openstack openstack [test@wenhs5479 test]$ ll 总用量 0 -rw-rw-r--. 1 openstack openstack 0 3月 6 09:57 openstack -rw-rw-r--. 1 test test 0 3月 6 09:53 test2 [test@wenhs5479 test]$ sudo chmod 7777 openstack [test@wenhs5479 test]$ ll 总用量 0 -rwsrwsrwt. 1 openstack openstack 0 3月 6 09:57 openstack -rw-rw-r--. 1 test test 0 3月 6 09:53 test2 [test@wenhs5479 test]$ sudo rm -rf openstack [test@wenhs5479 test]$ ll 总用量 0 -rw-rw-r--. 1 test test 0 3月 6 09:53 test2 [test@wenhs5479 test]$ |
5. 文件系统访问控制列表facl
facl(Filesystem Access Control List),利用文件扩展保存额外的访问控制权限。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
语法:setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ... -m //设定,修改文件的当前ACL u:UID:perm g:GID:perm setfacl -m u:test:rw file setfacl -m g:test:rw file 如果要为某个目录设定默认的访问控制列表,只需要设定时在u或g前面加上d即可。 如://setfacl -dm u:test:rw file,此时在此目录中创建的文件均继承此访问控制列表所设置的权限 -x //取消,从文件的ACL中删除条目 u:UID g:GID setfacl -x u:test file setfacl -x g:test file -b //Remove all ,删除所有扩展ACL条目 -d, --default 操作适用于默认ACL 语法:getfacl [-aceEsRLPtpndvh] file ... getfacl file 文件权限应用次序: 默认情况下: Owner --> Group --> Other 有设置facl的情况下: Owner --> facl,user --> Group --> facl,group --> Other |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@wenhs5479 ~]# setfacl -m u:openstack:rwx jbgsn [root@wenhs5479 ~]# ll 总用量 8 -rwxrwxrwx. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg -rwxrwxrwx. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg -rw-rwxr--+ 1 root root 0 3月 6 10:29 jbgsn drwxr-xr-x. 2 root root 6 3月 6 10:28 wenhs [root@wenhs5479 ~]# getfa getfacl getfattr [root@wenhs5479 ~]# getfacl jbgsn # file: jbgsn # owner: root # group: root user::rw- user:openstack:rwx group::r-- mask::rwx other::r-- |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@wenhs5479 ~]# setfacl -x u:openstack jbgsn [root@wenhs5479 ~]# ll 总用量 8 -rwxrwxrwx. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg -rwxrwxrwx. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg -rw-r--r--+ 1 root root 0 3月 6 10:29 jbgsn drwxr-xr-x. 2 root root 6 3月 6 10:28 wenhs [root@wenhs5479 ~]# getfacl jbgsn # file: jbgsn # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@wenhs5479 ~]# setfacl -b jbgsn [root@wenhs5479 ~]# ll 总用量 8 -rwxrwxrwx. 1 root root 1714 3月 4 17:46 anaconda-ks.cfg -rwxrwxrwx. 1 root root 1762 3月 4 17:50 initial-setup-ks.cfg -rw-r--r--. 1 root root 0 3月 6 10:29 jbgsn drwxr-xr-x. 2 root root 6 3月 6 10:28 wenhs [root@wenhs5479 ~]# getfacl jbgsn # file: jbgsn # owner: root # group: root user::rw- group::r-- other::r-- |
6. sudo
sudo可以实现某个用户能够以另外哪一个用户的身份通过哪些主机执行什么命令
sudo的配置文件:/etc/sudoers
使用visudo命令进行sudo的配置,每一行就是一个sudo条目,条目格式如下:
- who which_hosts=(runas) command
- who:User_Alias,表示运行命令者的身份
- which_hosts:Host_Alias,通过哪些主机
- runas:Runas_Alias,以哪个用户的身份
- command:Cmnd_Alias,运行哪些命令
别名必须全部而且只能使用大写英文字母的组合,可以使用感叹号取反
别名分类:
- 用户别名:
- User_Alias NETWORKADMIN =
- 用户的用户名
- 组名,使用%引导
- 还可以其它已经定义的用户别名
- 主机别名:
- Host_Alias =
- 主机名
- IP地址
- 网络地址
- 其它主机别名
- Runas别名:
- Runas_Alias =
- 用户名
- %组名
- 其它的Runas别名
- 命令别名:
- Cmnd_Alias =
- 命令路径
- 目录(此目录内的所有命令)
- 其它已定义的命令别名
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
sudo - 以其他用户身份执行一条命令 usage: sudo -h | -K | -k | -V usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user] usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command] usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>] usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p prompt] [-T timeout] [-u user] file ... 选项: -A, --askpass 使用助手程序进行密码提示 -b, --background 在后台运行命令 -C, --close-from=num 关闭所有 >= num 的文件描述符 -E, --preserve-env 在执行命令时保留用户环境 --preserve-env=list 保留特定的环境变量 -e, --edit 编辑文件而非执行命令 -g, --group=group 以指定的用户组或 ID 执行命令 -H, --set-home 将 HOME 变量设为目标用户的主目录。 -h, --help 显示帮助消息并退出 -h, --host=host 在主机上运行命令(如果插件支持) -i, --login 以目标用户身份运行一个登录 shell;可同时指定一条命令 -K, --remove-timestamp 完全移除时间戳文件 -k, --reset-timestamp 无效的时间戳文件,默认认证信息在5分钟后失效 -l, --list 列出用户权限或检查某个特定命令;对于长格式,使用两次 -n, --non-interactive 非交互模式,不提示 -P, --preserve-groups 保留组向量,而非设置为目标的组向量 -p, --prompt=prompt 使用指定的密码提示 -r, --role=role 以指定的角色创建 SELinux 安全环境 -S, --stdin 从标准输入读取密码 -s, --shell 以目标用户运行 shell;可同时指定一条命令 -t, --type=type 以指定的类型创建 SELinux 安全环境 -T, --command-timeout=timeout 在达到指定时间限制后终止命令 -U, --other-user=user 在列表模式中显示用户的权限 -u, --user=user 以指定用户或 ID 运行命令(或编辑文件),默认为root -V, --version 显示版本信息并退出 -v, --validate 更新用户的时间戳而不执行命令,因为sudo在第一次执行时或是在N分钟内没有执行(N默认为5)会问密码,这个参数,是重新做一次确认,如果超过N分钟,也会问密码 -- 停止处理命令行参数 |
7. 管理命令
1 2 3 4 5 6 7 |
w //显示当前登录到系统的用户有哪些,以及其正在做什么 [root@wenhs5479 ~]# w 18:50:08 up 11:16, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT test :0 :0 一17 ?xdm? 5:31 0.49s /usr/libexec/gnome-session-binary --session gnome-classic root pts/1 192.168.131.100 17:51 0.00s 0.48s 0.04s w root pts/0 192.168.131.100 13:59 1:45m 0.26s 0.26s -bash |
1 2 3 4 5 6 7 8 9 10 11 12 |
sleep //睡眠,写脚本为防止上一个命令没执行完下一命令就开始执行时可以加上sleep #,表示停顿#秒后再执行后面的命令 sleep NUMBER[SUFFIX]... SUFFIX: s:秒,默认 m:分 h:小时 d:天 [root@wenhs5479 ~]# echo wenhs;sleep 5s;echo qingjiubaba wenhs qingjiubaba [root@wenhs5479 ~]# |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
last //显示/var/log/wtmp文件,显示用户登录历史及系统重启历史 -n # //显示最近#次的相关信息 [root@wenhs5479 ~]# last root pts/1 192.168.131.100 Tue Mar 5 17:51 still logged in root pts/0 192.168.131.100 Tue Mar 5 13:59 still logged in root pts/3 192.168.131.100 Tue Mar 5 09:51 - 15:54 (06:02) root pts/2 192.168.131.100 Tue Mar 5 09:06 - 15:54 (06:47) root pts/1 192.168.131.100 Tue Mar 5 09:05 - 11:05 (02:00) test pts/1 :0 Tue Mar 5 09:05 - 09:05 (00:00) root pts/0 192.168.131.100 Mon Mar 4 14:24 - 11:04 (20:39) test pts/0 :0 Mon Mar 4 14:23 - 14:24 (00:00) root pts/1 192.168.131.100 Mon Mar 4 09:53 - 16:34 (06:40) test pts/0 :0 Mon Mar 4 09:52 - 09:55 (00:02) test :0 :0 Mon Mar 4 17:52 still logged in reboot system boot 3.10.0-957.el7.x Mon Mar 4 17:50 - 18:54 (1+01:04) wtmp begins Mon Mar 4 17:50:11 2019 [root@wenhs5479 ~]# |
1 2 3 4 5 6 7 8 9 10 |
lastb //显示/var/log/btmp文件,显示用户错误的登录尝试 -n # //显示最近#次的相关信息 [root@wenhs5479 ~]# lastb btmp begins Mon Mar 4 17:50:18 2019 [root@wenhs5479 ~]# lastb -n 10 btmp begins Mon Mar 4 17:50:18 2019 [root@wenhs5479 ~]# |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
lastlog //显示每个用户最近一次成功登录信息 -u username //显示特定用户最近的登录信息 [root@wenhs5479 ~]# lastlog 用户名 端口 来自 最后登陆时间 root pts/1 192.168.131.100 二 3月 5 17:51:22 +0800 2019 bin **从未登录过** daemon **从未登录过** adm **从未登录过** lp **从未登录过** sync **从未登录过** shutdown **从未登录过** halt **从未登录过** mail **从未登录过** operator **从未登录过** games **从未登录过** ftp **从未登录过** nobody **从未登录过** systemd-network **从未登录过** dbus **从未登录过** polkitd **从未登录过** libstoragemgmt **从未登录过** colord **从未登录过** rpc **从未登录过** saned **从未登录过** gluster **从未登录过** amandabackup **从未登录过** saslauth **从未登录过** abrt **从未登录过** rtkit **从未登录过** pulse **从未登录过** radvd **从未登录过** unbound **从未登录过** chrony **从未登录过** rpcuser **从未登录过** nfsnobody **从未登录过** qemu **从未登录过** tss **从未登录过** usbmuxd **从未登录过** geoclue **从未登录过** ntp **从未登录过** sssd **从未登录过** setroubleshoot **从未登录过** gdm **从未登录过** gnome-initial-setup :0 一 3月 4 17:50:45 +0800 2019 sshd **从未登录过** avahi **从未登录过** postfix **从未登录过** tcpdump **从未登录过** test pts/0 二 3月 5 16:47:27 +0800 2019 openstack pts/1 二 3月 5 18:21:56 +0800 2019 [root@wenhs5479 ~]# lastlog -u test 用户名 端口 来自 最后登陆时间 test pts/0 二 3月 5 16:47:27 +0800 2019 [root@wenhs5479 ~]# |
1 2 3 4 5 6 7 8 9 10 11 |
basename //显示路径最后文件名 dirname //显示目录名称 [root@wenhs5479 ~]# mkdir -p w/e/n/h/s/;touch w/e/n/h/s/1.txt [root@wenhs5479 ~]# ls a anaconda-ks.cfg b initial-setup-ks.cfg w [root@wenhs5479 ~]# basename w/e/n/h/s/1.txt 1.txt [root@wenhs5479 ~]# dirname w/e/n/h/s/1.txt w/e/n/h/s [root@wenhs5479 ~]# |
示例:
1、新建一个没有家目录的用户openstack
1 2 3 4 5 6 |
[root@wenhs5479 ~]# useradd -M openstack [root@wenhs5479 ~]# su - openstack su: 警告:无法更改到 /home/openstack 目录: 没有那个文件或目录 -bash-4.2$ pwd /root -bash-4.2$ |
2、复制/etc/skel为/home/openstack
1 2 3 4 5 6 7 8 |
[root@wenhs5479 ~]# cp -r /etc/skel/ /home/openstack/ [root@wenhs5479 ~]# ls /home/ openstack test [root@wenhs5479 ~]# su - openstack 上一次登录:二 3月 5 17:56:51 CST 2018pts/1 上 [openstack@wenhs5479 ~]$ pwd /home/openstack [openstack@wenhs5479 ~]$ |
3、改变/home/openstack及其内部文件的属主属组均为openstack
1 2 3 4 5 6 7 8 9 |
[root@wenhs5479 ~]# chown -R openstack.openstack /home/openstack/ [root@wenhs5479 ~]# ls -al /home/openstack/ 总用量 12 drwxr-xr-x. 3 openstack openstack 78 3月 5 18:02 . drwxr-xr-x. 4 root root 31 3月 5 18:02 .. -rw-r--r--. 1 openstack openstack 18 3月 5 18:02 .bash_logout -rw-r--r--. 1 openstack openstack 193 3月 5 18:02 .bash_profile -rw-r--r--. 1 openstack openstack 231 3月 5 18:02 .bashrc drwxr-xr-x. 4 openstack openstack 39 3月 5 18:02 .mozilla |
4、设置/home/openstack及其内部的文件,属组和其它用户没有任何访问权限
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[root@wenhs5479 ~]# chmod -R g-rwx /home/openstack/ [root@wenhs5479 ~]# chmod -R o-rwx /home/openstack/ [root@wenhs5479 ~]# ls -al /home/openstack/ 总用量 12 drwx------. 3 openstack openstack 78 3月 5 18:21 . drwxr-xr-x. 4 root root 35 3月 5 18:21 .. -rw-------. 1 openstack openstack 18 3月 5 18:21 .bash_logout -rw-------. 1 openstack openstack 193 3月 5 18:21 .bash_profile -rw-------. 1 openstack openstack 231 3月 5 18:21 .bashrc drwx------. 4 openstack openstack 39 3月 5 18:21 .mozilla [root@wenhs5479 ~]# ls -al /home/ 总用量 4 drwxr-xr-x. 4 root root 35 3月 5 18:21 . dr-xr-xr-x. 17 root root 224 3月 4 17:44 .. drwx------. 3 openstack openstack 78 3月 5 18:21 openstack drwx------. 16 test test 4096 3月 5 09:56 test [root@wenhs5479 ~]# |