首页 文章 精选 留言 我的

精选列表

搜索[linux操作系统],共10000篇文章
优秀的个人博客,低调大师

linux命令:sudo浅谈

sudo命令简介: 使得某一个用户作为另一个用户执行命令 1.配置文件为:/etc/sudoers 配置文件格式: 格式: who which_hosts=(runas) command who:表示哪一个用户 which_hosts:哪一个主机 runas:以什么用户身份执行 command:执行什么命令 查看sudo相关执行的日志文件为:/var/log/secure 对于多个用户,登陆多台服务器,以多个身份执行,多个命令,需定义别名: who:User_Alias 用户别名 which_hosts:Host_Alias 主机别名 runas:Runas_Alias 以什么用户身别名 command:Cmnd_Alias 命令别名 别名必须全部并且只能使用大写英文字母的组合: 用户别名定义格式: User_Alias USERADMIN = 系统用户名,%组名,还可以包含其它已经定义的用户别名 用户别名:可以包含:系统用户名,组名(格式:%组名),其它已定义的用户别名 中间以,隔开 主机别名定义格式: Host_Alias HOSTADMIN = 主机名,ip地址,网络地址段,其它已定义的主机别名 Runas_Alias别名格式: Runas_Alias RUNASNAME = 用户名,%组名,其它的已定义的Runas别名 Cmnd_Alias命令别名格式: Cmnd_Alias COMMANDNAME = 命令路径,目录(此目录内的所有命令),其它事先定义过的命令别名 Usage:使得hadoop用户可以执行所有主机的useradd usermod命令 vim /etc/sudoers 编辑sudo配置文档,在最后一行添加以下内容: hadoop ALL=(root) /usr/sbin/useradd,/usr/sbin/usermod 2.命令功能: 使得某一个用户作为另一个用户执行某台主机上的命令 3.命令参数: -l:列出当前用户可以使用的所有sudo类命令 -k:让认证信息失效 (默认sudo会记住密码5分钟) 添加标签: NOPASSWD: PASSWD: 4.命令实例: 1、使得hadoop用户可以执行所有主机的useradd usermod命令 vim /etc/sudoers 编辑sudo配置文档,在最后一行添加以下内容: hadoop ALL=(root) NOPASSWD: /usr/sbin/useradd,/usr/sbin/usermod NOPASSWD: 表示标签后的所有命令都不需要用密码 hadoop ALL=(root) NOPASSWD: /usr/sbin/useradd, PASSWD: /usr/sbin/usermod PASSWD:表示需要用密码, 2、使用别名方式启用sudoers配置文件 vim /etc/sudoers User_Alias USERADMIN = hadoop,%hadoop,%useradmin#表示hadoop用户,hadoop组,useradmin组 Cmnd_Alias USERADMINCMND = /usr/sbin/useradd,/usr/sbin/usermod,/user/bin/passwd [A-Za-z]*,! /usr/bin/passwd root#命令别名,表示可以通过sudo执行useradd usermod /user/bin/passwd [A-Za-z]* 表示执行passwd命令后面必须带至少一个字母 !/usr/bin/passwd root 表示不能执行passwd root 命令(!为取反)修改root用户密码 USERADMIN ALL=(root) NOPASSWD: USERADMINCMND [john@localhost root]$ sudo /usr/sbin/passwd root 口令: john is not in the sudoers file. This incident will be reported. [john@localhost ~]$ sudo /usr/bin/passwd Sorry, user john is not allowed to execute '/usr/bin/passwd' as root on localhost.localdomain. [john@localhost ~]$ sudo /usr/bin/passwd donggen Changing password for user donggen. New UNIX password: BAD PASSWORD: it is WAY too short Retype new UNIX password: passwd: all authentication tokens updated successfully. 本文转自wang650108151CTO博客,原文链接:http://blog.51cto.com/woyaoxuelinux/1887356,如需转载请自行联系原作者

优秀的个人博客,低调大师

linux下安装python

Android服务被设计用来执行很多操作,比如说,可以执行运行时间长的耗时操作,比较耗时的网络操作,甚至是在一个单独进程中的永不会结束的操作。实现这些操作之一是通过Android接口定义语言(AIDL)来完成的。AIDL被设计用来执行进程间通信,另一种实现方式见博文Android进程间的通信之Messenger。本文我们将学习如何创建AIDL文件实现Android进程间通信。在正式学习之前,我们先澄清一些“事实”。 关于Android Service 1、Android服务不是后台任务,它们默认只运行在你的app的主线程中 2、Android服务可以通过设置来运行在不同进程中 3、如果Android服务在不同进程中启动,你将不能使用通常的IBinder接口与其通信 AIDL:Android Interface Definition Language 为了在Android应用中实现进程间通信,我们需要在远端进程中定义一系列可被当前进程访问的方法。通过AIDL我们可以定义这样的一系列方法。AIDL就好像Java中的其它接口一样可以在其中定义一些抽象方法。我们首先需要创建一个以.aidl为后缀的文件并在里面定义所需的抽象方法。 AIDL的一个主要特征是,通过使用AIDL,我们可以在两个不同的应用中进行通信(其实Messenger也可以实现同样的操作,两者区别请见博文Android进程间的通信之Messenger);当然,如果你的应用不需要跟另外一个应用进行通信,那就尽量避免使用AIDL机制吧。aidl文件中定义的抽象方法中,只有一些原始数据类型以及一些基本数据类型如String,lists,maps等可以作为这些方法的参数,如果你想使用一个自定义类作为参数,那么你的自定义类必须实现Parcelable接口,并且该类要被导入AIDL文件中,这一点应该在单独的课程中进行讲解。本文只学习简单的AIDL用法。 AIDL实现思路 AIDL通过定义服务端暴露的接口,以提供给客户端来调用,AIDL使服务端可以并行处理(因此你可能需要考虑多线程并发访问的线程安全性问题)。通过编写aidl文件来设计想要暴露的接口,编译后会自动生成相应的Java文件,服务端将接口的具体实现写入Stub中,通过IBinder对象传递给客户端,客户端bindService时,通过asInterface方法将IBinder还原成接口,供客户端调用其中的方法。 简单示例 AndroidManifest.xml <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name"> <intent-filter> <actionandroid:name="android.intent.action.MAIN"/> <categoryandroid:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <serviceandroid:name=".BoundService"android:process=":custom_process"/> </application> IBoundService.aidl packageyf.exam.service.aidl; interfaceIBoundService{ intgetResult(inta,intb); } BoundService.java publicclassBoundServiceextendsService{ privateIBoundService.StubmBinder=newIBoundService.Stub(){ @Override publicintgetResult(inta,intb)throwsRemoteException{ returna+b; } }; @Override publicIBinderonBind(Intentintent){ returnmBinder; } } MainActivity.java publicclassMainActivityextendsActivity{ privateButtonbtn=null; privateIBoundServicemIBoundService; privatebooleanmServiceConnected=false; privateServiceConnectionconn=newServiceConnection(){ @Override publicvoidonServiceDisconnected(ComponentNamename){ mServiceConnected=false; } @Override publicvoidonServiceConnected(ComponentNamename,IBinderservice){ mIBoundService=IBoundService.Stub.asInterface(service); mServiceConnected=true; } }; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn=(Button)findViewById(R.id.button1); Intentintent=newIntent(this,BoundService.class); bindService(intent,conn,Context.BIND_AUTO_CREATE); btn.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ if(mServiceConnected){ try{ intresult=mIBoundService.getResult(2,4); Toast.makeText(MainActivity.this,"result="+result, Toast.LENGTH_SHORT).show(); }catch(RemoteExceptione){ e.printStackTrace(); } } } }); } @Override protectedvoidonDestroy(){ super.onDestroy(); if(mServiceConnected){ unbindService(conn); mServiceConnected=false; } } } 本文转自 zddnd 51CTO博客,原文链接:http://blog.51cto.com/13013666/1939696

优秀的个人博客,低调大师

docker linux redis 安装

1.docker redis 查询 docker search redis 2.下载 reids docker pull redis 3.启动 redis docker run -d -v /docker/redis/data:/data --name baoyou-redis -p 6379:6379 redis redis-server --appendonly yes -v /docker/redis/data:/data 存储aof 文件位置 持久化文件目录 --name baoyou-redis 容器名称 -p 6379:6379 暴露端口 --appendonly yes 持久化 4.启动redis-cli docker run -it --link baoyou-redis:redis --rm redis redis-cli -h redis -p 6379 --link baoyou-redis:redis 链接到自己的容器 5.重启容器 docker restart baoyou-redis 重启后持久化还存在 捐助开发者 在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。 个人主页:http://knight-black-bob.iteye.com/ 谢谢您的赞助,我会做的更好!

优秀的个人博客,低调大师

Linux环境变量

环境变量作用:切换文件夹,查找执行文件等等 查看环境变量 env 和 set 命令,区别set查找的变量包括自定义变量和bash接口 export 将自定义变量转化为环境变量,环境变量可以被继承 malan@malan-Lenovo-G470 ~ $ name=Bell malan@malan-Lenovo-G470 ~ $ echo $name Bell malan@malan-Lenovo-G470 ~ $ bash malan@malan-Lenovo-G470 ~ $ echo $name malan@malan-Lenovo-G470 ~ $ exit exit malan@malan-Lenovo-G470 ~ $ export name malan@malan-Lenovo-G470 ~ $ bash malan@malan-Lenovo-G470 ~ $ echo $name Bell malan@malan-Lenovo-G470 ~ $ 注:bash表示开启一个新的bash进程 exit表示退出当前bash 环境变量是从一些环境变量的配置文件里读取出来的,那我门上面通过export设置的环境变量在shell一旦重启后就没有了. 要想永久的改变环境变量,那就要在配置文件中来设置环境变量 环境变量配置文件修改后必须要重启shell后才会重新读取,而source命令可以使配置文件立即生效 malan@malan-Lenovo-G470 ~ $ source 配置文件 配置文件详解 #先区别login shell 和non-login shell login shell non-login shell 需要登录 不需要登录 /etc/profile 系统整体配置 ~/.bashrc ~/.bash_profile ~/.bash_login ~/.profile <用户个人文件> 以上三个文件只读取一个,从前到后的优先级 所以综上所属:以后在用户个人文件中来更改环境变量,然后使用source立即生效即可使用,对于login shell 和non-login shell注意配置文件的不同 malan@malan-Lenovo-G470 ~ $ cat .bashrc malan@malan-Lenovo-G470 ~ $ echo $name malan@malan-Lenovo-G470 ~ $ echo "export name=Bell" > .bashrc malan@malan-Lenovo-G470 ~ $ source .bashrc malan@malan-Lenovo-G470 ~ $ echo $name Bell 重启终端,依旧生效

优秀的个人博客,低调大师

解决linux中文乱码

今天突然发现有个服务器上面的php输出的日志乱码,然后我查看php也是乱码,我下载windows本地,显示正常,我ctrl+c然后ctrl+v到服务器,还是乱码,各种转换,都不行, 查看xshell编码,utf-8的 查看系统编码echo $LANG,显示是en_US.UTF-8 再用file命令查看php,提示是个php script文件,然后机智的我直接删掉了<?php >,只保留php内容,然后file查看,提示是utf8的,这么就尴尬了, 后来发现有个修改系统编码的博文是这么说的 vi /etc/profile export LC_ALL="zh_CN.GBK" export LANG="zh_CN.GBK" 然后我赶紧查看了下echo $LC_ALL 显示en_US 根据网上的另一个帖子是这么说的 locale的设定: LC_ALL和LANG优先级的关系: LC_ALL > LC_* >LANG 1、如果需要一个纯中文的系统的话,设定LC_ALL= zh_CN.XXXX,或者LANG=zh_CN.XXXX都可以。 2、如果只想要一个可以输入中文的环境,而保持菜单、标题,系统信息等等为英文界面,那么只需要设定 LC_CTYPE=zh_CN.XXXX,LANG=en_US.XXXX就可以了。 3、假如什么也不做的话,也就是LC_ALL,LANG和LC_*均不指定特定值的话,系统将采用POSIX作为lcoale,也就是C locale。 所以这个系统根本不支持中文, 虽然$LANG=en_US.UTF-8 把LC_ALL设置为空或者设置为en_US.UTF-8,不过看了下其他系统,我还是设置为了空

优秀的个人博客,低调大师

Linux关机重启命令

关机重启命令: shutdown [选项] 时间 选项: -c 取消前一个关机命令 -h 关机 -r 重启 例子: shutdown -r 05:30 & (&表示后台准备指定时间重启) #没法远程关机 可以远程重启 shutdown -hnow 立即关机 其它关机(都不安全):(halt) (poweroff) (init 0) 其它重启(reboot相对安全):(reboot) (init 6) 系统运行级别(0(关机)-6(重启)) 1、单用户 2、不完全多用户,不含有NSF服务 3、完全多用户 4、未分配 5、启动图形界面(前提装了图形界面) runlevel 查看当前系统上级运行级别和当前运行级别 #上一级别 当前级别 退出登录: logout(每次退出远程最好执行,不然会影响最大连接数目)

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册