下面先来了解一下关于用户,组的四个文件 /etc/passwd /etc/shadow /etc/group /etc/gshadow 首先来了解一下/etc/passwd这个文件, 这个文件只是存放用户的信息 [root@localhost ~]# [root@localhost ~]# cat /etc/passwd | grep user1 user1:x::::/home/user1:/bin/bash [root@localhost ~]# 这里面总共有七个栏位,了解一下每个栏位的意义。 User1 用户名 X 用户的密码位(如果这个位上面没有这个X,就代表登陆这个用户不需要密码) UID GID 第五个是密码的描述信息,这里没有。 /home/user1 用户的/home目录 /bin/bash 用户的shell 在这里有个比较特殊的shell /sbin/nologin 如果将用户的shell改为/sbin/nologin,那么这儿用户只可以登陆服务,但是不可以登陆计算机。不允许交互式登陆。 再来了解一下/etc/shadow这个文件, 这个文件主要是用来保存用户的密码信息和策略。 [root@localhost ~]# [root@localhost ~]# cat /etc/shadow | grep user1 user1:$1$2WJEp9K7$h.NRfJsaEm8VMksBQHZm7.::0::7::: [root@localhost ~]# 现在来了解一下每个栏位的意义 User1 用户名 第二个栏位是保存用户的密码,这个密码是经过MD5的加密的。 如果密码位前面有个!,就代表这个用户被锁定了。 密码最后一次修改的时间 0 密码最少的存活期(为0代表用户可以随时更改密码) 密码过期时间(代表密码永不过期) 7 密码过期警告天数(在密码过期的前七天警告用户) 再来了解一下/etc/group这个文件, 这个文件主要是用于存放组的信息。 [root@localhost ~]# [root@localhost ~]# cat /etc/group | grep user1 user1:x:: [root@localhost ~]# 现在来了解一下每个栏位的意义 User 组的名字 X 组的密码位 GID 可以将用户直接添加到冒号后面,就代表加入了这个组。 最后来了解一下/etc/gshadow这个文件, 这个文件主要是保存组密码的信息。 [root@localhost ~]# [root@localhost ~]# cat /etc/gshadow | grep user1 user1:!:: [root@localhost ~]# User 组的名字 可以看到,这个组默认是没有密码的,现在我们给它设置一个密码。 [root@localhost ~]# [root@localhost ~]# gpasswd user1 Changing the password for group user1 New Password: Re-enter new password: [root@localhost ~]# cat /etc/gshadow | grep user1 user1:$1$ZxvTf/dQ$DWmf//MTxpwJIzTZIcYQZ/:: [root@localhost ~]# 可以看到,组现在也有了一个密码,而且也是经过MD5加密的。 下面来看下组的密码有什么意义。 [root@localhost ~]# [root@localhost ~]# useradd user2 [root@localhost ~]# [root@localhost ~]# su – user2 [user2@localhost ~]$ [user2@localhost ~]$ newgrp user1 Password: [user2@localhost ~]$ id uid=(user2) gid=(user1) groups=(user1),(user2) [user2@localhost ~]$ 可以看到,我们user2现在加入到了user1,变成了user1组里面的成员,也就是说组密码的意义在于,一个普通用户只要有组的密码,就可以加入到这个组里面来,成为这个组里面的成员。 用户管理工具 Useradd 添加用户 #useradd user1(用户名) [root@localhost ~]# [root@localhost ~]# useradd user1 [root@localhost ~]# [root@localhost ~]# id user1 uid=(user1) gid=(user1) groups=(user1) [root@localhost ~]# User1就添加成功了。 Usermod 修改用户 Userdel 删除用户 #userdel -r user1(用户名) [root@localhost ~]# [root@localhost ~]# userdel -r user1 [root@localhost ~]# [root@localhost ~]# id user1 id: user1: No such user [root@localhost ~]# User1就成功删除了 -r 在删除用户的同时删除用户的/home目录。 关于监视登陆的工具 #w [root@localhost ~]# w :: up :, 3 users, load average: 0., 0., 0. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root :0 - Feb ?xdm? 3: 0.s /usr/bin/ gnome- root pts/2 :0.0 : 0.s 0.s 0.s w root pts/1 ..0. : .s 0.s 0.s - bash [root@localhost ~]# 可以看到..0.正在连接我。 #last [root@localhost ~]# [root@localhost ~]# last root pts/2 station.exampl Sun Feb : still logged in root pts/1 :0.0 Sun Feb : still logged in root pts/2 :0.0 Fri Feb : – : (1+:) root pts/1 :0.0 Mon Feb : – : (3+:) root pts/2 :0.0 Mon Feb : - : (:) root pts/2 :0.0 Mon Feb : - : (:) root pts/1 :0.0 Sun Feb : - : (1+:) root pts/1 :0.0 Sun Feb : - : (:) root pts/1 :0.0 Sun Feb : - : (:) root :0 Sun Feb : still logged in root :0 Sun Feb : – : (:) reboot system boot 2.6.-.el5 Sun Feb : (7+:) root pts/1 :0.0 Sun Feb : – down (-7:-) root :0 Sun Feb : – down (-7:-) root :0 Sun Feb : – : (:) reboot system boot 2.6.-.el5 Sun Feb : (-7:-) reboot system boot 2.6.-.el5 Sun Feb : (:) wtmp begins Sun Feb :: [root@localhost ~]# 曾经有那些用户登陆过我的计算机。并且在我计算机上面登陆了多久,很多东西都可以查看的到。 #lastb [root@localhost ~]# [root@localhost ~]# lastb root ssh:notty www.google.com. Mon Feb : – : (:) root ssh:notty www.google.com. Mon Feb : – : (:) root ssh:notty www.google.com. Mon Feb : – : (:) btmp begins Mon Feb :: [root@localhost ~]# 这条命令显示的结果是那些计算机曾经登录过我的计算机,但是没有登录成功的计算机。只会显示没有登录成功的信息,并且它们是使用的什么方法尝试连接我的计算机,这里面都很详细。 默认权限(defaults perm) 默认的时候,我们在创建文件和目录的时候,并不是继承了上级目录的权限,而是根据目录和文件的UMASK值来决定的。 关于UMASK值 就是用来定义文件的默认权限的 如何在系统查询UMASK值呢? #umask [root@localhost ~]# [root@localhost ~]# umask [root@localhost ~]# 可以看到,系统中的umask值为 当然这个umask也是可以修改的 #umask [root@localhost ~]# [root@localhost ~]# umask [root@localhost ~]# [root@localhost ~]# umask [root@localhost ~]# 系统的umask值被我们改成了。 Umask是怎么定义目录和文件的权限的 对于不同用户,umask定义都不一样。 对于root uamsk值为 对于普通用户 umask值为 那么我们在创建目录和文件的时候默认权限是多少呢。 对于root 目录 - 文件 - 对于普通用户 目录 - 文件 - 这就是我们的创建目录和文件的默认权限。 注意 :我们在用最高权限减umask值的时候一定是用二进制的数值来减,而不是十进制的数值来减。 [root@localhost ~]# [root@localhost ~]# umask [root@localhost ~]# mkdir test [root@localhost ~]# touch test1 [root@localhost ~]# ll | grep test drwxr-xr-x 2 root root Feb : test -rw-r–r– 1 root root 0 Feb : test1 [root@localhost ~]# 可以看到,我们目录的默认权限的确是.文件的默认权限的确是。 [root@localhost ~]# [root@localhost ~]# su – user1 [user1@localhost ~]$ [user1@localhost ~]$ umask [user1@localhost ~]$ mkdir file [user1@localhost ~]$ [user1@localhost ~]$ touch file1 [user1@localhost ~]$ ll | grep file drwxrwxr-x 2 user1 user1 Feb : file -rw-rw-r– 1 user1 user1 0 Feb : file1 [user1@localhost ~]$ 可以看到,在普通用户的身份下面。我们创建的目录的权限为,文件的权限为。 关于三个特殊的权限 1 .suid权限 如果在一个可执行文件(命令或者脚本)运用了suid后,那么任何人在执行该命令的时候会临时拥有该命令的拥有人权限。 我们知道passwd这个命令管理员可以运行,还有普通用户也可以运行。 还有如果我们利用passwd来修改密码成功了,是要在/etc/shadow这个文件中去添加一个密码位的,现在我们看看这个文件的权限。 [root@localhost ~]# [root@localhost ~]# ls -l /etc/shadow -r——– 1 root root Feb : /etc/shadow [root@localhost ~]# 可以看到,这个文件普通用户什么权限也没有,连读的权限都没有,那么普通用户是怎么修改自己的密码,并且能够将密码写在/etc/shadow文件里面的呢。 [root@localhost ~]# [root@localhost ~]# ll /usr/bin/passwd -rwsr-xr-x 1 root root Jul /usr/bin/passwd [root@localhost ~]# 我们可以看到passwd这个命令的权限位上面多了一个s,这个是我们以前从来没有看见过的,这个就是suid。 当普通用户利用passwd来修改密码的时候,由于passwd命令上面有suid权限,那么普通用户就会临时拥有该命令的拥有人root的权限,从而就可以往/etc/shadow这个文件里面去写入密码位了。 现在还有个问题,如果普通用户因为suid原因可以修改密码,那么普通用户能否去修改别的用户的密码呢,我们来尝试一下。 [user1@localhost ~]$ [user1@localhost ~]$ passwd user2 passwd: Only root can specify a user name. [user1@localhost ~]$ 我们可以看到,是不可以修改的。如果按照理论情况,我们的passwd命令因为具有suid权限,那么是可以修改别的用户的密码的。这里并不是passwd命令不具有suid功能,它也并没有报权限拒绝。而是提示我们passwd这个命令只有root用户才可以在后面接上用户名,系统是从语法上面做了限制,而并不是suid,没有生效。这也是系统为了保证安全。 我们在做一个试验来了解suid的作用 先来看看系统中根的权限是什么 [root@localhost ~]# [root@localhost ~]# ls -ld / drwxr-xr-x root root Feb : / [root@localhost ~]# 可以看到,根的权限是,也就是说一个普通用户是没有办法往根里面写入数据的,普通用户是属于其他人吗。我们试试 [root@localhost ~]# [root@localhost ~]# su – user1 [user1@localhost ~]$ [user1@localhost ~]$ cd / [user1@localhost /]$ mkdir test mkdir: cannot create directory `test’: Permission denied [user1@localhost /]$ 可以看到,我们的普通用户user1对根没有写入的权限。 现在我们给mkdir这条命令加一个suid的权限。看看会发生什么。 [root@localhost ~]# [root@localhost ~]# which mkdir /bin/mkdir [root@localhost ~]# ll /bin/mkdir -rwxr-xr-x 1 root root Jul /bin/mkdir [root@localhost ~]# [root@localhost ~]# chmod u+s /bin/mkdir [root@localhost ~]# [root@localhost ~]# ll /bin/mkdir -rwsr-xr-x 1 root root Jul /bin/mkdir [root@localhost ~]# 可以看到,mkdir这个命令的权限已经多了一个s权限。 现在我们在使用普通用户去根下面创建一个文件, [root@localhost ~]# [root@localhost ~]# su – user1 [user1@localhost ~]$ [user1@localhost ~]$ cd / [user1@localhost /]$ mkdir file [user1@localhost /]$ [user1@localhost /]$ ll -ld file/ drwxrwxr-x 2 root user1 Feb : file/ [user1@localhost /]$ 现在我们就可以在根下面创建目录了,是因为我们普通用户在使用mkdir这条命令的时候临时变成了该命令的拥有人的权限,所有普通用户就可以在根下面创建目录,还可以看到,我们通过user1在根下面创建了一个文件,其拥有人也是root,这个也很好的说明了我们的确是使用root的身份去创建的file这个目录。 还有一个问题,我们的mkdir这个命令因为多了一个s位,那么以前的x位权限到哪里去了呢。如果是S,代表以前是没有x权限,如果是s,就代表以前有x权限。 [root@localhost ~]# [root@localhost ~]# ll /bin/mkdir -rwsr-xr-x 1 root root Jul /bin/mkdir [root@localhost ~]# chmod u-x /bin/mkdir [root@localhost ~]# ll /bin/mkdir -rwSr-xr-x 1 root root Jul /bin/mkdir [root@localhost ~]# chmod u+x /bin/mkdir [root@localhost ~]# ll /bin/mkdir -rwsr-xr-x 1 root root Jul /bin/mkdir [root@localhost ~]# 可以看到,我们去掉了x权限,就变成了S,我们加上x权限,就又变成了s。 2.sgid权限 刚才我们的suid只可以运用在一个二进制文件上面,也就是命令上面。 而我们的sgid可以运用在命令和目录上面。 下面先来看下sgid运用在命令上面 如果允许运用在命令上面,和刚才的suid一样,只是变成了临时拥有该命令拥有组的权限,就这点区别。 下面在来看下sgid运用在目录上面 如果当一个目录运用的sgid权限,那么任何人在该目录建立的文件和目录就会继承该目录本身的组。 现在我们通过一个试验来了解sgid的权限, [root@localhost ~]# [root@localhost ~]# mkdir /redhat [root@localhost ~]# [root@localhost ~]# chmod /redhat/ [root@localhost ~]# [root@localhost ~]# ll -ld /redhat/ drwxrwxrwx 2 root root Mar 1 : /redhat/ [root@localhost ~]# 现在我们新建了一个redhat目录,并且这个目录的权限是,现在普通用户对这个目录也应该是rwx的权限,我们试试, [root@localhost ~]# [root@localhost ~]# su – user1 [user1@localhost ~]$ [user1@localhost ~]$ cd /redhat/ [user1@localhost redhat]$ [user1@localhost redhat]$ touch 1.txt [user1@localhost redhat]$ ls 1.txt [user1@localhost redhat]$ 我们的确可以创建文件,那么这个文件的拥有人和拥有组会是谁呢,肯定是user1。现在我们就在这个目录上面添加一个sgid的权限。 [root@localhost ~]# [root@localhost ~]# chmod g+s /redhat/ [root@localhost ~]# [root@localhost ~]# su – user1 [user1@localhost ~]$ [user1@localhost ~]$ cd /redhat/ [user1@localhost redhat]$ [user1@localhost redhat]$ touch 2.txt [user1@localhost redhat]$ [user1@localhost redhat]$ ll total 0 -rw-rw-r– 1 user1 user1 0 Mar 1 : 1.txt -rw-rw-r– 1 user1 root 0 Mar 1 : 2.txt [user1@localhost redhat]$ 当我给redhat这个目录添加了一个sgid的权限以后,我们利用普通用户在redhat目录里面创建的文件的拥有组就变成了root了。 现在我们再来理解一下sgid的权限,当我们在redhat目录上面运用了sgid的权限,那么普通用户user1在redhat目录下面创建的文件的拥有组就会继承redhat目录本身的组,不会随着用户的改变而改变。 还有一点,和刚刚一样,如果有x权限,就会显示s,如果没有x权限,就会显示S。 3. sticky权限 Sticky只可以运用在目录上面 如果在一个目录上面运用了sticky权限,那么仅root用户和和文件的拥有人才能删除该目录中的文件。 现在我们通过一个试验来了解sticky权限。 [root@localhost ~]# [root@localhost ~]# ls -ld /redhat/ drwxrwxrwx 3 root root Mar 1 : /redhat/ [root@localhost ~]# Redhat目录的权限是,现在普通用户应该是可以向这个目录里面创建文件的,我们来试试。 [root@localhost ~]# [root@localhost ~]# su – user1 [user1@localhost ~]$ cd /redhat/ [user1@localhost redhat]$ touch 1.txt [user1@localhost redhat]$ ls 1.txt [user1@localhost redhat]$ 我们使用user1在这个目录中创建了一个1.txt的文件,那么我们的user2能否去删除这个文件呢,肯定是可以的,因为我们的目录权限是,所有我们的普通用户user2对这个目录是有w的权限的,有w权限就意味着可以在这个目录中创建和删除文件。我们试下, [root@localhost ~]# [root@localhost ~]# su – user2 [user2@localhost ~]$ [user2@localhost ~]$ cd /redhat/ [user2@localhost redhat]$ [user2@localhost redhat]$ ls 1.txt [user2@localhost redhat]$ rm -rf 1.txt [user2@localhost redhat]$ ls [user2@localhost redhat]$ OK,是没有问题的,我们的确可以删除由user1创建的文件1.txt。 现在我们给redhat目录添加一个sticky,看看会发生什么。 [root@localhost ~]# [root@localhost ~]# chmod o+t /redhat/ [root@localhost ~]# ls -ld /redhat/ drwxrwxrwt 2 root root Mar 1 : /redhat/ [root@localhost ~]# 可以看到,redhat目录已经添加了一个t的权限,这个就是sticky权限。 和上面一样,如果有x权限,就显示t。如果没有x权限,就显示T。 我们在使用user1创建一个文件,然后使用user2删除这个文件, [root@localhost ~]# [root@localhost ~]# su – user1 [user1@localhost ~]$ [user1@localhost ~]$ cd /redhat/ [user1@localhost redhat]$ [user1@localhost redhat]$ touch 2.txt [user1@localhost redhat]$ [user1@localhost redhat]$ ls 2.txt [user1@localhost redhat]$ su – user2 Password: [user2@localhost ~]$ cd /redhat/ [user2@localhost redhat]$ ls 2.txt [user2@localhost redhat]$ rm -rf 2.txt rm: cannot remove `2.txt’: Operation not permitted [user2@localhost redhat]$ 可以看到,现在我们使用user1创建的文件,user2是不可以删除的。 这个就是sticky权限的作用, 当一个redhat目录添加了一个sticky权限后,那么user1在redhat目录里面创建的2.txt文件,就只有root用户和user1才可以删除该文件。 在我们系统中有个目录就是运用了sticky权限。 [root@localhost ~]# [root@localhost ~]# ls -ld /tmp/ drwxrwxrwt root root Feb : /tmp/ [root@localhost ~]# 我们的/tmp目录默认就有了sticky权限。 我们的特殊权限也可以用数字来表示。 Suid 4 Sgid 2 Sticky 1 总结: Suid权限用在命令上面,而且只能用在用户上面。 Sgid权限用在命令和目录上面,而且只能用在组上面。 Sticky权限用在目录上面,而且只能用在其他人上面。 关于高级权限的问题就这么多,在里面还会有关于用户,组,权限的讨论。
推荐整理分享Linux 高级用户,组和权限介绍(linux高级选项),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:linux高级选项,linux高级用户密码,linux系统高级管理,linux高级用户密码,linux高级操作,linux高级用户密码,高级linux命令,linux高级权限,内容如对您有帮助,希望把文章链接给更多的朋友!
Linux 系统下各种包的安装方法分享 一、rpm包安装方式步骤:1、找到相应的软件包,比如soft.version.rpm,下载到本机某个目录;2、打开一个终端,su-成root用户;3、cdsoft.version.rpm所在的目录
Linux下手动设置Windows磁盘挂载点 Linux下手动设置Windows磁盘挂载点我的笔记本是同时装了Linux系统和Windows系统。Linux系统启动后,Windows磁盘就会自动挂载在/media目录下,而且挂载点的名
Linux系统下获取主板信息的方法 dmidecode取出的信息可能不是主板的唯一标识吧,我试一下/usr/sbin/dmidecode|grepSerialNumber在DELL的下面显示:SerialNumber:BQJ1XSerialNumber:..CNP.SerialNumber:B