apparmor-3.0.4/0000775000175000017500000000000014201060045011121 5ustar jjjjapparmor-3.0.4/changehat/0000775000175000017500000000000014201060045013043 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/0000775000175000017500000000000014201060045016233 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/0000775000175000017500000000000014201060045020172 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/Manifest0000664000175000017500000000003314201060045021657 0ustar jjjjMain-Class: ChangeHatValve apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/build.xml0000664000175000017500000000701714201060045022020 0ustar jjjj apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/Makefile0000664000175000017500000000222014201060045021626 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 1999, 2004, 2005, 2006 NOVELL (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- NAME = tomcat_apparmor all: COMMONDIR=../../../common/ include $(COMMONDIR)/Make.rules LIB = lib CATALINA_HOME = /usr/share/tomcat55 all: ant -Dcatalina_home=${CATALINA_HOME} -Dtarget=1.5 jar jni_so clean: ant clean install: ant -Dversion=$(VERSION) -Drelease=$(MAN_RELEASE) -Dcatalina_home=${CATALINA_HOME} -Dinstall_lib=${LIB} install_jar install_jni apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/README.tomcat_apparmor0000664000175000017500000001472514201060045024252 0ustar jjjj# ------------------------------------------------------------------ # # Copyright (C) 2002-2006 Novell/SUSE # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # ------------------------------------------------------------------ ---------------------- 1. Overview 2. Requirements 3. Compiling the code 4. Installation 5. Generating a basic Tomcat profile 6. Implementation Notes 7. Profile Generation Tools and change_hat 8. Feedback/Resources ----------------------- 1. Overview -------- This package provides an implementation of a Tomcat 5.0 Valve that calls out to the change_hat(2) function provided by libapparmor to allow a process to change its security context. Any feedback is greatly appreciated. 2. Requirements ------------ AppArmor version 1.2 or later Tomcat version 5.0.X JDK 1.4.2 or later 3. Compiling the Code ----------------- From the top level directory execute: ant jar jni_so This will create a jar file and a shared library (for the JNI interface to the libapparmor library) and place the jar file under dist/ and the shared library under src/jni_src. 4. Installation ------------ - Copy the jar file to $TOMCAT_HOME/server/lib: [SLES10 example] cp dist/changeHatValve.jar /usr/share/tomcat5/server/lib - Copy the shared library to somehere in your library search path: cp dist/libJNIChangeHat.so /usr/lib [Note: you must ensure that the target directory is passed to tomcat via the java.library.path propert. This can be accomplished by setting the JAVA_OPTS enviroment variable, export JAVA_OPTS=-Djava.library.path, or set via the env variable LD_LIBRARY_PATH to include this directory so that tomcat can find this library at startup] - Configure the Tomcat server to use ChangeHatValve: Place the configuration directive below in your server.xml file. The valve definition should be the initial configuration option declared in the top-level container in the container hierarchy. [Note: The mediationType attribute may be set to ServletPath or URI depending on the granularity of containers that you wish to create. URI will prompt the user to create containers for every URI it processes. This is not recommended for most deployment scenarios and so the default "ServletPath" should be used. This maps to containers identified by the ServletPath header defined in the HttpRequest.] - Defining a default and required hat for the tomcat profile Edit the file /etc/apparmor/logprof.conf and add the following line to the section [required_hats]: ^.+/catalina.sh$ = DEFAULT Edit the file /etc/apparmor/logprof.conf and add the following line to the section [default_hat]: ^.+/catalina.sh$ = DEFAULT 5. Generating a basic Tomcat profile ------------------------------- Once the installation steps above have been started you are ready to begin creating a profile for your application. The profile creation tool genprof will guide you through generating a profile and its support for change_hat will prompt you create discrete hats as requested byt the changeHatValve during tomcat execution. 1. Create a basic profile for the tomcat server. - Run the command "genprof PATH_TO_CATALINA.SH" - In a seperate window start tomcat and then stop tomcat - In the genprof window press "S" to scan for events - Answer the questions about the initial profile for tomcat 2. Extending the profile to include containers for your web-app - Stop the tomcat server - Deploy your WAR file or equivalent files under the container. - execute "genprof PATH_TO_CATALINA.SH" - In a seperate window start tomcat and then exercise your web application - In the genprof window press "S" to scan for events During the prompting you will be asked questions similar to: ----------------------------------------------- Profile: /usr/share/tomcat5/bin/catalina.sh Default Hat: DEFAULT Requested Hat: /servlet/CookieExample (A)dd Requested Hat / (U)se Default Hat / (D)eny / Abo(r)t / (F)inish ------------------------------------------------ This example shows the tomcat valve for changehat attempting to change to the hat "/servlet/CookieExample". You can choose to create this hat, and subsequently fill it with resources, use the Default hat, named "DEFAULT" and is the default hat for request processing. 6. Implementation Notes -------------------- - Selecting the hat during request processing This implementation follows the following pattern to decide what hat to execute in for an incoming request: Try #1: Request data (URI or ServletInfo) if #1 fails (because the hat does not exist) then try #2 Try #2: DEFAULT - this is the default hat for request processing if #2 fails (because of any error) then.. Error: report that change_hat calls failed and remain in current security context. - Java 1.4.2 Notes This library uses java.security.SecureRandom to generate random numbers used as cookies in the change_hat(2) interface. This class on java version 1.4.2 uses /dev/random which is a blocking call and can adversely effect performance. Java can be configured to use /dev/urandom instead. For details: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4705093 7. Profile Tools and change_hat ---------------------------- When using the profile generation tool, genprof, you will be prompted to add a new hat when you exercise your program and requests are processed by the changeHatValve. You can choose to Add the hat or use the Default hat. If you choose to add the requested hat: genprof will create the hat and then all subsequent resource requests will be mediated in this hew hat (or security context). If you choose to use the default hat: genprof will mediate all resource requests in the default hat for the duration of processing this request. When the request processng is complete the valve will change_hat back to the parent context. 8. Feedback/Resources ----------------- To provide feedback or ask questions please contact the apparmor-dev@forge.novell.com mail list. This is the development list for the AppArmor team. apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/0000775000175000017500000000000014201060045020761 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/jni_src/0000775000175000017500000000000014201060045022410 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/jni_src/JNIChangeHat.c0000664000175000017500000000270314201060045024741 0ustar jjjj/* ------------------------------------------------------------------ Copyright (C) 2002-2005 Novell/SUSE This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License published by the Free Software Foundation. ------------------------------------------------------------------ */ #include "jni.h" #include #include #include "com_novell_apparmor_JNIChangeHat.h" /* c intermediate lib call for Java -> JNI -> c library execution of the change_hat call */ JNIEXPORT jint Java_com_novell_apparmor_JNIChangeHat_changehat_1in (JNIEnv *env, jobject obj, jstring hatnameUTF, jint token) { int len; jint result = 0; if ( hatnameUTF == NULL ) { return ( EINVAL ); } len = (*env)->GetStringLength(env, hatnameUTF); if ( len > 0 ) { if ( len > 128 ) { len = 128; } char hatname[128]; (*env)->GetStringUTFRegion(env, hatnameUTF, 0, len, hatname); result = (jint) change_hat(hatname, (unsigned int) token); if ( result ) { return errno; } else { return result; } } return (jint) result; } JNIEXPORT jint JNICALL Java_com_novell_apparmor_JNIChangeHat_changehat_1out (JNIEnv *env, jobject obj, jint token) { jint result = 0; result = (jint) change_hat(NULL, (unsigned int) token); if ( result ) { return errno; } else { return result; } } apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/jni_src/Makefile0000664000175000017500000000263714201060045024060 0ustar jjjjTOP = ../.. CLASSPATH = ${TOP}/build LIB = lib/ LIBDIR = /usr/${LIB} INCLUDE = ${LIBDIR}/jvm/java/include CFLAGS = -g -O2 -Wall -Wstrict-prototypes -Wl,-soname,$@.${SO_VERS} -pipe -fpic -D_REENTRANT INCLUDES = -I$(INCLUDE) -I$(INCLUDE)/linux -I$(TOP)/../../../libraries/libapparmor/src/ CLASSFILE = ${CLASSPATH}/com/novell/apparmor/${JAVA_CLASSNAME}.class DESTDIR = ${TOP}/dist SO_VERS = 1 JAVA_CLASSNAME = JNIChangeHat TARGET = lib${JAVA_CLASSNAME} all: ${TARGET}.so clean: rm -f *.so *.so.${SO_VERS} ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h: ${CLASSFILE} javah -jni -classpath ${CLASSPATH} com.novell.apparmor.${JAVA_CLASSNAME} ${TARGET}.so: ${JAVA_CLASSNAME}.c ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h gcc ${INCLUDES} ${CFLAGS} -shared -o ${TARGET}.so ${JAVA_CLASSNAME}.c -L$(TOP)/../../../libraries/libapparmor/src/.libs -lapparmor install: ${TARGET}.so install -d $(DESTDIR)/${LIB} $(DESTDIR)${LIBDIR} mv -f $(TARGET).so $(TARGET)-$(VERSION)-$(RELEASE).so.$(SO_VERS) install -m 755 $(TARGET)-$(VERSION)-$(RELEASE).so.$(SO_VERS) ${DESTDIR}/${LIB} ln -sf /${LIB}/$(TARGET)-$(VERSION)-$(RELEASE).so.$(SO_VERS) ${DESTDIR}/${LIB}/$(TARGET).so.$(SO_VERS) ln -sf /${LIB}/$(TARGET).so.$(SO_VERS) ${DESTDIR}${LIBDIR}/$(TARGET).so apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/0000775000175000017500000000000014201060045021537 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/novell/0000775000175000017500000000000014201060045023036 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/novell/apparmor/0000775000175000017500000000000014201060045024657 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/novell/apparmor/catalina/0000775000175000017500000000000014201060045026433 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/novell/apparmor/catalina/valves/0000775000175000017500000000000014201060045027733 5ustar jjjj././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/novell/apparmor/catalina/valves/ChangeHatValve.javaapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/novell/apparmor/catalina/valves/ChangeHa0000664000175000017500000001453714201060045031326 0ustar jjjj/* ------------------------------------------------------------------ * * Copyright (C) 2002-2007 Novell/SUSE * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * ------------------------------------------------------------------ */ package com.novell.apparmor.catalina.valves; import com.novell.apparmor.JNIChangeHat; import java.io.IOException; import javax.servlet.ServletException; import org.apache.catalina.Container; import org.apache.catalina.valves.ValveBase; import java.security.SecureRandom; public final class ChangeHatValve extends ValveBase { // JNI interface class for AppArmor change_hat private static JNIChangeHat changehat_wrapper = new JNIChangeHat(); private static SecureRandom randomNumberGenerator = null; private static String DEFAULT_HAT = "DEFAULT"; private static int SERVLET_PATH_MEDIATION = 0; private static int URI_MEDIATION = 1; private int mediationType = ChangeHatValve.SERVLET_PATH_MEDIATION; /* * * Property setter called during the parsing of the server.xml. * If the mediationType is an attribute of the * Valve definition for * com.novell.apparmor.catalina.valves.ChangeHatValve * then this setter will be called to set the value for this property. * * @param type URI|ServletPath * * Controls what granularity of security confinement when used with * AppArmor change_hat(2). Either based upon getServletPath() * or getRequestURI() called against on the request. * */ public void setMediationType( String type ) { if ( type.equalsIgnoreCase("URI") ) { this.mediationType = ChangeHatValve.URI_MEDIATION; } else if ( type.equalsIgnoreCase("servletPath") ) { this.mediationType = ChangeHatValve.SERVLET_PATH_MEDIATION; } } /* * * Return an int value representing the currently configured * mediationType for this instance. * */ public int getMediationType() { return this.mediationType; } /* * * Return an instance of SecureRandom creating one if necessary * */ SecureRandom getRndGen() { if ( ChangeHatValve.randomNumberGenerator == null) { ChangeHatValve.randomNumberGenerator = new java.security.SecureRandom(); } return ChangeHatValve.randomNumberGenerator; } /* * * Call to return a random cookie from the SecureRandom PRNG * */ int getCookie() { SecureRandom rnd = getRndGen(); if ( rnd == null ) { this.getContainer().getLogger().error( "[APPARMOR] can't initialize SecureRandom for cookie" + " generation for change_hat() call."); return 0; } return rnd.nextInt(); } /* * * Call out to AppArmor change_hat(2) to change the security * context for the processing of the request by subsequent valves. * Returns to the current security context when processing is complete. * The security context that is chosen is govern by the * mediationType property - which can be set in the * server.xml file. * * @param request Request being processed * @param response Response being processed * @param context The valve context used to invoke the next valve * in the current processing pipeline * * @exception IOException if an input/output error has occurred * @exception ServletException if a servlet error has occurred * */ public void invoke( org.apache.catalina.connector.Request request, org.apache.catalina.connector.Response response ) throws IOException, ServletException { Container container = this.getContainer(); int cookie, result; boolean inSubHat = false; container.getLogger().debug(this.getClass().toString() + "[APPARMOR] Request received [" + request.getInfo() + "]"); String hatname = ChangeHatValve.DEFAULT_HAT;; if ( getMediationType() == ChangeHatValve.SERVLET_PATH_MEDIATION ) { hatname = request.getServletPath(); } else if ( getMediationType() == ChangeHatValve.URI_MEDIATION ) { hatname = request.getRequestURI(); } /* * Select the AppArmor container for this request: * * 1. try hat name from either URI or ServletPath * (based on configuration) * * 2. try hat name of the defined DEFAULT_HAT * * 3. run in the current AppArmor context */ cookie = getCookie(); if ( hatname == null || "".equals(hatname) ) { hatname = ChangeHatValve.DEFAULT_HAT; } container.getLogger().debug("[APPARMOR] ChangeHat to [" + hatname + "] cookie [" + cookie + "]"); result = changehat_wrapper.changehat_in(hatname, cookie); if ( result == JNIChangeHat.EPERM ) { container.getLogger().error("[APPARMOR] change_hat valve " + "configured but Tomcat process is not confined by an " + "AppArmor profile."); getNext().invoke(request, response); } else { if ( result == JNIChangeHat.EACCES ) { changehat_wrapper.changehat_out(cookie); result = changehat_wrapper.changehat_in(ChangeHatValve.DEFAULT_HAT, cookie); if ( result != 0 ) { changehat_wrapper.changehat_out(cookie); container.getLogger().error("[APPARMOR] ChangeHat to [" + hatname + "] failed. Running in parent context."); } else { inSubHat = true; } } else if ( result != 0 ) { changehat_wrapper.changehat_out(cookie); container.getLogger().error("[APPARMOR] ChangeHat to [" + hatname + "] failed. Running in parent context."); } else { inSubHat = true; } getNext().invoke(request, response); if ( inSubHat ) changehat_wrapper.changehat_out(cookie); } } } apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_5/src/com/novell/apparmor/JNIChangeHat.java0000664000175000017500000000201014201060045027676 0ustar jjjj/* ------------------------------------------------------------------ * * Copyright (C) 2002-2005 Novell/SUSE * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * ------------------------------------------------------------------ */ package com.novell.apparmor; import java.nio.*; /** * * JNI interface to AppArmor change_hat(2) call * **/ public class JNIChangeHat { public static int EPERM = 1; public static int ENOMEM = 12; public static int EACCES = 13; public static int EFAULT = 14; // Native 'c' function delcaration public native int changehat_in(String subdomain, int magic_token); // Native 'c' function delcaration public native int changehat_out(int magic_token); static { // The runtime system executes a class's static initializer // when it loads the class. System.loadLibrary("JNIChangeHat"); } } apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/0000775000175000017500000000000014201060045020165 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/Manifest0000664000175000017500000000003314201060045021652 0ustar jjjjMain-Class: ChangeHatValve apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/build.xml0000664000175000017500000000676214201060045022021 0ustar jjjj apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/Makefile0000664000175000017500000000221514201060045021625 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 1999, 2004, 2005, 2006 NOVELL (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- NAME = tomcat_apparmor all: COMMONDIR=../../../common/ include $(COMMONDIR)/Make.rules LIB = lib CATALINA_HOME = /usr/share/tomcat5 # By default build 1.4 bytecode all: ant -Dtarget=1.4 jar jni_so clean: ant clean install: ant -Dversion=$(VERSION) -Drelease=$(MAN_RELEASE) -Dcatalina_home=${CATALINA_HOME} -Dinstall_lib=${LIB} install_jar install_jni apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/README.tomcat_apparmor0000664000175000017500000001472514201060045024245 0ustar jjjj# ------------------------------------------------------------------ # # Copyright (C) 2002-2006 Novell/SUSE # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # ------------------------------------------------------------------ ---------------------- 1. Overview 2. Requirements 3. Compiling the code 4. Installation 5. Generating a basic Tomcat profile 6. Implementation Notes 7. Profile Generation Tools and change_hat 8. Feedback/Resources ----------------------- 1. Overview -------- This package provides an implementation of a Tomcat 5.0 Valve that calls out to the change_hat(2) function provided by libapparmor to allow a process to change its security context. Any feedback is greatly appreciated. 2. Requirements ------------ AppArmor version 1.2 or later Tomcat version 5.0.X JDK 1.4.2 or later 3. Compiling the Code ----------------- From the top level directory execute: ant jar jni_so This will create a jar file and a shared library (for the JNI interface to the libapparmor library) and place the jar file under dist/ and the shared library under src/jni_src. 4. Installation ------------ - Copy the jar file to $TOMCAT_HOME/server/lib: [SLES10 example] cp dist/changeHatValve.jar /usr/share/tomcat5/server/lib - Copy the shared library to somehere in your library search path: cp dist/libJNIChangeHat.so /usr/lib [Note: you must ensure that the target directory is passed to tomcat via the java.library.path propert. This can be accomplished by setting the JAVA_OPTS enviroment variable, export JAVA_OPTS=-Djava.library.path, or set via the env variable LD_LIBRARY_PATH to include this directory so that tomcat can find this library at startup] - Configure the Tomcat server to use ChangeHatValve: Place the configuration directive below in your server.xml file. The valve definition should be the initial configuration option declared in the top-level container in the container hierarchy. [Note: The mediationType attribute may be set to ServletPath or URI depending on the granularity of containers that you wish to create. URI will prompt the user to create containers for every URI it processes. This is not recommended for most deployment scenarios and so the default "ServletPath" should be used. This maps to containers identified by the ServletPath header defined in the HttpRequest.] - Defining a default and required hat for the tomcat profile Edit the file /etc/apparmor/logprof.conf and add the following line to the section [required_hats]: ^.+/catalina.sh$ = DEFAULT Edit the file /etc/apparmor/logprof.conf and add the following line to the section [default_hat]: ^.+/catalina.sh$ = DEFAULT 5. Generating a basic Tomcat profile ------------------------------- Once the installation steps above have been started you are ready to begin creating a profile for your application. The profile creation tool genprof will guide you through generating a profile and its support for change_hat will prompt you create discrete hats as requested byt the changeHatValve during tomcat execution. 1. Create a basic profile for the tomcat server. - Run the command "genprof PATH_TO_CATALINA.SH" - In a seperate window start tomcat and then stop tomcat - In the genprof window press "S" to scan for events - Answer the questions about the initial profile for tomcat 2. Extending the profile to include containers for your web-app - Stop the tomcat server - Deploy your WAR file or equivalent files under the container. - execute "genprof PATH_TO_CATALINA.SH" - In a seperate window start tomcat and then exercise your web application - In the genprof window press "S" to scan for events During the prompting you will be asked questions similar to: ----------------------------------------------- Profile: /usr/share/tomcat5/bin/catalina.sh Default Hat: DEFAULT Requested Hat: /servlet/CookieExample (A)dd Requested Hat / (U)se Default Hat / (D)eny / Abo(r)t / (F)inish ------------------------------------------------ This example shows the tomcat valve for changehat attempting to change to the hat "/servlet/CookieExample". You can choose to create this hat, and subsequently fill it with resources, use the Default hat, named "DEFAULT" and is the default hat for request processing. 6. Implementation Notes -------------------- - Selecting the hat during request processing This implementation follows the following pattern to decide what hat to execute in for an incoming request: Try #1: Request data (URI or ServletInfo) if #1 fails (because the hat does not exist) then try #2 Try #2: DEFAULT - this is the default hat for request processing if #2 fails (because of any error) then.. Error: report that change_hat calls failed and remain in current security context. - Java 1.4.2 Notes This library uses java.security.SecureRandom to generate random numbers used as cookies in the change_hat(2) interface. This class on java version 1.4.2 uses /dev/random which is a blocking call and can adversely effect performance. Java can be configured to use /dev/urandom instead. For details: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4705093 7. Profile Tools and change_hat ---------------------------- When using the profile generation tool, genprof, you will be prompted to add a new hat when you exercise your program and requests are processed by the changeHatValve. You can choose to Add the hat or use the Default hat. If you choose to add the requested hat: genprof will create the hat and then all subsequent resource requests will be mediated in this hew hat (or security context). If you choose to use the default hat: genprof will mediate all resource requests in the default hat for the duration of processing this request. When the request processng is complete the valve will change_hat back to the parent context. 8. Feedback/Resources ----------------- To provide feedback or ask questions please contact the apparmor-dev@forge.novell.com mail list. This is the development list for the AppArmor team. apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/0000775000175000017500000000000014201060045020754 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/jni_src/0000775000175000017500000000000014201060045022403 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/jni_src/JNIChangeHat.c0000664000175000017500000000270314201060045024734 0ustar jjjj/* ------------------------------------------------------------------ Copyright (C) 2002-2005 Novell/SUSE This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License published by the Free Software Foundation. ------------------------------------------------------------------ */ #include "jni.h" #include #include #include "com_novell_apparmor_JNIChangeHat.h" /* c intermediate lib call for Java -> JNI -> c library execution of the change_hat call */ JNIEXPORT jint Java_com_novell_apparmor_JNIChangeHat_changehat_1in (JNIEnv *env, jobject obj, jstring hatnameUTF, jint token) { int len; jint result = 0; if ( hatnameUTF == NULL ) { return ( EINVAL ); } len = (*env)->GetStringLength(env, hatnameUTF); if ( len > 0 ) { if ( len > 128 ) { len = 128; } char hatname[128]; (*env)->GetStringUTFRegion(env, hatnameUTF, 0, len, hatname); result = (jint) change_hat(hatname, (unsigned int) token); if ( result ) { return errno; } else { return result; } } return (jint) result; } JNIEXPORT jint JNICALL Java_com_novell_apparmor_JNIChangeHat_changehat_1out (JNIEnv *env, jobject obj, jint token) { jint result = 0; result = (jint) change_hat(NULL, (unsigned int) token); if ( result ) { return errno; } else { return result; } } apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/jni_src/Makefile0000664000175000017500000000236714201060045024053 0ustar jjjjINCLUDE=/usr/lib/jvm/java/include TOP=../.. CLASSPATH=${TOP}/build CFLAGS=-g -O2 -Wall -Wstrict-prototypes -Wl,-soname,$@.${SO_VERS} -pipe -fpic -D_REENTRANT INCLUDES=-I$(INCLUDE) -I$(INCLUDE)/linux CLASSFILE=${CLASSPATH}/com/novell/apparmor/${JAVA_CLASSNAME}.class DESTDIR=${TOP}/dist SO_VERS = 1 LIB = lib/ LIBDIR = /usr/${LIB} JAVA_CLASSNAME=JNIChangeHat TARGET=lib${JAVA_CLASSNAME} all: ${TARGET}.so clean: rm -f *.so *.so.${SO_VERS} ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h: ${CLASSFILE} javah -jni -classpath ${CLASSPATH} com.novell.apparmor.${JAVA_CLASSNAME} ${TARGET}.so: ${JAVA_CLASSNAME}.c ${JAVA_CLASSNAME}.java com_novell_apparmor_${JAVA_CLASSNAME}.h gcc ${INCLUDES} ${CFLAGS} -shared -o ${TARGET}.so ${JAVA_CLASSNAME}.c -lapparmor install: ${TARGET}.so install -d $(DESTDIR)/${LIB} $(DESTDIR)${LIBDIR} mv -f $(TARGET).so $(TARGET)-$(VERSION)-$(RELEASE).so.$(SO_VERS) install -m 755 $(TARGET)-$(VERSION)-$(RELEASE).so.$(SO_VERS) ${DESTDIR}/${LIB} ln -sf /${LIB}/$(TARGET)-$(VERSION)-$(RELEASE).so.$(SO_VERS) ${DESTDIR}/${LIB}/$(TARGET).so.$(SO_VERS) ln -sf /${LIB}/$(TARGET).so.$(SO_VERS) ${DESTDIR}${LIBDIR}/$(TARGET).so apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/0000775000175000017500000000000014201060045021532 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/novell/0000775000175000017500000000000014201060045023031 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/novell/apparmor/0000775000175000017500000000000014201060045024652 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/novell/apparmor/catalina/0000775000175000017500000000000014201060045026426 5ustar jjjjapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/novell/apparmor/catalina/valves/0000775000175000017500000000000014201060045027726 5ustar jjjj././@LongLink0000644000000000000000000000016000000000000011600 Lustar rootrootapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/novell/apparmor/catalina/valves/ChangeHatValve.javaapparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/novell/apparmor/catalina/valves/ChangeHa0000664000175000017500000001642214201060045031314 0ustar jjjj/* ------------------------------------------------------------------ * * Copyright (C) 2002-2005 Novell/SUSE * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * ------------------------------------------------------------------ */ package com.novell.apparmor.catalina.valves; import com.novell.apparmor.JNIChangeHat; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.apache.catalina.HttpRequest; import org.apache.catalina.Container; import org.apache.catalina.HttpResponse; import org.apache.catalina.valves.ValveBase; import java.security.SecureRandom; public final class ChangeHatValve extends ValveBase { // JNI interface class for AppArmor change_hat private static JNIChangeHat changehat_wrapper = new JNIChangeHat(); private static SecureRandom randomNumberGenerator = null; private static String DEFAULT_HAT = "DEFAULT"; private static int SERVLET_PATH_MEDIATION = 0; private static int URI_MEDIATION = 1; private int mediationType = ChangeHatValve.SERVLET_PATH_MEDIATION; /* * * Property setter called during the parsing of the server.xml. * If the mediationType is an attribute of the * Valve definition for * com.novell.apparmor.catalina.valves.ChangeHatValve * then this setter will be called to set the value for this property. * * @param type URI|ServletPath * * Controls what granularity of security confinement when used with * AppArmor change_hat(2). Either based upon getServletPath() * or getRequestURI() called against on the request. * */ public void setMediationType( String type ) { if ( type.equalsIgnoreCase("URI") ) { this.mediationType = ChangeHatValve.URI_MEDIATION; } else if ( type.equalsIgnoreCase("servletPath") ) { this.mediationType = ChangeHatValve.SERVLET_PATH_MEDIATION; } } /* * * Return an int value representing the currently configured * mediationType for this instance. * */ int getMediationType() { return this.mediationType; } /* * * Return an instance of SecureRandom creating one if necessary * */ SecureRandom getRndGen() { if ( ChangeHatValve.randomNumberGenerator == null) { ChangeHatValve.randomNumberGenerator = new java.security.SecureRandom(); } return ChangeHatValve.randomNumberGenerator; } /* * * Call to return a random cookie from the SecureRandom PRNG * */ int getCookie() { SecureRandom rnd = getRndGen(); if ( rnd == null ) { this.getContainer().getLogger().log( "[APPARMOR] can't initialize SecureRandom for cookie generation for change_hat() call.", container.getLogger().ERROR); return 0; } return rnd.nextInt(); } /* * * Call out to AppArmor change_hat(2) to change the security * context for the processing of the request by subsequent valves. * Returns to the current security context when processing is complete. * The security context that is chosen is govern by the * mediationType property - which can be set in the * server.xml file. * * @param request Request being processed * @param response Response being processed * @param context The valve context used to invoke the next valve * in the current processing pipeline * * @exception IOException if an input/output error has occurred * @exception ServletException if a servlet error has occurred * */ public void invoke( org.apache.catalina.Request request, org.apache.catalina.Response response, org.apache.catalina.ValveContext context ) throws IOException, ServletException { Container container = this.getContainer(); int cookie, result; boolean inSubHat = false; container.getLogger().log(this.getClass().toString() + "[APPARMOR] Request received [" + request.getInfo() + "]", container.getLogger().DEBUG); if ( !( request instanceof HttpRequest) || !(response instanceof HttpResponse) ) { container.getLogger().log(this.getClass().toString() + "[APPARMOR] Non HttpRequest received. Not changing context. " + "[" + request.getInfo() + "]", container.getLogger().ERROR); context.invokeNext(request, response); return; } HttpRequest httpRequest = (HttpRequest) request; HttpServletRequest servletRequest = (HttpServletRequest) httpRequest.getRequest(); String hatname = ChangeHatValve.DEFAULT_HAT;; if ( getMediationType() == ChangeHatValve.SERVLET_PATH_MEDIATION ) { hatname = servletRequest.getServletPath(); } else if ( getMediationType() == ChangeHatValve.URI_MEDIATION ) { hatname = servletRequest.getRequestURI(); } /* * Select the AppArmor container for this request: * * 1. try hat name from either URI or ServletPath * (based on configuration) * * 2. try hat name of the defined DEFAULT_HAT * * 3. run in the current AppArmor context */ cookie = getCookie(); if ( hatname == null || "".equals(hatname) ) { hatname = ChangeHatValve.DEFAULT_HAT; } container.getLogger().log("[APPARMOR] ChangeHat to [" + hatname + "] cookie [" + cookie + "]", container.getLogger().DEBUG); result = changehat_wrapper.changehat_in(hatname, cookie); if ( result == JNIChangeHat.EPERM ) { container.getLogger().log("[APPARMOR] change_hat valve " + "configured but Tomcat process is not confined by an " + "AppArmor profile.", container.getLogger().ERROR); context.invokeNext(request, response); } else { if ( result == JNIChangeHat.EACCES ) { changehat_wrapper.changehat_out(cookie); result = changehat_wrapper.changehat_in(ChangeHatValve.DEFAULT_HAT, cookie); if ( result != 0 ) { changehat_wrapper.changehat_out(cookie); container.getLogger().log("[APPARMOR] ChangeHat to [" + hatname + "] failed. Running in parent context.", container.getLogger().ERROR); } else { inSubHat = true; } } else if ( result != 0 ) { changehat_wrapper.changehat_out(cookie); container.getLogger().log("[APPARMOR] ChangeHat to [" + hatname + "] failed. Running in parent context.", container.getLogger().ERROR); } else { inSubHat = true; } context.invokeNext(request, response); if ( inSubHat ) changehat_wrapper.changehat_out(cookie); } } } apparmor-3.0.4/changehat/tomcat_apparmor/tomcat_5_0/src/com/novell/apparmor/JNIChangeHat.java0000664000175000017500000000201014201060045027671 0ustar jjjj/* ------------------------------------------------------------------ * * Copyright (C) 2002-2005 Novell/SUSE * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * ------------------------------------------------------------------ */ package com.novell.apparmor; import java.nio.*; /** * * JNI interface to AppArmor change_hat(2) call * **/ public class JNIChangeHat { public static int EPERM = 1; public static int ENOMEM = 12; public static int EACCES = 13; public static int EFAULT = 14; // Native 'c' function delcaration public native int changehat_in(String subdomain, int magic_token); // Native 'c' function delcaration public native int changehat_out(int magic_token); static { // The runtime system executes a class's static initializer // when it loads the class. System.loadLibrary("JNIChangeHat"); } } apparmor-3.0.4/changehat/pam_apparmor/0000775000175000017500000000000014201060045015521 5ustar jjjjapparmor-3.0.4/changehat/pam_apparmor/README0000664000175000017500000000640614201060045016407 0ustar jjjjpam_apparmor - a (linux specific) PAM module to add support for apparmor's subprocess confinement. An apparmor profile applies to an executable program; if a portion of the program needs different access permissions than other portions, the program can "change hats" via change_hat(2) to a different role, also known as a subprofile. The pam_apparmor PAM module allows applications to confine authenticated users into subprofiles based on groupnames, usernames, or a default profile. To accomplish this, pam_apparmor needs to be registered as a PAM session module. Compiling pam_apparmor ---------------------- The pam-development libraries and libapparmor need to be installed on the build system. 'make' should be all that is needed to build pam_apparmor.so; 'make rpm' should work on RPM-based systems. Configuring pam_apparmor ------------------------ To add pam_apparmor support to a pam enabled application, add a line like the following to the pam configuration file for the application (usually stored in /etc/pam.d/): session optional pam_apparmor.so Likely you will want add the pam_apparmor after other session management modules. If you make the pam_apparmor module 'required' instead of 'optional', the session will abort if pam_apparmor is not able to successfully find a hat to change_hat into. Be careful when making it required; it is possible to cause all attempted logins to the service to fail if the apparmor policy is insufficient. By default, pam_apparmor will attempt to change_hat into a hat based on the primary group name of the user logging in. If that hat fails to exist, the module will attempt to change_hat into a hat named DEFAULT (it is recommended to ensure this hat exists in the apparmor profiles for applications using pam_apparmor). However, this is configurable by adding an option to the pam configuration line to modify what order and what attributes pam_apparmor will attempt to use when attempting to change_hat. To do so, add 'order=' followed by a comma separated list of types of hats to try. The type of hats available are: * 'user' - the username will be used as the hatname * 'group' - the primary group will be used as the hatname * 'default' - the string 'DEFAULT' will be used as the hatname. Generally, this should be the hat of last resort. The order in the list determines the order the hat will be attempted. Some example configurations: # the default behavior session optional pam_apparmor.so order=group,default # attempt to use only the username session optional pam_apparmor.so order=user # use the username, followed by the primary groupname, followed by # DEFAULT if the prior hats do not exist in the apparmor profile session optional pam_apparmor.so order=user,group,default You can also add a 'debug' flag to the pam_apparmor session line; this will cause the pam module to report more of what it is attempting to do to syslog. References ---------- Project webpage: http://developer.novell.com/wiki/index.php/Novell_AppArmor To provide feedback or ask questions please contact the apparmor-dev@forge.novell.com mail list. This is the development list for the AppArmor team. See also: change_hat(3), and the Linux-PAM online documentation at http://www.kernel.org/pub/linux/libs/pam/Linux-PAM-html/ apparmor-3.0.4/changehat/pam_apparmor/pam_apparmor.h0000664000175000017500000000424014201060045020350 0ustar jjjj/* pam_apparmor module */ /* * Written by Jesse Michael 2006/08/24 * and Steve Beattie 2006/10/25 * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, and the entire permission notice in its entirety, * including the disclaimer of warranties. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote * products derived from this software without specific prior * written permission. * * ALTERNATIVELY, this product may be distributed under the terms of * the GNU Public License, in which case the provisions of the GPL are * required INSTEAD OF the above restrictions. (This clause is * necessary due to a potential bad interaction between the GPL and * the restrictions contained in a BSD-style copyright.) * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ enum hat_t { eNoEntry, eUsername, eGroupname, eDefault, }; typedef enum hat_t hat_t; #define MAX_HAT_TYPES 3 struct config { hat_t hat_type[MAX_HAT_TYPES]; }; extern int debug_flag; extern int get_options(pam_handle_t *pamh, struct config **config, int argc, const char **argv); apparmor-3.0.4/changehat/pam_apparmor/Makefile0000664000175000017500000000641314201060045017165 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 1999, 2004, 2005 NOVELL (All rights reserved) # Copyright (c) 2016 Canonical, Ltd. # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- NAME=pam_apparmor all: COMMONDIR=../../common/ include $(COMMONDIR)/Make.rules ifdef USE_SYSTEM LIBAPPARMOR = $(shell if pkg-config --exists libapparmor ; then \ pkg-config --silence-errors --libs libapparmor ; \ elif ldconfig -p | grep -q libapparmor\.so$$ ; then \ echo -lapparmor ; \ fi ) ifeq ($(strip $(LIBAPPARMOR)),) ERROR_MESSAGE = $(error ${nl}\ ************************************************************************${nl}\ Unable to find libapparmor installed on this system; either${nl}\ install libapparmor devel packages, set the LIBAPPARMOR variable${nl}\ manually, or build against in-tree libapparmor.${nl}\ ************************************************************************${nl}) endif LIBAPPARMOR_INCLUDE = AA_LDLIBS = $(LIBAPPARMOR) AA_LINK_FLAGS = else LIBAPPARMOR_SRC := ../../libraries/libapparmor/ LIBAPPARMOR_INCLUDE_PATH = $(LIBAPPARMOR_SRC)/include LIBAPPARMOR_PATH := $(LIBAPPARMOR_SRC)/src/.libs/ ifeq ($(realpath $(LIBAPPARMOR_PATH)/libapparmor.a),) ERROR_MESSAGE = $(error ${nl}\ ************************************************************************${nl}\ $(LIBAPPARMOR_PATH)/libapparmor.a is missing; either build against${nl}\ the in-tree libapparmor by building it first and then trying again${nl}\ (see the top-level README for help) or build against the system${nl}\ libapparmor by adding USE_SYSTEM=1 to your make command.${nl}\ ************************************************************************${nl}) endif LIBAPPARMOR_INCLUDE = -I$(LIBAPPARMOR_INCLUDE_PATH) AA_LINK_FLAGS = -L$(LIBAPPARMOR_PATH) AA_LDLIBS = -lapparmor endif EXTRA_CFLAGS=$(CFLAGS) $(CPPFLAGS) -fPIC -shared -Wall $(EXTRA_WARNINGS) $(LIBAPPARMOR_INCLUDE) LINK_FLAGS=-Xlinker -x $(AA_LINK_FLAGS) $(LDFLAGS) LIBS=-lpam $(AA_LDLIBS) OBJECTS=${NAME}.o get_options.o .PHONY: libapparmor_check .SILENT: libapparmor_check libapparmor_check: ; $(ERROR_MESSAGE) all: libapparmor_check $(NAME).so docs .PHONY: docs # docs: we should have some docs: $(NAME).so: ${OBJECTS} $(CC) $(EXTRA_CFLAGS) $(LINK_FLAGS) -o $@ ${OBJECTS} $(LIBS) %.o: %.c $(CC) $(EXTRA_CFLAGS) -c -o $@ $< # need some better way of determining this DESTDIR=/ SECDIR ?= ${DESTDIR}/lib/security .PHONY: install install: $(NAME).so install -m 755 -d $(SECDIR) install -m 755 $(NAME).so $(SECDIR)/ .PHONY: clean clean: rm -f core core.* *.so *.o *.s *.a *~ apparmor-3.0.4/changehat/pam_apparmor/pam_apparmor.changes0000664000175000017500000000306514201060045021535 0ustar jjjj------------------------------------------------------------------- Mon Jul 30 08:16:39 CEST 2007 - sbeattie@suse.de - Convert libapparmor builddep to libapparmor-devel ------------------------------------------------------------------- Tue Mar 13 10:27:34 PDT 2007 - jmichael@suse.de - Use pam_modutil_* wrapper functions when possible ------------------------------------------------------------------- Tue Oct 31 12:00:00 UTC 2006 - jmichael@suse.de - Add debug option ------------------------------------------------------------------- Tue Oct 31 12:00:00 UTC 2006 - sbeattie@suse.de - Add configuration options to order attempted hat changes ------------------------------------------------------------------- Wed Oct 25 12:00:00 UTC 2006 - sbeattie@suse.de - remove auto-editing of pam's common-session - honor RPM's CFLAGS when building - add license (same as Linux PAM package). ------------------------------------------------------------------- Thu Sep 14 12:00:00 UTC 2006 - jmichael@suse.de - header comment was incorrect - use pam_get_user() instead of pam_get_item() - fix read from urandom if 0 ------------------------------------------------------------------- Fri Jan 13 12:00:00 UTC 2006 - sbeattie@suse.de - Add svn repo number to tarball ------------------------------------------------------------------- Fri Jan 13 12:00:00 UTC 2006 - jmichael@suse.de - Make magic tokens harder to guess by pulling them from /dev/urandom ------------------------------------------------------------------- Wed Dec 21 10:31:40 PST 2005 - jmichael@suse.de - initial apparmor-3.0.4/changehat/pam_apparmor/pam_apparmor.c0000664000175000017500000001337414201060045020353 0ustar jjjj/* pam_apparmor module */ /* * Copyright (c) 2006 * NOVELL (All rights reserved) * * Copyright (c) 2010 * Canonical, Ltd. (All rights reserved) * * Written by Jesse Michael 2006/08/24 * and Steve Beattie 2006/10/25 * * Based off of pam_motd by: * Ben Collins 2005/10/04 * Michael K. Johnson 1996/10/24 * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include /* * here, we make a definition for the externally accessible function * in this file (this definition is required for static a module * but strongly encouraged generally) it is used to instruct the * modules include file to define the function prototypes. */ #define PAM_SM_SESSION #include #include "pam_apparmor.h" int debug_flag = 0; #ifndef unused_ #define unused_ __attribute__ ((unused)) #endif static struct config default_config = { .hat_type[0] = eGroupname, .hat_type[1] = eDefault, .hat_type[2] = eNoEntry, }; /* --- session management functions (only) --- */ PAM_EXTERN int pam_sm_close_session (unused_ pam_handle_t *pamh, unused_ int flags, unused_ int argc, unused_ const char **argv) { return PAM_IGNORE; } PAM_EXTERN int pam_sm_open_session(pam_handle_t *pamh, unused_ int flags, int argc, const char **argv) { int fd, retval, pam_retval = PAM_SUCCESS; unsigned int magic_token; const char *user; struct passwd *pw; struct group *gr; struct config *config = NULL; int i; if ((retval = get_options(pamh, &config, argc, argv)) != 0) return retval; if (!config) config = &default_config; /* grab the target user name */ retval = pam_get_user(pamh, &user, NULL); if (retval != PAM_SUCCESS || user == NULL || *user == '\0') { pam_syslog(pamh, LOG_ERR, "Can't determine user\n"); return PAM_USER_UNKNOWN; } pw = pam_modutil_getpwnam(pamh, user); if (!pw) { pam_syslog(pamh, LOG_ERR, "Can't determine group for user %s\n", user); return PAM_PERM_DENIED; } gr = pam_modutil_getgrgid(pamh, pw->pw_gid); if (!gr || !gr->gr_name) { pam_syslog(pamh, LOG_ERR, "Can't read info for group %d\n", pw->pw_gid); return PAM_PERM_DENIED; } fd = open("/dev/urandom", O_RDONLY); if (fd < 0) { pam_syslog(pamh, LOG_ERR, "Can't open /dev/urandom\n"); return PAM_PERM_DENIED; } /* the magic token needs to be non-zero otherwise, we won't be able * to probe for hats */ do { retval = pam_modutil_read(fd, (void *)&magic_token, sizeof(magic_token)); if (retval < 0) { pam_syslog(pamh, LOG_ERR, "Can't read from /dev/urandom\n"); close(fd); return PAM_PERM_DENIED; } } while ((magic_token == 0) || (retval != sizeof(magic_token))); close(fd); pam_retval = PAM_SUCCESS; for (i = 0; i < MAX_HAT_TYPES && config->hat_type[i] != eNoEntry; i++) { const char *hat = NULL; switch (config->hat_type[i]) { case eGroupname: hat = gr->gr_name; if (debug_flag) pam_syslog(pamh, LOG_DEBUG, "Using groupname '%s'\n", hat); break; case eUsername: hat = user; if (debug_flag) pam_syslog(pamh, LOG_DEBUG, "Using username '%s'\n", hat); break; case eDefault: if (debug_flag) pam_syslog(pamh, LOG_DEBUG, "Using DEFAULT\n"); hat = "DEFAULT"; break; default: pam_syslog(pamh, LOG_ERR, "Unknown value in hat table: %x\n", config->hat_type[i]); goto nodefault; break; } retval = change_hat(hat, magic_token); if (retval == 0) { /* success, let's bail */ if (debug_flag) pam_syslog(pamh, LOG_DEBUG, "Successfully changed to hat '%s'\n", hat); goto out; } switch (errno) { /* case EPERM: */ /* Can't enable until ECHILD patch gets accepted, and we can * distinguish between unconfined and confined-but-no-hats */ case EINVAL: /* apparmor is not loaded or application is unconfined, * stop attempting to use change_hat */ if (debug_flag) pam_syslog(pamh, LOG_DEBUG, "AppArmor not loaded, or application is unconfined\n"); pam_retval = PAM_SUCCESS; goto out; break; case ECHILD: /* application is confined but has no hats, * stop attempting to use change_hat */ goto nodefault; break; case EACCES: case ENOENT: /* failed to change into attempted hat, so we'll * jump back out and try the next one */ break; default: pam_syslog(pamh, LOG_ERR, "Unknown error occurred changing to %s hat: %s\n", hat, strerror(errno)); /* give up? */ pam_retval = PAM_SYSTEM_ERR; goto out; } retval = change_hat(NULL, magic_token); if (retval != 0) { /* changing into the specific hat and attempting to * jump back out both failed. that most likely * means that either apparmor is not loaded or we * don't have a profile loaded for this application. * in this case, we want to allow the pam operation * to succeed. */ goto out; } } nodefault: /* if we got here, we were unable to change into any of the hats * we attempted. */ pam_syslog(pamh, LOG_ERR, "Can't change to any hat\n"); pam_retval = PAM_SESSION_ERR; out: /* zero out the magic token so an attacker wouldn't be able to * just grab it out of process memory and instead would need to * brute force it */ memset(&magic_token, 0, sizeof(magic_token)); if (config && config != &default_config) free(config); return pam_retval; } #ifdef PAM_STATIC /* static module data */ struct pam_module _pam_apparmor_modstruct = { "pam_apparmor", NULL, NULL, NULL, pam_sm_open_session, pam_sm_close_session, NULL, }; #endif /* end of module definition */ apparmor-3.0.4/changehat/pam_apparmor/get_options.c0000664000175000017500000001105714201060045020223 0ustar jjjj/* * Written by Steve Beattie 2006/10/25 * * Modeled after the option parsing code in pam_unix2 by: * Copyright (c) 2006 SUSE Linux Products GmbH, Nuernberg, Germany. * Copyright (c) 2002, 2003, 2004 SuSE GmbH Nuernberg, Germany. * Author: Thorsten Kukuk * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, and the entire permission notice in its entirety, * including the disclaimer of warranties. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote * products derived from this software without specific prior * written permission. * * ALTERNATIVELY, this product may be distributed under the terms of * the GNU Public License, in which case the provisions of the GPL are * required INSTEAD OF the above restrictions. (This clause is * necessary due to a potential bad interaction between the GPL and * the restrictions contained in a BSD-style copyright.) * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */ #define _GNU_SOURCE /* for strndup() */ #include #include #include #include #include #include #define PAM_SM_SESSION #include #include "pam_apparmor.h" #define DEBUG_STRING "debug" #define ORDER_PREFIX "order=" static int parse_option(pam_handle_t *pamh, struct config **config, const char *argv) { const char *opts; if (argv == NULL || argv[0] == '\0') return 0; if (strcasecmp(argv, DEBUG_STRING) == 0) { debug_flag = 1; return 0; } else if (strncasecmp(argv, ORDER_PREFIX, strlen(ORDER_PREFIX)) != 0) { pam_syslog (pamh, LOG_ERR, "Unknown option: `%s'\n", argv); return PAM_SESSION_ERR; } opts = argv + strlen(ORDER_PREFIX); while (*opts != '\0') { hat_t hat; char *opt, *comma; int i; comma = index(opts, ','); if (comma) opt = strndup(opts, comma - opts); else opt = strdup(opts); if (!opt) { pam_syslog(pamh, LOG_ERR, "Memory allocation error: %s", strerror(errno)); return PAM_SESSION_ERR; } if (strcasecmp(opt, "group") == 0) hat = eGroupname; else if (strcasecmp(opt, "user") == 0) hat = eUsername; else if (strcasecmp(opt, "default") == 0) hat = eDefault; else { pam_syslog (pamh, LOG_ERR, "Unknown option: `%s'\n", opt); free(opt); return PAM_SESSION_ERR; } if (!(*config)) { struct config *new_cfg = malloc(sizeof(**config)); if (!new_cfg) { pam_syslog(pamh, LOG_ERR, "Memory allocation error: %s", strerror(errno)); free(opt); return PAM_SESSION_ERR; } new_cfg->hat_type[0] = eNoEntry; new_cfg->hat_type[1] = eNoEntry; new_cfg->hat_type[2] = eNoEntry; (*config) = new_cfg; } /* Find free table entry, looking for duplicates */ for (i = 0; i < MAX_HAT_TYPES && (*config)->hat_type[i] != eNoEntry; i++) { if ((*config)->hat_type[i] == hat) { pam_syslog(pamh, LOG_ERR, "Duplicate hat type: %s\n", opt); free(opt); free(*config); (*config) = NULL; return PAM_SESSION_ERR; } } if (i >= MAX_HAT_TYPES) { pam_syslog(pamh, LOG_ERR, "Unable to add hat type '%s'\n", opt); return PAM_SESSION_ERR; } (*config)->hat_type[i] = hat; free(opt); if (comma) opts = comma + 1; else opts += strlen(opts); } return 0; } int get_options(pam_handle_t *pamh, struct config **config, int argc, const char **argv) { int retval = 0; /* Parse parameters for module */ for ( ; argc-- > 0; argv++) { int rc = parse_option(pamh, config, *argv); if (rc != 0) retval = rc; } return retval; } apparmor-3.0.4/changehat/pam_apparmor/COPYING0000664000175000017500000000374014201060045016560 0ustar jjjjThe pam_apparmor package is licensed under the same license as Linux-PAM , quoted below: ------------------------------------------------------------------------- Redistribution and use in source and binary forms of Linux-PAM, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain any existing copyright notice, and this entire permission notice in its entirety, including the disclaimer of warranties. 2. Redistributions in binary form must reproduce all prior and current copyright notices, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The name of any author may not be used to endorse or promote products derived from this software without their specific prior written permission. ALTERNATIVELY, this product may be distributed under the terms of the GNU General Public License, in which case the provisions of the GNU GPL are required INSTEAD OF the above restrictions. (This clause is necessary due to a potential conflict between the GNU GPL and the restrictions contained in a BSD-style copyright.) THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ------------------------------------------------------------------------- apparmor-3.0.4/changehat/mod_apparmor/0000775000175000017500000000000014201060303015520 5ustar jjjjapparmor-3.0.4/changehat/mod_apparmor/mod_apparmor.c0000664000175000017500000003340414201060045020353 0ustar jjjj/* * Copyright (c) 2004, 2005, 2006 NOVELL (All rights reserved) * Copyright (c) 2014 Canonical, Ltd. (All rights reserved) * * The mod_apparmor module is licensed under the terms of the GNU * Lesser General Public License, version 2.1. Please see the file * COPYING.LGPL. * * mod_apparmor - (apache 2.0.x) * Author: Steve Beattie * * This currently only implements change_hat functionality, but could be * extended for other stuff we decide to do. */ #include "ap_config.h" #include "httpd.h" #include "http_config.h" #include "http_request.h" #include "http_log.h" #include "http_main.h" #include "http_protocol.h" #include "util_filter.h" #include "apr.h" #include "apr_strings.h" #include "apr_lib.h" #include #include /* #define DEBUG */ #ifndef unused_ #define unused_ __attribute__ ((unused)) #endif /* should the following be configurable? */ #define DEFAULT_HAT "HANDLING_UNTRUSTED_INPUT" #define DEFAULT_URI_HAT "DEFAULT_URI" /* Compatibility with apache 2.2 */ #if AP_SERVER_MAJORVERSION_NUMBER == 2 && AP_SERVER_MINORVERSION_NUMBER < 3 #define APLOG_TRACE1 APLOG_DEBUG server_rec *ap_server_conf = NULL; #endif #ifdef APLOG_USE_MODULE APLOG_USE_MODULE(apparmor); #endif module AP_MODULE_DECLARE_DATA apparmor_module; static unsigned long magic_token = 0; static int inside_default_hat = 0; typedef struct { const char *hat_name; char *path; } apparmor_dir_cfg; typedef struct { const char *hat_name; int is_initialized; } apparmor_srv_cfg; /* aa_init() gets invoked in the post_config stage of apache. * Unfortunately, apache reads its config once when it starts up, then * it re-reads it when goes into its restart loop, where it starts it's * children. This means we cannot call change_hat here, as the modules * memory will be wiped out, and the magic_token will be lost, so apache * wouldn't be able to change_hat back out. */ static int aa_init(apr_pool_t *p, unused_ apr_pool_t *plog, unused_ apr_pool_t *ptemp, unused_ server_rec *s) { apr_file_t *file; apr_size_t size = sizeof(magic_token); int ret; ret = apr_file_open (&file, "/dev/urandom", APR_READ, APR_OS_DEFAULT, p); if (!ret) { apr_file_read(file, (void *) &magic_token, &size); apr_file_close(file); } else { ap_log_error(APLOG_MARK, APLOG_ERR, errno, ap_server_conf, "Failed to open /dev/urandom"); } ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf, "Opened /dev/urandom successfully"); return OK; } /* As each child starts up, we'll change_hat into a default hat, mostly * to protect ourselves from bugs in parsing network input, but before * we change_hat to the uri specific hat. */ static void aa_child_init(unused_ apr_pool_t *p, unused_ server_rec *s) { int ret; ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf, "init: calling change_hat with '%s'", DEFAULT_HAT); ret = aa_change_hat(DEFAULT_HAT, magic_token); if (ret < 0) { ap_log_error(APLOG_MARK, APLOG_ERR, errno, ap_server_conf, "Failed to change_hat to '%s'", DEFAULT_HAT); } else { inside_default_hat = 1; } } static void debug_dump_uri(request_rec *r) { apr_uri_t *uri = &r->parsed_uri; if (uri) ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "Dumping uri info " "scheme='%s' host='%s' path='%s' query='%s' fragment='%s'", uri->scheme, uri->hostname, uri->path, uri->query, uri->fragment); else ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "Asked to dump NULL uri"); } /* aa_enter_hat will attempt to change_hat in the following order: (1) to a hatname in a location directive (2) to the server name or a defined per-server default (3) to the server name + "-" + uri (4) to the uri (5) to DEFAULT_URI (6) back to the parent profile */ static int aa_enter_hat(request_rec *r) { int aa_ret = -1; apparmor_dir_cfg *dcfg = (apparmor_dir_cfg *) ap_get_module_config(r->per_dir_config, &apparmor_module); apparmor_srv_cfg *scfg = (apparmor_srv_cfg *) ap_get_module_config(r->server->module_config, &apparmor_module); const char *aa_hat_array[6] = { NULL, NULL, NULL, NULL, NULL, NULL }; int i = 0; char *aa_label, *aa_mode, *aa_hat; const char *vhost_uri; debug_dump_uri(r); ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "aa_enter_hat (%s) n:0x%lx p:0x%lx main:0x%lx", dcfg->path, (unsigned long) r->next, (unsigned long) r->prev, (unsigned long) r->main); /* We only call change_hat for the main request, not subrequests */ if (r->main) return OK; if (inside_default_hat) { aa_change_hat(NULL, magic_token); inside_default_hat = 0; } if (dcfg != NULL && dcfg->hat_name != NULL) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "[dcfg] adding hat '%s' to aa_change_hat vector", dcfg->hat_name); aa_hat_array[i++] = dcfg->hat_name; } if (scfg) { ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "Dumping scfg info: " "scfg='0x%lx' scfg->hat_name='%s'", (unsigned long) scfg, scfg->hat_name); } else { ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "scfg is null"); } if (scfg != NULL) { if (scfg->hat_name != NULL) { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "[scfg] adding hat '%s' to aa_change_hat vector", scfg->hat_name); aa_hat_array[i++] = scfg->hat_name; } else { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "[scfg] adding server_name '%s' to aa_change_hat vector", r->server->server_hostname); aa_hat_array[i++] = r->server->server_hostname; } vhost_uri = apr_pstrcat(r->pool, r->server->server_hostname, "-", r->uri, NULL); ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "[vhost+uri] adding vhost+uri '%s' to aa_change_hat vector", vhost_uri); aa_hat_array[i++] = vhost_uri; } ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "[uri] adding uri '%s' to aa_change_hat vector", r->uri); aa_hat_array[i++] = r->uri; ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "[default] adding '%s' to aa_change_hat vector", DEFAULT_URI_HAT); aa_hat_array[i++] = DEFAULT_URI_HAT; aa_ret = aa_change_hatv(aa_hat_array, magic_token); if (aa_ret < 0) { ap_log_rerror(APLOG_MARK, APLOG_WARNING, errno, r, "aa_change_hatv call failed"); } /* Check to see if a defined AAHatName or AADefaultHatName would * apply, but wasn't the hat we landed up in; report a warning if * that's the case. */ aa_ret = aa_getcon(&aa_label, &aa_mode); if (aa_ret < 0) { ap_log_rerror(APLOG_MARK, APLOG_WARNING, errno, r, "aa_getcon call failed"); } else { ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "AA checks: aa_getcon result is '%s', mode '%s'", aa_label, aa_mode); /* TODO: use libapparmor get hat_name fn here once it is implemented */ aa_hat = strstr(aa_label, "//"); if (aa_hat != NULL && strcmp(aa_mode, "enforce") == 0) { aa_hat += 2; /* skip "//" */ ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "AA checks: apache is in hat '%s', mode '%s'", aa_hat, aa_mode); if (dcfg != NULL && dcfg->hat_name != NULL) { if (strcmp(aa_hat, dcfg->hat_name) != 0) ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, "AAHatName '%s' applies, but does not appear to be a hat in the apache apparmor policy", dcfg->hat_name); } else if (scfg != NULL && scfg->hat_name != NULL) { if (strcmp(aa_hat, scfg->hat_name) != 0 && strcmp(aa_hat, r->uri) != 0) ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r, "AADefaultHatName '%s' applies, but does not appear to be a hat in the apache apparmor policy", scfg->hat_name); } } free(aa_label); } return OK; } static int aa_exit_hat(request_rec *r) { int aa_ret; apparmor_dir_cfg *dcfg = (apparmor_dir_cfg *) ap_get_module_config(r->per_dir_config, &apparmor_module); /* apparmor_srv_cfg *scfg = (apparmor_srv_cfg *) ap_get_module_config(r->server->module_config, &apparmor_module); */ ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, "exiting change_hat: dir hat %s dir path %s", dcfg->hat_name, dcfg->path); /* can convert the following back to aa_change_hat() when the * aa_change_hat() bug addressed in trunk commit 2329 lands in most * system libapparmors */ aa_change_hatv(NULL, magic_token); aa_ret = aa_change_hat(DEFAULT_HAT, magic_token); if (aa_ret < 0) { ap_log_rerror(APLOG_MARK, APLOG_ERR, errno, r, "Failed to change_hat to '%s'", DEFAULT_HAT); } else { inside_default_hat = 1; } return OK; } static const char * aa_cmd_ch_path(unused_ cmd_parms *cmd, unused_ void *mconfig, const char *parm1) { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, "directory config change hat %s", parm1 ? parm1 : "DEFAULT"); apparmor_dir_cfg *dcfg = mconfig; if (parm1 != NULL) { dcfg->hat_name = parm1; } else { dcfg->hat_name = "DEFAULT"; } return NULL; } static int path_warn_once; static const char * immunix_cmd_ch_path(cmd_parms *cmd, void *mconfig, const char *parm1) { if (path_warn_once == 0) { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, ap_server_conf, "ImmHatName is " "deprecated, please use AAHatName instead"); path_warn_once = 1; } return aa_cmd_ch_path(cmd, mconfig, parm1); } static const char * aa_cmd_ch_srv(cmd_parms *cmd, unused_ void *mconfig, const char *parm1) { ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, ap_server_conf, "server config change hat %s", parm1 ? parm1 : "DEFAULT"); apparmor_srv_cfg *scfg = (apparmor_srv_cfg *) ap_get_module_config(cmd->server->module_config, &apparmor_module); if (parm1 != NULL) { scfg->hat_name = parm1; } else { scfg->hat_name = "DEFAULT"; } return NULL; } static int srv_warn_once; static const char * immunix_cmd_ch_srv(cmd_parms *cmd, void *mconfig, const char *parm1) { if (srv_warn_once == 0) { ap_log_error(APLOG_MARK, APLOG_NOTICE, 0, ap_server_conf, "ImmDefaultHatName is " "deprecated, please use AADefaultHatName instead"); srv_warn_once = 1; } return aa_cmd_ch_srv(cmd, mconfig, parm1); } static void * aa_create_dir_config(apr_pool_t *p, char *path) { apparmor_dir_cfg *newcfg = (apparmor_dir_cfg *) apr_pcalloc(p, sizeof(*newcfg)); ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf, "aa_create_dir_cfg (%s)", path ? path : ":no path:"); if (newcfg == NULL) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, "aa_create_dir_config: couldn't alloc dir config"); return NULL; } newcfg->path = apr_pstrdup(p, path ? path : ":no path:"); return newcfg; } /* XXX: Should figure out an appropriate action to take here, if any static void * aa_merge_dir_config(apr_pool_t *p, void *parent, void *child) { apparmor_dir_cfg *newcfg = (apparmor_dir_cfg *) apr_pcalloc(p, sizeof(*newcfg)); ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf, "in immunix_merge_dir ()"); if (newcfg == NULL) return NULL; return newcfg; } */ static void * aa_create_srv_config(apr_pool_t *p, unused_ server_rec *srv) { apparmor_srv_cfg *newcfg = (apparmor_srv_cfg *) apr_pcalloc(p, sizeof(*newcfg)); ap_log_error(APLOG_MARK, APLOG_TRACE1, 0, ap_server_conf, "in aa_create_srv_config"); if (newcfg == NULL) { ap_log_error(APLOG_MARK, APLOG_ERR, 0, ap_server_conf, "aa_create_srv_config: couldn't alloc srv config"); return NULL; } return newcfg; } static const command_rec mod_apparmor_cmds[] = { AP_INIT_TAKE1( "ImmHatName", immunix_cmd_ch_path, NULL, ACCESS_CONF, "" ), AP_INIT_TAKE1( "ImmDefaultHatName", immunix_cmd_ch_srv, NULL, RSRC_CONF, "" ), AP_INIT_TAKE1( "AAHatName", aa_cmd_ch_path, NULL, ACCESS_CONF, "" ), AP_INIT_TAKE1( "AADefaultHatName", aa_cmd_ch_srv, NULL, RSRC_CONF, "" ), { NULL } }; static void register_hooks(unused_ apr_pool_t *p) { ap_hook_post_config(aa_init, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_child_init(aa_child_init, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_access_checker(aa_enter_hat, NULL, NULL, APR_HOOK_FIRST); /* ap_hook_post_read_request(aa_enter_hat, NULL, NULL, APR_HOOK_FIRST); */ ap_hook_log_transaction(aa_exit_hat, NULL, NULL, APR_HOOK_LAST); } module AP_MODULE_DECLARE_DATA apparmor_module = { STANDARD20_MODULE_STUFF, aa_create_dir_config, /* dir config creater */ NULL, /* dir merger --- default is to override */ /* immunix_merge_dir_config, */ /* dir merger --- default is to override */ aa_create_srv_config, /* server config */ NULL, /* merge server config */ mod_apparmor_cmds, /* command table */ register_hooks /* register hooks */ }; apparmor-3.0.4/changehat/mod_apparmor/COPYING.LGPL0000664000175000017500000006350014201060045017317 0ustar jjjj GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! apparmor-3.0.4/changehat/mod_apparmor/Makefile0000664000175000017500000000731214201060045017166 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 2004, 2005 NOVELL (All rights reserved) # Copyright (c) 2016 Canonical, Ltd. # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- NAME:=apache2-mod_apparmor all: COMMONDIR=../../common/ include $(COMMONDIR)/Make.rules TARGET:=mod_apparmor.so MANPAGES=mod_apparmor.8 APXS:=$(shell if [ -x "/usr/sbin/apxs2" ] ; then \ echo "/usr/sbin/apxs2" ; \ elif [ -x "/usr/sbin/apxs" ] ; then \ echo "/usr/sbin/apxs" ; \ elif [ -x "/usr/bin/apxs2" ] ; then \ echo "/usr/bin/apxs2" ; \ elif [ -x "/usr/bin/apxs" ] ; then \ echo "/usr/bin/apxs" ; \ else \ echo "apxs" ; \ fi ) APXS_INSTALL_DIR=$(shell ${APXS} -q LIBEXECDIR) DESTDIR= ifdef USE_SYSTEM LIBAPPARMOR = $(shell if pkg-config --exists libapparmor ; then \ pkg-config --silence-errors --libs libapparmor ; \ elif ldconfig -p | grep -q libapparmor\.so$$ ; then \ echo -lapparmor ; \ fi ) ifeq ($(strip $(LIBAPPARMOR)),) ERROR_MESSAGE = $(error ${nl}\ ************************************************************************${nl}\ Unable to find libapparmor installed on this system; either${nl}\ install libapparmor devel packages, set the LIBAPPARMOR variable${nl}\ manually, or build against in-tree libapparmor.${nl}\ ************************************************************************${nl}) endif # LIBAPPARMOR not set LDLIBS += $(LIBAPPARMOR) else LIBAPPARMOR_SRC := ../../libraries/libapparmor/ LIBAPPARMOR_INCLUDE = $(LIBAPPARMOR_SRC)/include LIBAPPARMOR_PATH := $(LIBAPPARMOR_SRC)/src/.libs/ ifeq ($(realpath $(LIBAPPARMOR_PATH)/libapparmor.a),) ERROR_MESSAGE = $(error ${nl}\ ************************************************************************${nl}\ $(LIBAPPARMOR_PATH)/libapparmor.a is missing; either build against${nl}\ the in-tree libapparmor by building it first and then trying again${nl}\ (see the top-level README for help) or build against the system${nl}\ libapparmor by adding USE_SYSTEM=1 to your make command.${nl}\ ************************************************************************${nl}) endif # Need to pass -Wl twice here to get past both apxs2 and libtool, as # libtool will add the path to the RPATH of the library if passed -L/some/path LIBAPPARMOR_FLAGS = -I$(LIBAPPARMOR_INCLUDE) -Wl,-Wl,-L$(LIBAPPARMOR_PATH) LDLIBS = -lapparmor endif APXS_CFLAGS="-Wc,$(EXTRA_WARNINGS)" .PHONY: libapparmor_check .SILENT: libapparmor_check libapparmor_check: ; $(ERROR_MESSAGE) all: libapparmor_check $(TARGET) docs .PHONY: docs docs: ${MANPAGES} ${HTMLMANPAGES} %.so: %.c ${APXS} ${LIBAPPARMOR_FLAGS} ${APXS_CFLAGS} -c $< ${LDLIBS} mv .libs/$@ . .PHONY: install install: ${TARGET} ${MANPAGES} mkdir -p ${DESTDIR}/${APXS_INSTALL_DIR} install -m 755 $< ${DESTDIR}/${APXS_INSTALL_DIR} $(MAKE) install_manpages DESTDIR=${DESTDIR} .PHONY: clean clean: pod_clean rm -rf .libs rm -f *.la *.lo *.so *.o *.slo .PHONY: check check: check_pod_files apparmor-3.0.4/changehat/mod_apparmor/pod2htmd.tmp0000664000175000017500000000000314201060303017754 0ustar jjjj . apparmor-3.0.4/changehat/mod_apparmor/frob_sysconfig0000775000175000017500000000423214201060045020466 0ustar jjjj#!/usr/bin/perl -w # # ---------------------------------------------------------------------- # Copyright (c) 2004, 2005 NOVELL (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- # read /etc/sysconfig/apache2 and add "change_hat" to the apache # modules found there use Getopt::Long; use File::Temp qw/ :mktemp /; my $module="apparmor"; sub usage() { print "$0\t--file= modify \n"; print "\t\t\t--remove remove option from config file\n"; print "\t\t\t--help this help\n"; exit(0); } my ($conffile,$help,$remove); GetOptions( "file=s" => \$conffile, "remove" => \$remove, "help!" => \$help ) or usage(); usage() if $help; if (defined $conffile) { $old = $conffile; chomp($old); } else { $old="/etc/sysconfig/apache2"; } open(MENU,"<$old") or die "Fatal: can't open $old: $!"; ($fh, $file) = mkstemp($old . "XXXXXX" ); while () { # ok, we rely on the '="' to site the changes ; if (! defined $remove) { if ( /^\s*APACHE_MODULES="/ ) { if ( ! /$module/ ) { s/="/="$module /; } } } else { # remove the option if ( /^\s*APACHE_MODULES=".*$module/ ) { s/$module\s*//; } # remove old versions of the module if ( /^\s*APACHE_MODULES=".*change_hat/ ) { s/change_hat\s*//; } } print $fh $_; } rename $old, "$old.orig" || system("/bin/mv", $old, "$old.orig") && die "$old could not be renamed to $old.orig ($!); see $file for modifications"; rename $file, "$old" || system("/bin/mv", $file, "$old") && die "$file could not be renamed to $old ($!); see $file for modifications"; apparmor-3.0.4/changehat/mod_apparmor/mod_apparmor.conf0000664000175000017500000000015614201060045021054 0ustar jjjj # # Load the Immunix SubDomain change_hat module # LoadModule apparmor_module modules/mod_apparmor.so apparmor-3.0.4/changehat/mod_apparmor/mod_apparmor.pod0000664000175000017500000001256014201060045020713 0ustar jjjj# This publication is intellectual property of Novell Inc. and Canonical # Ltd. Its contents can be duplicated, either in part or in whole, provided # that a copyright label is visibly located on each copy. # # All information found in this book has been compiled with utmost # attention to detail. However, this does not guarantee complete accuracy. # Neither SUSE LINUX GmbH, Canonical Ltd, the authors, nor the translators # shall be held liable for possible errors or the consequences thereof. # # Many of the software and hardware descriptions cited in this book # are registered trademarks. All trade names are subject to copyright # restrictions and may be registered trade marks. SUSE LINUX GmbH # and Canonical Ltd. essentially adhere to the manufacturer's spelling. # # Names of products and trademarks appearing in this book (with or without # specific notation) are likewise subject to trademark and trade protection # laws and may thus fall under copyright restrictions. # =pod =head1 NAME mod_apparmor - fine-grained AppArmor confinement for Apache =head1 DESCRIPTION An AppArmor profile applies to an executable program; if a portion of the program needs different access permissions than other portions, the program can "change hats" via aa_change_hat(2) to a different role, also known as a subprofile. The mod_apparmor Apache module uses the aa_change_hat(2) mechanism to offer more fine-grained confinement of dynamic elements within Apache such as individual php and perl scripts, while still allowing the performance benefits of using mod_php and mod_perl. To use mod_apparmor with Apache, ensure that mod_apparmor is configured to be loaded into Apache, either via a2enmod, yast or manual editing of the apache2(8)/httpd(8) configuration files, and restart Apache. Make sure that apparmor is also functioning. Once mod_apparmor is loaded within Apache, all requests to Apache will cause mod_apparmor to attempt to change into a hat that matches the ServerName for the server/vhost. If no such hat is found, it will first fall back by attempting to change into a hat composed of the ServerName-URI (e.g. "www.example.com-/app/some.cgi"). If that hat is not found, it will fall back to attempting to use the hat named by the URI (e.g. "/app/some.cgi"). If that hat is not found, it will fall back to attempting to use the hat DEFAULT_URI; if that also does not exist, it will fall back to using the global Apache profile. Most static web pages can simply make use of the DEFAULT_URI hat. Additionally, before any requests come in to Apache, mod_apparmor will attempt to change hat into the HANDLING_UNTRUSTED_INPUT hat. mod_apparmor will attempt to use this hat while Apache is doing the initial parsing of a given http request, before its given to a specific handler (like mod_php) for processing. Because defining hats for every URI/URL often becomes tedious, mod_apparmor provides the AAHatName and AADefaultHatName Apache configuration options. =over 4 =item B AAHatName allows you to specify a hat to be used for a given Apache EDirectoryE, EDirectoryMatchE, ELocationE or ELocationMatchE directive (see the Apache documentation for more details). Note that mod_apparmor behavior can become confused if EDirectory*E and ELocation*E directives are intermingled and it is recommended to use one type of directive. If the hat specified by AAHatName does not exist in the Apache profile, then it falls back to the behavior described above. =item B AADefaultHatName allows you to specify a default hat to be used for virtual hosts and other Apache server directives, so that you can have different defaults for different virtual hosts. This can be overridden by the AAHatName directive and is checked for only if there isn't a matching AAHatName. The default value of AADefaultHatName is the ServerName for the server/vhost configuration. If the AADefaultHatName hat does not exist, then it falls back to the behavior described above. =back =head1 URI REQUEST SUMMARY When profiling with mod_apparmor, it is helpful to keep the following order of operations in mind: On each URI request, mod_apparmor will first aa_change_hat(2) into ^HANDLING_UNTRUSTED_INPUT, if it exists. Then, after performing the initial parsing of the request, mod_apparmor will: =over 4 =item 1 try to aa_change_hat(2) into a matching AAHatName hat if it exists and applies, otherwise it will =item 2 try to aa_change_hat(2) into an AADefaultHatName hat, either the ServerName (the default) or the configuration value specified by the AADefaultHatName directive, for the server/vhost, otherwise it will =item 3 try to aa_change_hat(2) into the ServerName-URI, otherwise it will =item 4 try to aa_change_hat(2) into the URI itself, otherwise it will =item 5 try to aa_change_hat(2) into the DEFAULT_URI hat, if it exists, otherwise it will =item 6 fall back to the global Apache policy =back =head1 BUGS mod_apparmor() currently only supports apache2, and has only been tested with the prefork MPM configuration -- threaded configurations of Apache may not work correctly. For Apache 2.4 users, you should enable the mpm_prefork module. There are likely other bugs lurking about; if you find any, please report them at L. =head1 SEE ALSO apparmor(7), apparmor_parser(8), aa_change_hat(2) and L. =cut apparmor-3.0.4/changehat/mod_apparmor/mod_apparmor.8.html0000644000175000017500000001377614201060303021250 0ustar jjjj mod_apparmor - fine-grained AppArmor confinement for Apache
 mod_apparmor - fine-grained AppArmor confinement for Apache

NAME

mod_apparmor - fine-grained AppArmor confinement for Apache

DESCRIPTION

An AppArmor profile applies to an executable program; if a portion of the program needs different access permissions than other portions, the program can "change hats" via aa_change_hat(2) to a different role, also known as a subprofile. The mod_apparmor Apache module uses the aa_change_hat(2) mechanism to offer more fine-grained confinement of dynamic elements within Apache such as individual php and perl scripts, while still allowing the performance benefits of using mod_php and mod_perl.

To use mod_apparmor with Apache, ensure that mod_apparmor is configured to be loaded into Apache, either via a2enmod, yast or manual editing of the apache2(8)/httpd(8) configuration files, and restart Apache. Make sure that apparmor is also functioning.

Once mod_apparmor is loaded within Apache, all requests to Apache will cause mod_apparmor to attempt to change into a hat that matches the ServerName for the server/vhost. If no such hat is found, it will first fall back by attempting to change into a hat composed of the ServerName-URI (e.g. "www.example.com-/app/some.cgi"). If that hat is not found, it will fall back to attempting to use the hat named by the URI (e.g. "/app/some.cgi"). If that hat is not found, it will fall back to attempting to use the hat DEFAULT_URI; if that also does not exist, it will fall back to using the global Apache profile. Most static web pages can simply make use of the DEFAULT_URI hat.

Additionally, before any requests come in to Apache, mod_apparmor will attempt to change hat into the HANDLING_UNTRUSTED_INPUT hat. mod_apparmor will attempt to use this hat while Apache is doing the initial parsing of a given http request, before its given to a specific handler (like mod_php) for processing.

Because defining hats for every URI/URL often becomes tedious, mod_apparmor provides the AAHatName and AADefaultHatName Apache configuration options.

AAHatName

AAHatName allows you to specify a hat to be used for a given Apache <Directory>, <DirectoryMatch>, <Location> or <LocationMatch> directive (see the Apache documentation for more details). Note that mod_apparmor behavior can become confused if <Directory*> and <Location*> directives are intermingled and it is recommended to use one type of directive. If the hat specified by AAHatName does not exist in the Apache profile, then it falls back to the behavior described above.

AADefaultHatName

AADefaultHatName allows you to specify a default hat to be used for virtual hosts and other Apache server directives, so that you can have different defaults for different virtual hosts. This can be overridden by the AAHatName directive and is checked for only if there isn't a matching AAHatName. The default value of AADefaultHatName is the ServerName for the server/vhost configuration. If the AADefaultHatName hat does not exist, then it falls back to the behavior described above.

URI REQUEST SUMMARY

When profiling with mod_apparmor, it is helpful to keep the following order of operations in mind:

On each URI request, mod_apparmor will first aa_change_hat(2) into ^HANDLING_UNTRUSTED_INPUT, if it exists.

Then, after performing the initial parsing of the request, mod_apparmor will:

  1. try to aa_change_hat(2) into a matching AAHatName hat if it exists and applies, otherwise it will

  2. try to aa_change_hat(2) into an AADefaultHatName hat, either the ServerName (the default) or the configuration value specified by the AADefaultHatName directive, for the server/vhost, otherwise it will

  3. try to aa_change_hat(2) into the ServerName-URI, otherwise it will

  4. try to aa_change_hat(2) into the URI itself, otherwise it will

  5. try to aa_change_hat(2) into the DEFAULT_URI hat, if it exists, otherwise it will

  6. fall back to the global Apache policy

BUGS

mod_apparmor() currently only supports apache2, and has only been tested with the prefork MPM configuration -- threaded configurations of Apache may not work correctly. For Apache 2.4 users, you should enable the mpm_prefork module.

There are likely other bugs lurking about; if you find any, please report them at https://gitlab.com/apparmor/apparmor/-/issues.

SEE ALSO

apparmor(7), apparmor_parser(8), aa_change_hat(2) and https://wiki.apparmor.net.

 mod_apparmor - fine-grained AppArmor confinement for Apache
apparmor-3.0.4/changehat/mod_apparmor/mod_apparmor.80000664000175000017500000002107614201060303020277 0ustar jjjj.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MOD_APPARMOR 8" .TH MOD_APPARMOR 8 "2022-02-10" "AppArmor 3.0.4" "AppArmor" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" mod_apparmor \- fine\-grained AppArmor confinement for Apache .SH "DESCRIPTION" .IX Header "DESCRIPTION" An AppArmor profile applies to an executable program; if a portion of the program needs different access permissions than other portions, the program can \*(L"change hats\*(R" via \fBaa_change_hat\fR\|(2) to a different role, also known as a subprofile. The mod_apparmor Apache module uses the \&\fBaa_change_hat\fR\|(2) mechanism to offer more fine-grained confinement of dynamic elements within Apache such as individual php and perl scripts, while still allowing the performance benefits of using mod_php and mod_perl. .PP To use mod_apparmor with Apache, ensure that mod_apparmor is configured to be loaded into Apache, either via a2enmod, yast or manual editing of the \&\fBapache2\fR\|(8)/\fBhttpd\fR\|(8) configuration files, and restart Apache. Make sure that apparmor is also functioning. .PP Once mod_apparmor is loaded within Apache, all requests to Apache will cause mod_apparmor to attempt to change into a hat that matches the ServerName for the server/vhost. If no such hat is found, it will first fall back by attempting to change into a hat composed of the ServerName-URI (e.g. \*(L"www.example.com\-/app/some.cgi\*(R"). If that hat is not found, it will fall back to attempting to use the hat named by the \s-1URI\s0 (e.g. \*(L"/app/some.cgi\*(R"). If that hat is not found, it will fall back to attempting to use the hat \s-1DEFAULT_URI\s0; if that also does not exist, it will fall back to using the global Apache profile. Most static web pages can simply make use of the \s-1DEFAULT_URI\s0 hat. .PP Additionally, before any requests come in to Apache, mod_apparmor will attempt to change hat into the \s-1HANDLING_UNTRUSTED_INPUT\s0 hat. mod_apparmor will attempt to use this hat while Apache is doing the initial parsing of a given http request, before its given to a specific handler (like mod_php) for processing. .PP Because defining hats for every \s-1URI/URL\s0 often becomes tedious, mod_apparmor provides the AAHatName and AADefaultHatName Apache configuration options. .IP "\fBAAHatName\fR" 4 .IX Item "AAHatName" AAHatName allows you to specify a hat to be used for a given Apache , , or directive (see the Apache documentation for more details). Note that mod_apparmor behavior can become confused if and directives are intermingled and it is recommended to use one type of directive. If the hat specified by AAHatName does not exist in the Apache profile, then it falls back to the behavior described above. .IP "\fBAADefaultHatName\fR" 4 .IX Item "AADefaultHatName" AADefaultHatName allows you to specify a default hat to be used for virtual hosts and other Apache server directives, so that you can have different defaults for different virtual hosts. This can be overridden by the AAHatName directive and is checked for only if there isn't a matching AAHatName. The default value of AADefaultHatName is the ServerName for the server/vhost configuration. If the AADefaultHatName hat does not exist, then it falls back to the behavior described above. .SH "URI REQUEST SUMMARY" .IX Header "URI REQUEST SUMMARY" When profiling with mod_apparmor, it is helpful to keep the following order of operations in mind: .PP On each \s-1URI\s0 request, mod_apparmor will first \fBaa_change_hat\fR\|(2) into ^HANDLING_UNTRUSTED_INPUT, if it exists. .PP Then, after performing the initial parsing of the request, mod_apparmor will: .IP "1." 4 try to \fBaa_change_hat\fR\|(2) into a matching AAHatName hat if it exists and applies, otherwise it will .IP "2." 4 try to \fBaa_change_hat\fR\|(2) into an AADefaultHatName hat, either the ServerName (the default) or the configuration value specified by the AADefaultHatName directive, for the server/vhost, otherwise it will .IP "3." 4 try to \fBaa_change_hat\fR\|(2) into the ServerName-URI, otherwise it will .IP "4." 4 try to \fBaa_change_hat\fR\|(2) into the \s-1URI\s0 itself, otherwise it will .IP "5." 4 try to \fBaa_change_hat\fR\|(2) into the \s-1DEFAULT_URI\s0 hat, if it exists, otherwise it will .IP "6." 4 fall back to the global Apache policy .SH "BUGS" .IX Header "BUGS" \&\fBmod_apparmor()\fR currently only supports apache2, and has only been tested with the prefork \s-1MPM\s0 configuration \*(-- threaded configurations of Apache may not work correctly. For Apache 2.4 users, you should enable the mpm_prefork module. .PP There are likely other bugs lurking about; if you find any, please report them at . .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBapparmor\fR\|(7), \fBapparmor_parser\fR\|(8), \fBaa_change_hat\fR\|(2) and . apparmor-3.0.4/.gitlab-ci.yml0000664000175000017500000000325614201060045013563 0ustar jjjj--- image: ubuntu:latest before_script: - export DEBIAN_FRONTEND=noninteractive && apt-get update -qq && apt-get install --no-install-recommends -y build-essential apache2-dev autoconf automake bison dejagnu flex libpam-dev libtool perl liblocale-gettext-perl pkg-config python-all-dev python3-all-dev pyflakes3 ruby-dev swig lsb-release python3-notify2 python3-psutil python3-setuptools zlib1g-dev - lsb_release -a - uname -a # XXX - add a deploy stage to publish man pages, docs, and coverage # reports stages: - build - test build-all: stage: build artifacts: name: ${CI_COMMIT_REF_NAME}-${CI_COMMIT_SHA} expire_in: 30 days untracked: true paths: - libraries/libapparmor/ - parser/ - binutils/ - utils/ - changehat/mod_apparmor/ - changehat/pam_apparmor/ - profiles/ script: - cd libraries/libapparmor && ./autogen.sh && ./configure --with-perl --with-python --prefix=/usr && make && cd ../.. || { cat config.log ; exit 1 ; } - make -C parser - make -C binutils - make -C utils - make -C changehat/mod_apparmor - make -C changehat/pam_apparmor - make -C profiles test-all: stage: test script: - make -C libraries/libapparmor check - make -C parser check - make -C binutils check - make -C utils check - make -C changehat/mod_apparmor check - make -C profiles check-parser - make -C profiles check-abstractions.d # Disabled due to aa-logprof dependency on /sbin/apparmor_parser existing # - make -C profiles check-profiles # test-pam_apparmor: # - stage: test # - script: # - cd changehat/pam_apparmor && make check apparmor-3.0.4/binutils/0000775000175000017500000000000014201060300012744 5ustar jjjjapparmor-3.0.4/binutils/aa_features_abi.c0000664000175000017500000001125214201060045016211 0ustar jjjj/* * Copyright (c) 2020 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Canonical Ltd. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #define _(s) gettext(s) #include "../libraries/libapparmor/src/private.h" static const char *progname = NULL; static const char *opt_file = NULL; static const char *opt_write = NULL; static bool opt_debug = false; static bool opt_verbose = false; static bool opt_extract = false; static void usage(const char *name, bool error) { FILE *stream = stdout; int status = EXIT_SUCCESS; if (error) { stream = stderr; status = EXIT_FAILURE; } fprintf(stream, _("USAGE: %s [OPTIONS] [OUTPUT OPTIONS]\n" "\n" "Output AppArmor feature abi from SOURCE to OUTPUT" "\n" "OPTIONS:\n" #if 0 " -d, --debug show messages with debugging information\n" " -v, --verbose show messages with stats\n" #endif " -h, --help display this help\n" "SOURCE:\n" " -f F, --file=F load features abi from file F\n" " -x, --extract extract features abi from the kernel\n" "OUTPUT OPTIONS:\n" " --stdout default, write features to stdout\n" " -w F, --write=F write features abi to the file F instead of stdout\n" "\n"), name); exit(status); } #define error(fmt, args...) _error(_("%s: ERROR: " fmt " - %m\n"), progname, ## args) static void _error(const char *fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); exit(EXIT_FAILURE); } #if 0 #define debug(fmt, args...) _debug(_("%s: DEBUG: " fmt "\n"), progname, ## args) static void _debug(const char *fmt, ...) { va_list args; if (!opt_debug) return; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } #define verbose(fmt, args...) _verbose(_(fmt "\n"), ## args) static void _verbose(const char *fmt, ...) { va_list args; if (!opt_verbose) return; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } #endif #define ARG_STDOUT 128 static char **parse_args(int argc, char **argv) { int opt; struct option long_opts[] = { {"debug", no_argument, 0, 'd'}, {"verbose", no_argument, 0, 'v'}, {"help", no_argument, 0, 'h'}, {"extract", no_argument, 0, 'x'}, {"file", required_argument, 0, 'f'}, {"write", required_argument, 0, 'w'}, {"stdout", no_argument, 0, ARG_STDOUT}, }; while ((opt = getopt_long(argc, argv, "+dvhxf:l:w:", long_opts, NULL)) != -1) { switch (opt) { case 'd': opt_debug = true; break; case 'v': opt_verbose = true; break; case 'h': usage(argv[0], false); break; case 'x': opt_extract = true; break; case 'f': opt_file = optarg; break; case 'w': opt_write = optarg; break; case ARG_STDOUT: opt_write = NULL; break; default: usage(argv[0], true); break; } } return argv + optind; } /* TODO: add features intersection and testing */ int main(int argc, char **argv) { struct aa_features *features; autoclose int in = -1; autoclose int out = -1; int rc = 0; progname = argv[0]; argv = parse_args(argc, argv); if (!opt_extract && !opt_file) usage(argv[0], true); if (opt_extract && opt_file) { error("options --extract and --file are mutually exclusive"); } if (opt_extract) { rc = aa_features_new_from_kernel(&features); if (rc == -1) error("failed to extract features abi from the kernel"); } if (opt_file) { in = open(opt_file, O_RDONLY); if (in == -1) error("failed to open file '%s'", opt_file); rc = aa_features_new_from_file(&features, in); if (rc == -1) error("failed to load features abi from file '%s'", opt_file); } if (opt_write) { out = open(opt_write, O_WRONLY | O_CREAT, 00600); if (out == -1) error("failed to open output file '%s'", opt_write); } else { out = fileno(stdout); if (out == -1) error("failed to get stdout"); } rc = aa_features_write_to_fd(features, out); if (rc == -1) error("failed to write features abi"); return 0; } apparmor-3.0.4/binutils/po/0000775000175000017500000000000014201060045013370 5ustar jjjjapparmor-3.0.4/binutils/po/fi.po0000664000175000017500000000335314201060045014332 0ustar jjjj# Finnish translation for apparmor # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2020-01-29 07:44+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Finnish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-01-30 05:40+0000\n" "X-Generator: Launchpad (build b8d1327fd820d6bf500589d6da587d5037c7d88e)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "tuntemattomat tai yhteensopimattomat valinnat\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "tuntematon valinta '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Kyllä\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Ei - ei käytettävissä tässä järjestelmässä.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Ei - poistettu käytöstä käynnistyksen yhteydessä.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Virhe - '%s'\n" apparmor-3.0.4/binutils/po/af.po0000664000175000017500000000362614201060045014325 0ustar jjjj# Afrikaans translation for apparmor # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2020-03-04 17:55+0000\n" "Last-Translator: bernard stafford \n" "Language-Team: Afrikaans \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-03-05 05:40+0000\n" "X-Generator: Launchpad (build e0878392dc799b267dea80578fa65500a5d74155)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [opsies]\n" " opsies:\n" " -q | --quiet Moenie druk uit enige boodskappe\n" " -h | --help Afdruk hulp\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "onbekende of onversoenbare opsies\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "onbekende opsie '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Ja\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Geen - nie beskikbaar op hierdie stelsel.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Nee - gestremde by stewel.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Miskien - beleid koppelvlak nie beskikbaar.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "Miskien - onvoldoende toestemmings om beskikbaarheid te bepaal.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Fout - '%s'\n" apparmor-3.0.4/binutils/po/pt.po0000664000175000017500000000370714201060045014362 0ustar jjjj# Portuguese translation for apparmor # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: AppArmor list \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2016-03-03 08:34+0000\n" "Last-Translator: Ivo Xavier \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: pt\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [opções]\n" " opções:\n" " -q | --silencioso Não mostrar mensagens\n" " -h | --ajuda Mostar ajuda\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "opções desconhecidas ou incompatíveis\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "opção desconhecida '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Sim\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Não - não disponível neste sistema.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Não - desligado ao iniciar.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Talvez - política de interface não disponível.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "Talvez - permissões insuficientes para determinar disponibilidade.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Erro - '%s'\n" apparmor-3.0.4/binutils/po/aa_enabled.pot0000664000175000017500000000310614201060045016147 0ustar jjjj# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n" "POT-Creation-Date: 2020-10-14 03:58-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../aa_enabled.c:21 #, c-format msgid "" "%s: [options]\n" " options:\n" " -x | --exclusive Shared interfaces must be availabe\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" #: ../aa_enabled.c:37 #, c-format msgid "No - not available on this system.\n" msgstr "" #: ../aa_enabled.c:41 #, c-format msgid "No - disabled at boot.\n" msgstr "" #: ../aa_enabled.c:45 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "" #: ../aa_enabled.c:50 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "" #: ../aa_enabled.c:54 #, c-format msgid "Partially - public shared interfaces are not available.\n" msgstr "" #: ../aa_enabled.c:58 #, c-format msgid "Error - %s\n" msgstr "" #: ../aa_enabled.c:73 #, c-format msgid "unknown or incompatible options\n" msgstr "" #: ../aa_enabled.c:87 #, c-format msgid "unknown option '%s'\n" msgstr "" #: ../aa_enabled.c:98 #, c-format msgid "Yes\n" msgstr "" apparmor-3.0.4/binutils/po/es.po0000664000175000017500000000363514201060045014346 0ustar jjjj# Spanish translation for apparmor # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2019-06-09 14:01+0000\n" "Last-Translator: Adolfo Jayme \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-06-10 04:32+0000\n" "X-Generator: Launchpad (build 18978)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [opciones]\n" " opciones:\n" " -q | --quiet No emitir ningún mensaje\n" " -h | --help Mostrar la ayuda\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "opciones desconocidas o incompatibles\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "se desconoce la opción «%s»\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Sí\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "No; no disponible en este sistema.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "No; desactivado durante el arranque.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Quizá; interfaz de directiva no disponible.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "Quizá; permisos insuficientes para determinar disponibilidad.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Error: «%s»\n" apparmor-3.0.4/binutils/po/de.po0000664000175000017500000000374514201060045014331 0ustar jjjj# German translation for apparmor # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: AppArmor list \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2018-02-09 23:55+0000\n" "Last-Translator: Tobias Bannert \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: de\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [Optionen]\n" " Optionen:\n" " -q | --quiet Keine Nachrichten anzeigen\n" " -h | --help Hilfetext anzeigen\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "unbekannte oder nicht kompatible Optionen\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "unbekannte Option »%s«\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Ja\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Nein – auf diesem System nicht verfügbar.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Nein – beim Start deaktiviert.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Vielleicht – Richtlinienschnittstelle nicht verfügbar.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "" "Vielleicht – ungenügende Berechtigungen, um die Verfügbarkeit zu prüfen\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Fehler – »%s«\n" apparmor-3.0.4/binutils/po/aa_features_abi.pot0000664000175000017500000000256214201060045017213 0ustar jjjj# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n" "POT-Creation-Date: 2020-10-14 03:58-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../aa_features_abi.c:53 #, c-format msgid "" "USAGE: %s [OPTIONS] [OUTPUT OPTIONS]\n" "\n" "Output AppArmor feature abi from SOURCE to OUTPUT\n" "OPTIONS:\n" " -d, --debug show messages with debugging information\n" " -v, --verbose show messages with stats\n" " -h, --help display this help\n" "SOURCE:\n" " -f F, --file=F load features abi from file F\n" " -x, --extract extract features abi from the kernel\n" "OUTPUT OPTIONS:\n" " --stdout default, write features to stdout\n" " -w F, --write=F write features abi to the file F instead of stdout\n" "\n" msgstr "" #: ../aa_features_abi.c:73 #, c-format msgid "%s: ERROR: " msgstr "" #: ../aa_features_abi.c:85 #, c-format msgid "%s: DEBUG: " msgstr "" #: ../aa_features_abi.c:98 msgid "\n" msgstr "" apparmor-3.0.4/binutils/po/ru.po0000664000175000017500000000425614201060045014365 0ustar jjjj# Russian translation for apparmor # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: AppArmor list \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2016-03-29 14:46+0000\n" "Last-Translator: Eugene Roskin \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ru\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [параметры]\n" " параметры:\n" " -q | --quiet не выводить никакие ÑообщениÑ\n" " -h | --help вывеÑти Ñправку\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "неизвеÑтные или неÑовмеÑтимые параметры\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "неизвеÑтный параметр '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Да\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Ðет - недоÑтупно на Ñтой ÑиÑтеме.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Ðет - выключено при загрузке.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Возможно - Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ð¾Ð»Ð¸Ñ‚Ð¸ÐºÐ¸ недоÑтупен.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "Возможно - недоÑтаточно разрешений Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð¾ÑтупноÑти.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Ошибка - '%s'\n" apparmor-3.0.4/binutils/po/ro.po0000664000175000017500000000365514201060045014361 0ustar jjjj# Romanian translation for apparmor # Copyright (c) 2020 Rosetta Contributors and Canonical Ltd 2020 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2020. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2020-02-20 21:47+0000\n" "Last-Translator: Daniel Slavu \n" "Language-Team: Romanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-02-21 05:39+0000\n" "X-Generator: Launchpad (build 19413b719a8df7423ab1390528edadce9e0e4aca)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [opÈ›iuni]\n" " opÈ›iuni:\n" " -q | --calm Nu imprima niciun mesaj\n" " -h | - ajutor Imprimare ajutor\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "opÈ›iuni necunoscute sau incompatibile\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "opÈ›iune necunoscută '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Da\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Nu - nu este disponibil pe acest sistem.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Nu - dezactivat la pornire.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Poate - interfaÈ›a politică nu este disponibilă.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "" "Poate - permisiuni insuficiente pentru a determina disponibilitatea.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Eroare - '%s'\n" apparmor-3.0.4/binutils/po/id.po0000664000175000017500000000372214201060045014330 0ustar jjjj# Indonesian translation for apparmor # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: AppArmor list \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2016-01-20 08:59+0000\n" "Last-Translator: Ari Setyo Wibowo \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: id\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [options]\n" " pilihan:\n" " -q | --quiet Jangan tampilkan pesan apapun\n" " -h | --help Tampilkan bantuan\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "pilihan yang tidak dikenali atau tidak kompatibel\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "pilihan tidak dikenali '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Ya\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Tidak - tidak tersedia di sistem ini.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Tidak - nonaktifkan saat boot.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Mungkin - kebijakan antarmuka tidak tersedia.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "Mungkin - izin tidak memadai untuk menentukan ketersediaan.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Kesalahan - '%s'\n" apparmor-3.0.4/binutils/po/aa_exec.pot0000664000175000017500000000256414201060045015510 0ustar jjjj# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n" "POT-Creation-Date: 2020-10-14 03:58-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../aa_exec.c:50 #, c-format msgid "" "USAGE: %s [OPTIONS] \n" "\n" "Confine with the specified PROFILE.\n" "\n" "OPTIONS:\n" " -p PROFILE, --profile=PROFILE\t\tPROFILE to confine with\n" " -n NAMESPACE, --namespace=NAMESPACE\tNAMESPACE to confine in\n" " -d, --debug\t\t\t\tshow messages with debugging information\n" " -i, --immediate\t\t\tchange profile immediately instead of at exec\n" " -v, --verbose\t\t\t\tshow messages with stats\n" " -h, --help\t\t\t\tdisplay this help\n" "\n" msgstr "" #: ../aa_exec.c:65 #, c-format msgid "[%ld] aa-exec: ERROR: " msgstr "" #: ../aa_exec.c:76 #, c-format msgid "[%ld] aa-exec: DEBUG: " msgstr "" #: ../aa_exec.c:89 #, c-format msgid "[%ld] " msgstr "" #: ../aa_exec.c:107 #, c-format msgid "[%ld] exec" msgstr "" apparmor-3.0.4/binutils/po/Makefile0000664000175000017500000000130314201060045015025 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (C) 2015 Canonical Ltd. # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # ---------------------------------------------------------------------- all: # As translations get added, they will automatically be included, unless # the lang is explicitly added to DISABLED_LANGS; e.g. DISABLED_LANGS=en es DISABLED_LANGS= COMMONDIR=../../common include $(COMMONDIR)/Make-po.rules XGETTEXT_ARGS+=--language=C --keyword=_ $(shell if [ -f ${NAME}.pot ] ; then echo -n -j ; fi) apparmor-3.0.4/binutils/po/tr.po0000664000175000017500000000371614201060045014364 0ustar jjjj# Turkish translation for apparmor # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2018-05-19 23:10+0000\n" "Last-Translator: Kudret EMRE \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [seçenekler]\n" " seçenekler:\n" " -q | --quiet Hiçbir mesajı gösterme\n" " -h | --help Yardımı görüntüler\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "bilinmeyen veya uyumsuz seçenekler\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "bilinmeyen seçenek '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Evet\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Hayır - Bu sistemde kullanılabilir deÄŸil.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Hayır - önyüklemede devredışı bırakıldı.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Belki - policy arayüzü kullanılabilir deÄŸil.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "" "Belki - kullanılabilir olup olmadığını denetlemek için yetersiz yetki.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Hata - '%s'\n" apparmor-3.0.4/binutils/po/en_GB.po0000664000175000017500000000365514201060045014713 0ustar jjjj# English (United Kingdom) translation for apparmor # Copyright (c) 2016 Rosetta Contributors and Canonical Ltd 2016 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2016. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: AppArmor list \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2016-02-18 06:22+0000\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: en_GB\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "unknown or incompatible options\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "unknown option '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Yes\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "No - not available on this system.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "No - disabled at boot.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Maybe - policy interface not available.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "Maybe - insufficient permissions to determine availability.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Error - '%s'\n" apparmor-3.0.4/binutils/po/sw.po0000664000175000017500000000362414201060045014366 0ustar jjjj# Swahili translation for apparmor # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2019-11-14 12:33+0000\n" "Last-Translator: Swahilinux Administration \n" "Language-Team: Swahili \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-11-15 04:30+0000\n" "X-Generator: Launchpad (build c597c3229eb023b1e626162d5947141bf7befb13)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [chaguzi]\n" " chaguzi:\n" " -q | --quiet Usichapishe jumbe yoyote\n" " -h | --help Chapisha msaada\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "chaguo lisilojulikana au lisilofaa\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "chaguo lisilojulikana '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Ndio\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "La - haipo kwenye mfumo huu.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "La - ilizimwa kwenye washi.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Labda - kiolesura cha faragha hakipo.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "Labda - hamna ruhusa ya kutosha ili kuamua kama ipo.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Dosari - '%s'\n" apparmor-3.0.4/binutils/po/fa.po0000664000175000017500000000361614201060045014324 0ustar jjjj# Persian translation for apparmor # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2019-12-27 08:16+0000\n" "Last-Translator: VahidNameni \n" "Language-Team: Persian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-12-28 05:38+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "تنظیم نامعلوم یا ناسازگار\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "تنظیم '%s' ناشناخته است\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "بله\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "خیر- در این سیستم موجود نیست.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "خیر - ØºÛŒØ±ÙØ¹Ø§Ù„ در زمان boot.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "شاید - رابط سیاست گذاری در دسترس نیست.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "شاید - دسترسی ناکاÙÛŒ جهت شناسایی در دسترس پذیری.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "خطا - '%s'\n" apparmor-3.0.4/binutils/po/sv.po0000664000175000017500000000363014201060045014362 0ustar jjjj# Swedish translation for apparmor # Copyright (c) 2018 Rosetta Contributors and Canonical Ltd 2018 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2018. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2015-11-28 10:23-0800\n" "PO-Revision-Date: 2018-09-08 03:51+0000\n" "Last-Translator: Jonatan Nyberg \n" "Language-Team: Swedish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" #: ../aa_enabled.c:26 #, c-format msgid "" "%s: [options]\n" " options:\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n" msgstr "" "%s: [options]\n" " flaggor:\n" " -q | --quiet Skriv inte ut nÃ¥gra meddelanden\n" " -h | --help Skriv ut hjälp\n" #: ../aa_enabled.c:45 #, c-format msgid "unknown or incompatible options\n" msgstr "okända eller inkompatibla flaggor\n" #: ../aa_enabled.c:55 #, c-format msgid "unknown option '%s'\n" msgstr "okänd flagga '%s'\n" #: ../aa_enabled.c:64 #, c-format msgid "Yes\n" msgstr "Ja\n" #: ../aa_enabled.c:71 #, c-format msgid "No - not available on this system.\n" msgstr "Nej - inte tillgänglig pÃ¥ detta system.\n" #: ../aa_enabled.c:74 #, c-format msgid "No - disabled at boot.\n" msgstr "Nej - inaktiverad vid uppstart.\n" #: ../aa_enabled.c:77 #, c-format msgid "Maybe - policy interface not available.\n" msgstr "Kanske - policy gränssnitt inte tillgängliga.\n" #: ../aa_enabled.c:81 #, c-format msgid "Maybe - insufficient permissions to determine availability.\n" msgstr "" "Kanske - otillräckliga behörigheter för att bestämma tillgängligheten.\n" #: ../aa_enabled.c:84 #, c-format msgid "Error - '%s'\n" msgstr "Fel - '%s'\n" apparmor-3.0.4/binutils/aa-exec.pod0000664000175000017500000000557014201060045014770 0ustar jjjj# This publication is intellectual property of Canonical Ltd. Its contents # can be duplicated, either in part or in whole, provided that a copyright # label is visibly located on each copy. # # All information found in this book has been compiled with utmost # attention to detail. However, this does not guarantee complete accuracy. # Neither Canonical Ltd, the authors, nor the translators shall be held # liable for possible errors or the consequences thereof. # # Many of the software and hardware descriptions cited in this book # are registered trademarks. All trade names are subject to copyright # restrictions and may be registered trade marks. Canonical Ltd # essentially adheres to the manufacturer's spelling. # # Names of products and trademarks appearing in this book (with or without # specific notation) are likewise subject to trademark and trade protection # laws and may thus fall under copyright restrictions. # =pod =head1 NAME aa-exec - confine a program with the specified AppArmor profile =head1 SYNOPSIS B [options] [--] [IcommandE> ...] =head1 DESCRIPTION B is used to launch a program confined by the specified profile and or namespace. If both a profile and namespace are specified command will be confined by profile in the new policy namespace. If only a namespace is specified, the profile name of the current confinement will be used. If neither a profile or namespace is specified command will be run using standard profile attachment (ie. as if run without the aa-exec command). If the arguments are to be pasted to the IcommandE> being invoked by aa-exec then -- should be used to separate aa-exec arguments from the command. aa-exec -p profile1 -- ls -l =head1 OPTIONS B accepts the following arguments: =over 4 =item -p PROFILE, --profile=PROFILE confine IcommandE> with PROFILE. If the PROFILE is not specified use the current profile name (likely unconfined). =item -n NAMESPACE, --namespace=NAMESPACE use profiles in NAMESPACE. This will result in confinement transitioning to using the new profile namespace. =item -i, --immediate transition to PROFILE before doing executing IcommandE>. This subjects the running of IcommandE> to the exec transition rules of the current profile. =item -v, --verbose show commands being performed =item -d, --debug show commands and error codes =item -- Signal the end of options and disables further option processing. Any arguments after the -- are treated as arguments of the command. This is useful when passing arguments to the IcommandE> being invoked by aa-exec. =back =head1 BUGS If you find any bugs, please report them at L =head1 SEE ALSO aa-stack(8), aa-namespace(8), apparmor(7), apparmor.d(5), aa_change_profile(3), aa_change_onexec(3) and L. =cut apparmor-3.0.4/binutils/aa-exec.10000664000175000017500000001432214201060300014333 0ustar jjjj.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "AA-EXEC 1" .TH AA-EXEC 1 "2022-02-10" "AppArmor 3.0.4" "AppArmor" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" aa\-exec \- confine a program with the specified AppArmor profile .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBaa-exec\fR [options] [\-\-] [\fI\fR ...] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBaa-exec\fR is used to launch a program confined by the specified profile and or namespace. If both a profile and namespace are specified command will be confined by profile in the new policy namespace. If only a namespace is specified, the profile name of the current confinement will be used. If neither a profile or namespace is specified command will be run using standard profile attachment (ie. as if run without the aa-exec command). .PP If the arguments are to be pasted to the \fI\fR being invoked by aa-exec then \*(-- should be used to separate aa-exec arguments from the command. aa-exec \-p profile1 \*(-- ls \-l .SH "OPTIONS \fBaa-exec\fP accepts the following arguments:" .IX Header "OPTIONS aa-exec accepts the following arguments:" .IP "\-p \s-1PROFILE,\s0 \-\-profile=PROFILE" 4 .IX Item "-p PROFILE, --profile=PROFILE" confine \fI\fR with \s-1PROFILE.\s0 If the \s-1PROFILE\s0 is not specified use the current profile name (likely unconfined). .IP "\-n \s-1NAMESPACE,\s0 \-\-namespace=NAMESPACE" 4 .IX Item "-n NAMESPACE, --namespace=NAMESPACE" use profiles in \s-1NAMESPACE.\s0 This will result in confinement transitioning to using the new profile namespace. .IP "\-i, \-\-immediate" 4 .IX Item "-i, --immediate" transition to \s-1PROFILE\s0 before doing executing \fI\fR. This subjects the running of \fI\fR to the exec transition rules of the current profile. .IP "\-v, \-\-verbose" 4 .IX Item "-v, --verbose" show commands being performed .IP "\-d, \-\-debug" 4 .IX Item "-d, --debug" show commands and error codes .IP "\-\-" 4 Signal the end of options and disables further option processing. Any arguments after the \*(-- are treated as arguments of the command. This is useful when passing arguments to the \fI\fR being invoked by aa-exec. .SH "BUGS" .IX Header "BUGS" If you find any bugs, please report them at .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBaa\-stack\fR\|(8), \fBaa\-namespace\fR\|(8), \fBapparmor\fR\|(7), \fBapparmor.d\fR\|(5), \fBaa_change_profile\fR\|(3), \&\fBaa_change_onexec\fR\|(3) and . apparmor-3.0.4/binutils/aa-enabled.pod0000664000175000017500000000447114201060045015435 0ustar jjjj# This publication is intellectual property of Canonical Ltd. Its contents # can be duplicated, either in part or in whole, provided that a copyright # label is visibly located on each copy. # # All information found in this book has been compiled with utmost # attention to detail. However, this does not guarantee complete accuracy. # Neither Canonical Ltd, the authors, nor the translators shall be held # liable for possible errors or the consequences thereof. # # Many of the software and hardware descriptions cited in this book # are registered trademarks. All trade names are subject to copyright # restrictions and may be registered trade marks. Canonical Ltd # essentially adheres to the manufacturer's spelling. # # Names of products and trademarks appearing in this book (with or without # specific notation) are likewise subject to trademark and trade protection # laws and may thus fall under copyright restrictions. # =pod =head1 NAME aa-enabled - test whether AppArmor is enabled =head1 SYNOPSIS B [options] =head1 DESCRIPTION B is used to determine if AppArmor is enabled. =head1 OPTIONS B accepts the following arguments: =over 4 =item -h, --help Display a brief usage guide. =item -q, --quiet Do not output anything to stdout. This option is intended to be used by scripts that simply want to use the exit code to determine if AppArmor is enabled. =item -x, --exclusive Require AppArmor to have exclusive access to shared LSM interfaces to be considered enabled. =back =head1 EXIT STATUS Upon exiting, B will set its exit status to the following values: =over 4 =item B<0> if AppArmor is enabled. =item B<1> if AppArmor is not enabled/loaded. =item B<2> intentionally not used as an B exit status. =item B<3> if the AppArmor control files aren't available under /sys/kernel/security/. =item B<4> if B doesn't have enough privileges to read the apparmor control files. =item B<10> AppArmor is enabled but does not have access to shared LSM interfaces. =item B<64> if any unexpected error or condition is encountered. =back =head1 BUGS If you find any bugs, please report them at L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa_is_enabled(2), and L. =cut apparmor-3.0.4/binutils/cJSON.h0000664000175000017500000003667214201060045014055 0ustar jjjj/* Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef cJSON__h #define cJSON__h #ifdef __cplusplus extern "C" { #endif #if !defined(__WINDOWS__) && (defined(WIN32) || defined(WIN64) || defined(_MSC_VER) || defined(_WIN32)) #define __WINDOWS__ #endif #ifdef __WINDOWS__ /* When compiling for windows, we specify a specific calling convention to avoid issues where we are being called from a project with a different default calling convention. For windows you have 3 define options: CJSON_HIDE_SYMBOLS - Define this in the case where you don't want to ever dllexport symbols CJSON_EXPORT_SYMBOLS - Define this on library build when you want to dllexport symbols (default) CJSON_IMPORT_SYMBOLS - Define this if you want to dllimport symbol For *nix builds that support visibility attribute, you can define similar behavior by setting default visibility to hidden by adding -fvisibility=hidden (for gcc) or -xldscope=hidden (for sun cc) to CFLAGS then using the CJSON_API_VISIBILITY flag to "export" the same symbols the way CJSON_EXPORT_SYMBOLS does */ #define CJSON_CDECL __cdecl #define CJSON_STDCALL __stdcall /* export symbols by default, this is necessary for copy pasting the C and header file */ #if !defined(CJSON_HIDE_SYMBOLS) && !defined(CJSON_IMPORT_SYMBOLS) && !defined(CJSON_EXPORT_SYMBOLS) #define CJSON_EXPORT_SYMBOLS #endif #if defined(CJSON_HIDE_SYMBOLS) #define CJSON_PUBLIC(type) type CJSON_STDCALL #elif defined(CJSON_EXPORT_SYMBOLS) #define CJSON_PUBLIC(type) __declspec(dllexport) type CJSON_STDCALL #elif defined(CJSON_IMPORT_SYMBOLS) #define CJSON_PUBLIC(type) __declspec(dllimport) type CJSON_STDCALL #endif #else /* !__WINDOWS__ */ #define CJSON_CDECL #define CJSON_STDCALL #if (defined(__GNUC__) || defined(__SUNPRO_CC) || defined (__SUNPRO_C)) && defined(CJSON_API_VISIBILITY) #define CJSON_PUBLIC(type) __attribute__((visibility("default"))) type #else #define CJSON_PUBLIC(type) type #endif #endif /* project version */ #define CJSON_VERSION_MAJOR 1 #define CJSON_VERSION_MINOR 7 #define CJSON_VERSION_PATCH 13 #include /* cJSON Types: */ #define cJSON_Invalid (0) #define cJSON_False (1 << 0) #define cJSON_True (1 << 1) #define cJSON_NULL (1 << 2) #define cJSON_Number (1 << 3) #define cJSON_String (1 << 4) #define cJSON_Array (1 << 5) #define cJSON_Object (1 << 6) #define cJSON_Raw (1 << 7) /* raw json */ #define cJSON_IsReference 256 #define cJSON_StringIsConst 512 /* The cJSON structure: */ typedef struct cJSON { /* next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem */ struct cJSON *next; struct cJSON *prev; /* An array or object item will have a child pointer pointing to a chain of the items in the array/object. */ struct cJSON *child; /* The type of the item, as above. */ int type; /* The item's string, if type==cJSON_String and type == cJSON_Raw */ char *valuestring; /* writing to valueint is DEPRECATED, use cJSON_SetNumberValue instead */ int valueint; /* The item's number, if type==cJSON_Number */ double valuedouble; /* The item's name string, if this item is the child of, or is in the list of subitems of an object. */ char *string; } cJSON; typedef struct cJSON_Hooks { /* malloc/free are CDECL on Windows regardless of the default calling convention of the compiler, so ensure the hooks allow passing those functions directly. */ void *(CJSON_CDECL *malloc_fn)(size_t sz); void (CJSON_CDECL *free_fn)(void *ptr); } cJSON_Hooks; typedef int cJSON_bool; /* Limits how deeply nested arrays/objects can be before cJSON rejects to parse them. * This is to prevent stack overflows. */ #ifndef CJSON_NESTING_LIMIT #define CJSON_NESTING_LIMIT 1000 #endif /* returns the version of cJSON as a string */ CJSON_PUBLIC(const char*) cJSON_Version(void); /* Supply malloc, realloc and free functions to cJSON */ CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks); /* Memory Management: the caller is always responsible to free the results from all variants of cJSON_Parse (with cJSON_Delete) and cJSON_Print (with stdlib free, cJSON_Hooks.free_fn, or cJSON_free as appropriate). The exception is cJSON_PrintPreallocated, where the caller has full responsibility of the buffer. */ /* Supply a block of JSON, and this returns a cJSON object you can interrogate. */ CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value); CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length); /* ParseWithOpts allows you to require (and check) that the JSON is null terminated, and to retrieve the pointer to the final byte parsed. */ /* If you supply a ptr in return_parse_end and parsing fails, then return_parse_end will contain a pointer to the error so will match cJSON_GetErrorPtr(). */ CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated); CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated); /* Render a cJSON entity to text for transfer/storage. */ CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item); /* Render a cJSON entity to text for transfer/storage without any formatting. */ CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item); /* Render a cJSON entity to text using a buffered strategy. prebuffer is a guess at the final size. guessing well reduces reallocation. fmt=0 gives unformatted, =1 gives formatted */ CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt); /* Render a cJSON entity to text using a buffer already allocated in memory with given length. Returns 1 on success and 0 on failure. */ /* NOTE: cJSON is not always 100% accurate in estimating how much memory it will use, so to be safe allocate 5 bytes more than you actually need */ CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format); /* Delete a cJSON entity and all subentities. */ CJSON_PUBLIC(void) cJSON_Delete(cJSON *item); /* Returns the number of items in an array (or object). */ CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array); /* Retrieve item number "index" from array "array". Returns NULL if unsuccessful. */ CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index); /* Get item "string" from object. Case insensitive. */ CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string); CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string); CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string); /* For analysing failed parses. This returns a pointer to the parse error. You'll probably need to look a few chars back to make sense of it. Defined when cJSON_Parse() returns 0. 0 when cJSON_Parse() succeeds. */ CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void); /* Check item type and return its value */ CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item); CJSON_PUBLIC(double) cJSON_GetNumberValue(cJSON *item); /* These functions check the type of an item */ CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item); CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item); /* These calls create a cJSON item of the appropriate type. */ CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void); CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void); CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void); CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean); CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num); CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string); /* raw json */ CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw); CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void); CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void); /* Create a string where valuestring references a string so * it will not be freed by cJSON_Delete */ CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string); /* Create an object/array that only references it's elements so * they will not be freed by cJSON_Delete */ CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child); CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child); /* These utilities create an Array of count items. * The parameter count cannot be greater than the number of elements in the number array, otherwise array access will be out of bounds.*/ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count); CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count); CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count); CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count); /* Append item to the specified array/object. */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item); CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item); /* Use this when string is definitely const (i.e. a literal, or as good as), and will definitely survive the cJSON object. * WARNING: When this function was used, make sure to always check that (item->type & cJSON_StringIsConst) is zero before * writing to `item->string` */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item); /* Append reference to item to the specified array/object. Use this when you want to add an existing cJSON to a new cJSON, but don't want to corrupt your existing cJSON. */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item); CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item); /* Remove/Detach items from Arrays/Objects. */ CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item); CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which); CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which); CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string); CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string); CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string); CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string); /* Update array items. */ CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem); /* Shifts pre-existing items to the right. */ CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement); CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem); CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem); CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object,const char *string,cJSON *newitem); /* Duplicate a cJSON item */ CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse); /* Duplicate will create a new, identical cJSON item to the one you pass, in new memory that will * need to be released. With recurse!=0, it will duplicate any children connected to the item. * The item->next and ->prev pointers are always zero on return from Duplicate. */ /* Recursively compare two cJSON items for equality. If either a or b is NULL or invalid, they will be considered unequal. * case_sensitive determines if object keys are treated case sensitive (1) or case insensitive (0) */ CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive); /* Minify a strings, remove blank characters(such as ' ', '\t', '\r', '\n') from strings. * The input pointer json cannot point to a read-only address area, such as a string constant, * but should point to a readable and writable adress area. */ CJSON_PUBLIC(void) cJSON_Minify(char *json); /* Helper functions for creating and adding items to an object at the same time. * They return the added item or NULL on failure. */ CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean); CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number); CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string); CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw); CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name); CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name); /* When assigning an integer value, it needs to be propagated to valuedouble too. */ #define cJSON_SetIntValue(object, number) ((object) ? (object)->valueint = (object)->valuedouble = (number) : (number)) /* helper for the cJSON_SetNumberValue macro */ CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number); #define cJSON_SetNumberValue(object, number) ((object != NULL) ? cJSON_SetNumberHelper(object, (double)number) : (number)) /* Change the valuestring of a cJSON_String object, only takes effect when type of object is cJSON_String */ CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring); /* Macro for iterating over an array or object */ #define cJSON_ArrayForEach(element, array) for(element = (array != NULL) ? (array)->child : NULL; element != NULL; element = element->next) /* malloc/free objects using the malloc/free functions that have been set with cJSON_InitHooks */ CJSON_PUBLIC(void *) cJSON_malloc(size_t size); CJSON_PUBLIC(void) cJSON_free(void *object); #ifdef __cplusplus } #endif #endif apparmor-3.0.4/binutils/Makefile0000664000175000017500000001064314201060045014416 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 2015 # Canonical Ltd. (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # ---------------------------------------------------------------------- NAME=aa-binutils all: COMMONDIR=../common/ include $(COMMONDIR)/Make.rules DESTDIR=/ BINDIR=${DESTDIR}/usr/bin SBINDIR=${DESTDIR}/usr/sbin LOCALEDIR=/usr/share/locale MANPAGES=aa-enabled.1 aa-exec.1 aa-features-abi.1 aa-status.8 WARNINGS = -Wall CPP_WARNINGS = ifndef CFLAGS CFLAGS = -g -O2 -pipe ifdef DEBUG CFLAGS += -pg -D DEBUG endif ifdef COVERAGE CFLAGS = -g -pg -fprofile-arcs -ftest-coverage endif endif #CFLAGS EXTRA_CFLAGS = ${CFLAGS} ${CPPFLAGS} ${EXTRA_CXXFLAGS} ${CPP_WARNINGS} $(EXTRA_WARNINGS) #INCLUDEDIR = /usr/src/linux/include INCLUDEDIR = ifdef INCLUDEDIR CFLAGS += -I$(INCLUDEDIR) endif # Internationalization support. Define a package and a LOCALEDIR EXTRA_CFLAGS+=-DPACKAGE=\"${NAME}\" -DLOCALEDIR=\"${LOCALEDIR}\" SRCS = aa_enabled.c HDRS = BINTOOLS = aa-enabled aa-exec aa-features-abi SBINTOOLS = aa-status AALIB = -Wl,-Bstatic -lapparmor -Wl,-Bdynamic -lpthread ifdef WITH_LIBINTL AALIB += -lintl endif ifdef USE_SYSTEM # Using the system libapparmor so Makefile dependencies can't be used LIBAPPARMOR_A = INCLUDE_APPARMOR = APPARMOR_H = LIBAPPARMOR_LDFLAGS = else LIBAPPARMOR_SRC = ../libraries/libapparmor/ LOCAL_LIBAPPARMOR_INCLUDE = $(LIBAPPARMOR_SRC)/include LOCAL_LIBAPPARMOR_LDPATH = $(LIBAPPARMOR_SRC)/src/.libs LIBAPPARMOR_A = $(LOCAL_LIBAPPARMOR_LDPATH)/libapparmor.a INCLUDE_APPARMOR = -I$(LOCAL_LIBAPPARMOR_INCLUDE) APPARMOR_H = $(LOCAL_LIBAPPARMOR_INCLUDE)/sys/apparmor.h LIBAPPARMOR_LDFLAGS = -L$(LOCAL_LIBAPPARMOR_LDPATH) endif EXTRA_CFLAGS += $(INCLUDE_APPARMOR) LDFLAGS += $(LIBAPPARMOR_LDFLAGS) ifdef V VERBOSE = 1 endif ifndef VERBOSE VERBOSE = 0 endif ifeq ($(VERBOSE),1) BUILD_OUTPUT = Q = else BUILD_OUTPUT = > /dev/null 2>&1 Q = @ endif export Q VERBOSE BUILD_OUTPUT po/%.pot: %.c $(MAKE) -C po $(@F) NAME=$* SOURCES=$*.c # targets arranged this way so that people who don't want full docs can # pick specific targets they want. arch: $(BINTOOLS) $(SBINTOOLS) manpages: $(MANPAGES) docs: manpages indep: docs $(Q)$(MAKE) -C po all all: arch indep .PHONY: coverage coverage: $(MAKE) clean $(BINTOOLS) $(SBINTOOLS) COVERAGE=1 ifndef USE_SYSTEM $(LIBAPPARMOR_A): @if [ ! -f $@ ]; then \ echo "error: $@ is missing. Pick one of these possible solutions:" 1>&2; \ echo " 1) Build against the in-tree libapparmor by building it first and then trying again. See the top-level README for help." 1>&2; \ echo " 2) Build against the system libapparmor by adding USE_SYSTEM=1 to your make command." 1>&2;\ exit 1; \ fi endif aa-features-abi: aa_features_abi.c $(LIBAPPARMOR_A) $(CC) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ $< $(LIBS) $(AALIB) aa-enabled: aa_enabled.c $(LIBAPPARMOR_A) $(CC) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ $< $(LIBS) $(AALIB) aa-exec: aa_exec.c $(LIBAPPARMOR_A) $(CC) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ $< $(LIBS) $(AALIB) aa-status: aa_status.c cJSON.o $(LIBAPPARMOR_A) $(CC) $(LDFLAGS) $(EXTRA_CFLAGS) -o $@ $< $(LIBS) $(AALIB) cJSON.o cJSON.o: cJSON.c cJSON.h $(CC) $(EXTRA_CFLAGS) -c -o $@ $< .SILENT: check .PHONY: check check: check_pod_files tests .SILENT: tests tests: $(BINTOOLS) $(SBINTOOLS) $(TESTS) echo "no tests atm" .PHONY: install install: install-indep install-arch .PHONY: install-arch install-arch: arch install -m 755 -d ${BINDIR} install -m 755 ${BINTOOLS} ${BINDIR} install -m 755 -d ${SBINDIR} ln -sf aa-status ${SBINDIR}/apparmor_status install -m 755 ${SBINTOOLS} ${SBINDIR} .PHONY: install-indep install-indep: indep $(MAKE) -C po install NAME=${NAME} DESTDIR=${DESTDIR} $(MAKE) install_manpages DESTDIR=${DESTDIR} ln -sf aa-status.8 ${DESTDIR}/${MANDIR}/man8/apparmor_status.8 ifndef VERBOSE .SILENT: clean endif .PHONY: clean clean: pod_clean rm -f core core.* *.o *.s *.a *~ *.gcda *.gcno rm -f gmon.out rm -f $(BINTOOLS) $(SBINTOOLS) $(TESTS) $(MAKE) -s -C po clean apparmor-3.0.4/binutils/aa-features-abi.10000664000175000017500000001277514201060300015770 0ustar jjjj.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "AA-FEATURES-ABI 1" .TH AA-FEATURES-ABI 1 "2022-02-10" "AppArmor 3.0.4" "AppArmor" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" aa\-features\-abi \- Extract, validate and manipulate AppArmor feature abis .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBaa-features-abi\fR [\s-1OPTIONS\s0] <\s-1SOURCE\s0> [\s-1OUTPUT OPTIONS\s0] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBaa-features-abi\fR is used to extract a features abi and output to either stdout or a specified file. A \s-1SOURCE_OPTION\s0 must be specified. If an output option is not specified the features abi is written to stdout. .SH "OPTIONS" .IX Header "OPTIONS" \&\fBaa-features-abi\fR accepts the following arguments: .IP "\-h, \-\-help" 4 .IX Item "-h, --help" Display a brief usage guide. .IP "\-d, \-\-debug" 4 .IX Item "-d, --debug" show messages with debugging information .IP "\-v, \-\-verbose" 4 .IX Item "-v, --verbose" show messages with stats .SH "SOURCE" .IX Header "SOURCE" .IP "\-x, \-\-extract" 4 .IX Item "-x, --extract" Extract the features abi for the kernel .IP "\-f \s-1FILE,\s0 \-\-file=FILE" 4 .IX Item "-f FILE, --file=FILE" Load the features abi from \s-1FILE\s0 and send it to \s-1OUTPUT OPTIONS.\s0 .SH "OUTPUT OPTIONS" .IX Header "OUTPUT OPTIONS" .IP "\-\-stdout" 4 .IX Item "--stdout" Write the features abi to \fIstdout\fR, this is the default if no output option is specified. .IP "\-w \s-1FILE,\s0 \-\-write \s-1FILE\s0" 4 .IX Item "-w FILE, --write FILE" Write the features abi to \fI\s-1FILE\s0\fR. .SH "BUGS" .IX Header "BUGS" If you find any bugs, please report them at . .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBapparmor\fR\|(7), \fBapparmor.d\fR\|(5), \fBaa_features\fR\|(3), and . apparmor-3.0.4/binutils/aa_exec.c0000664000175000017500000001254614201060045014513 0ustar jjjj/* * Copyright (c) 2015 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #include #include #include #include #include #include #include #include #include #include #include #define _(s) gettext(s) static const char *opt_profile = NULL; static const char *opt_namespace = NULL; static bool opt_debug = false; static bool opt_immediate = false; static bool opt_verbose = false; static pid_t pid = 0; static void usage(const char *name, bool error) { FILE *stream = stdout; int status = EXIT_SUCCESS; if (error) { stream = stderr; status = EXIT_FAILURE; } fprintf(stream, _("USAGE: %s [OPTIONS] \n" "\n" "Confine with the specified PROFILE.\n" "\n" "OPTIONS:\n" " -p PROFILE, --profile=PROFILE PROFILE to confine with\n" " -n NAMESPACE, --namespace=NAMESPACE NAMESPACE to confine in\n" " -d, --debug show messages with debugging information\n" " -i, --immediate change profile immediately instead of at exec\n" " -v, --verbose show messages with stats\n" " -h, --help display this help\n" "\n"), name); exit(status); } #define error(fmt, args...) _error(_("[%ld] aa-exec: ERROR: " fmt "\n"), (long)pid, ## args) static void _error(const char *fmt, ...) { va_list args; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); exit(EXIT_FAILURE); } #define debug(fmt, args...) _debug(_("[%ld] aa-exec: DEBUG: " fmt "\n"), (long)pid, ## args) static void _debug(const char *fmt, ...) { va_list args; if (!opt_debug) return; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } #define verbose(fmt, args...) _verbose(_("[%ld] " fmt "\n"), (long)pid, ## args) static void _verbose(const char *fmt, ...) { va_list args; if (!opt_verbose) return; va_start(args, fmt); vfprintf(stderr, fmt, args); va_end(args); } static void verbose_print_argv(char **argv) { if (!opt_verbose) return; fprintf(stderr, _("[%ld] exec"), (long)pid); for (; *argv; argv++) fprintf(stderr, " %s", *argv); fprintf(stderr, "\n"); } static char **parse_args(int argc, char **argv) { int opt; struct option long_opts[] = { {"debug", no_argument, 0, 'd'}, {"help", no_argument, 0, 'h'}, {"profile", required_argument, 0, 'p'}, {"namespace", required_argument, 0, 'n'}, {"immediate", no_argument, 0, 'i'}, {"verbose", no_argument, 0, 'v'}, }; while ((opt = getopt_long(argc, argv, "+dhp:n:iv", long_opts, NULL)) != -1) { switch (opt) { case 'd': opt_debug = true; break; case 'h': usage(argv[0], false); break; case 'p': if (opt_profile) error("Multiple -p/--profile parameters given"); opt_profile = optarg; break; case 'n': if (opt_namespace) error("Multiple -n/--namespace parameters given"); opt_namespace = optarg; break; case 'i': opt_immediate = true; break; case 'v': opt_verbose = true; break; default: usage(argv[0], true); break; } } if (optind >= argc) usage(argv[0], true); return argv + optind; } static void build_name(char *name, size_t name_len, const char *namespace, const char *profile) { size_t required_len = 1; /* reserve 1 byte for NUL-terminator */ if (namespace) required_len += 1 + strlen(namespace) + 3; /* ::// */ if (profile) required_len += strlen(profile); if (required_len > name_len) error("name too long (%zu > %zu)", required_len, name_len); name[0] = '\0'; if (namespace) { strcat(name, ":"); strcat(name, namespace); strcat(name, "://"); } if (profile) strcat(name, profile); } int main(int argc, char **argv) { char name[PATH_MAX]; int rc = 0; /* IMPORTANT: pid must be initialized before doing anything else since * it is used in a global context when printing messages */ pid = getpid(); argv = parse_args(argc, argv); if (opt_namespace || opt_profile) build_name(name, sizeof(name), opt_namespace, opt_profile); else goto exec; if (opt_immediate) { verbose("aa_change_profile(\"%s\")", name); rc = aa_change_profile(name); debug("%d = aa_change_profile(\"%s\")", rc, name); } else { verbose("aa_change_onexec(\"%s\")", name); rc = aa_change_onexec(name); debug("%d = aa_change_onexec(\"%s\")", rc, name); } if (rc) { if (errno == ENOENT) { error("%s '%s' does not exist", opt_profile ? "profile" : "namespace", name); } else if (errno == EACCES) { error("insufficient permissions to change to the %s '%s'", opt_profile ? "profile" : "namespace", name); } else if (errno == EINVAL) { error("AppArmor interface not available"); } else { error("%m"); } } exec: verbose_print_argv(argv); execvp(argv[0], argv); error("Failed to execute \"%s\": %m", argv[0]); } apparmor-3.0.4/binutils/cJSON.c0000664000175000017500000022653714201060045014051 0ustar jjjj/* Copyright (c) 2009-2017 Dave Gamble and cJSON contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /* cJSON */ /* JSON parser in C. */ /* disable warnings about old C89 functions in MSVC */ #if !defined(_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) #define _CRT_SECURE_NO_DEPRECATE #endif #ifdef __GNUC__ #pragma GCC visibility push(default) #endif #if defined(_MSC_VER) #pragma warning (push) /* disable warning about single line comments in system headers */ #pragma warning (disable : 4001) #endif #include #include #include #include #include #include #include #ifdef ENABLE_LOCALES #include #endif #if defined(_MSC_VER) #pragma warning (pop) #endif #ifdef __GNUC__ #pragma GCC visibility pop #endif #include "cJSON.h" /* define our own boolean type */ #ifdef true #undef true #endif #define true ((cJSON_bool)1) #ifdef false #undef false #endif #define false ((cJSON_bool)0) /* define isnan and isinf for ANSI C, if in C99 or above, isnan and isinf has been defined in math.h */ #ifndef isinf #define isinf(d) (isnan((d - d)) && !isnan(d)) #endif #ifndef isnan #define isnan(d) (d != d) #endif #ifndef NAN #define NAN 0.0/0.0 #endif typedef struct { const unsigned char *json; size_t position; } error; static error global_error = { NULL, 0 }; CJSON_PUBLIC(const char *) cJSON_GetErrorPtr(void) { return (const char*) (global_error.json + global_error.position); } CJSON_PUBLIC(char *) cJSON_GetStringValue(cJSON *item) { if (!cJSON_IsString(item)) { return NULL; } return item->valuestring; } CJSON_PUBLIC(double) cJSON_GetNumberValue(cJSON *item) { if (!cJSON_IsNumber(item)) { return NAN; } return item->valuedouble; } /* This is a safeguard to prevent copy-pasters from using incompatible C and header files */ #if (CJSON_VERSION_MAJOR != 1) || (CJSON_VERSION_MINOR != 7) || (CJSON_VERSION_PATCH != 13) #error cJSON.h and cJSON.c have different versions. Make sure that both have the same. #endif CJSON_PUBLIC(const char*) cJSON_Version(void) { static char version[15]; sprintf(version, "%i.%i.%i", CJSON_VERSION_MAJOR, CJSON_VERSION_MINOR, CJSON_VERSION_PATCH); return version; } /* Case insensitive string comparison, doesn't consider two NULL pointers equal though */ static int case_insensitive_strcmp(const unsigned char *string1, const unsigned char *string2) { if ((string1 == NULL) || (string2 == NULL)) { return 1; } if (string1 == string2) { return 0; } for(; tolower(*string1) == tolower(*string2); (void)string1++, string2++) { if (*string1 == '\0') { return 0; } } return tolower(*string1) - tolower(*string2); } typedef struct internal_hooks { void *(CJSON_CDECL *allocate)(size_t size); void (CJSON_CDECL *deallocate)(void *pointer); void *(CJSON_CDECL *reallocate)(void *pointer, size_t size); } internal_hooks; #if defined(_MSC_VER) /* work around MSVC error C2322: '...' address of dllimport '...' is not static */ static void * CJSON_CDECL internal_malloc(size_t size) { return malloc(size); } static void CJSON_CDECL internal_free(void *pointer) { free(pointer); } static void * CJSON_CDECL internal_realloc(void *pointer, size_t size) { return realloc(pointer, size); } #else #define internal_malloc malloc #define internal_free free #define internal_realloc realloc #endif /* strlen of character literals resolved at compile time */ #define static_strlen(string_literal) (sizeof(string_literal) - sizeof("")) static internal_hooks global_hooks = { internal_malloc, internal_free, internal_realloc }; static unsigned char* cJSON_strdup(const unsigned char* string, const internal_hooks * const hooks) { size_t length = 0; unsigned char *copy = NULL; if (string == NULL) { return NULL; } length = strlen((const char*)string) + sizeof(""); copy = (unsigned char*)hooks->allocate(length); if (copy == NULL) { return NULL; } memcpy(copy, string, length); return copy; } CJSON_PUBLIC(void) cJSON_InitHooks(cJSON_Hooks* hooks) { if (hooks == NULL) { /* Reset hooks */ global_hooks.allocate = malloc; global_hooks.deallocate = free; global_hooks.reallocate = realloc; return; } global_hooks.allocate = malloc; if (hooks->malloc_fn != NULL) { global_hooks.allocate = hooks->malloc_fn; } global_hooks.deallocate = free; if (hooks->free_fn != NULL) { global_hooks.deallocate = hooks->free_fn; } /* use realloc only if both free and malloc are used */ global_hooks.reallocate = NULL; if ((global_hooks.allocate == malloc) && (global_hooks.deallocate == free)) { global_hooks.reallocate = realloc; } } /* Internal constructor. */ static cJSON *cJSON_New_Item(const internal_hooks * const hooks) { cJSON* node = (cJSON*)hooks->allocate(sizeof(cJSON)); if (node) { memset(node, '\0', sizeof(cJSON)); } return node; } /* Delete a cJSON structure. */ CJSON_PUBLIC(void) cJSON_Delete(cJSON *item) { cJSON *next = NULL; while (item != NULL) { next = item->next; if (!(item->type & cJSON_IsReference) && (item->child != NULL)) { cJSON_Delete(item->child); } if (!(item->type & cJSON_IsReference) && (item->valuestring != NULL)) { global_hooks.deallocate(item->valuestring); } if (!(item->type & cJSON_StringIsConst) && (item->string != NULL)) { global_hooks.deallocate(item->string); } global_hooks.deallocate(item); item = next; } } /* get the decimal point character of the current locale */ static unsigned char get_decimal_point(void) { #ifdef ENABLE_LOCALES struct lconv *lconv = localeconv(); return (unsigned char) lconv->decimal_point[0]; #else return '.'; #endif } typedef struct { const unsigned char *content; size_t length; size_t offset; size_t depth; /* How deeply nested (in arrays/objects) is the input at the current offset. */ internal_hooks hooks; } parse_buffer; /* check if the given size is left to read in a given parse buffer (starting with 1) */ #define can_read(buffer, size) ((buffer != NULL) && (((buffer)->offset + size) <= (buffer)->length)) /* check if the buffer can be accessed at the given index (starting with 0) */ #define can_access_at_index(buffer, index) ((buffer != NULL) && (((buffer)->offset + index) < (buffer)->length)) #define cannot_access_at_index(buffer, index) (!can_access_at_index(buffer, index)) /* get a pointer to the buffer at the position */ #define buffer_at_offset(buffer) ((buffer)->content + (buffer)->offset) /* Parse the input text to generate a number, and populate the result into item. */ static cJSON_bool parse_number(cJSON * const item, parse_buffer * const input_buffer) { double number = 0; unsigned char *after_end = NULL; unsigned char number_c_string[64]; unsigned char decimal_point = get_decimal_point(); size_t i = 0; if ((input_buffer == NULL) || (input_buffer->content == NULL)) { return false; } /* copy the number into a temporary buffer and replace '.' with the decimal point * of the current locale (for strtod) * This also takes care of '\0' not necessarily being available for marking the end of the input */ for (i = 0; (i < (sizeof(number_c_string) - 1)) && can_access_at_index(input_buffer, i); i++) { switch (buffer_at_offset(input_buffer)[i]) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '+': case '-': case 'e': case 'E': number_c_string[i] = buffer_at_offset(input_buffer)[i]; break; case '.': number_c_string[i] = decimal_point; break; default: goto loop_end; } } loop_end: number_c_string[i] = '\0'; number = strtod((const char*)number_c_string, (char**)&after_end); if (number_c_string == after_end) { return false; /* parse_error */ } item->valuedouble = number; /* use saturation in case of overflow */ if (number >= INT_MAX) { item->valueint = INT_MAX; } else if (number <= (double)INT_MIN) { item->valueint = INT_MIN; } else { item->valueint = (int)number; } item->type = cJSON_Number; input_buffer->offset += (size_t)(after_end - number_c_string); return true; } /* don't ask me, but the original cJSON_SetNumberValue returns an integer or double */ CJSON_PUBLIC(double) cJSON_SetNumberHelper(cJSON *object, double number) { if (number >= INT_MAX) { object->valueint = INT_MAX; } else if (number <= (double)INT_MIN) { object->valueint = INT_MIN; } else { object->valueint = (int)number; } return object->valuedouble = number; } CJSON_PUBLIC(char*) cJSON_SetValuestring(cJSON *object, const char *valuestring) { char *copy = NULL; /* if object's type is not cJSON_String or is cJSON_IsReference, it should not set valuestring */ if (!(object->type & cJSON_String) || (object->type & cJSON_IsReference)) { return NULL; } if (strlen(valuestring) <= strlen(object->valuestring)) { strcpy(object->valuestring, valuestring); return object->valuestring; } copy = (char*) cJSON_strdup((const unsigned char*)valuestring, &global_hooks); if (copy == NULL) { return NULL; } if (object->valuestring != NULL) { cJSON_free(object->valuestring); } object->valuestring = copy; return copy; } typedef struct { unsigned char *buffer; size_t length; size_t offset; size_t depth; /* current nesting depth (for formatted printing) */ cJSON_bool noalloc; cJSON_bool format; /* is this print a formatted print */ internal_hooks hooks; } printbuffer; /* realloc printbuffer if necessary to have at least "needed" bytes more */ static unsigned char* ensure(printbuffer * const p, size_t needed) { unsigned char *newbuffer = NULL; size_t newsize = 0; if ((p == NULL) || (p->buffer == NULL)) { return NULL; } if ((p->length > 0) && (p->offset >= p->length)) { /* make sure that offset is valid */ return NULL; } if (needed > INT_MAX) { /* sizes bigger than INT_MAX are currently not supported */ return NULL; } needed += p->offset + 1; if (needed <= p->length) { return p->buffer + p->offset; } if (p->noalloc) { return NULL; } /* calculate new buffer size */ if (needed > (INT_MAX / 2)) { /* overflow of int, use INT_MAX if possible */ if (needed <= INT_MAX) { newsize = INT_MAX; } else { return NULL; } } else { newsize = needed * 2; } if (p->hooks.reallocate != NULL) { /* reallocate with realloc if available */ newbuffer = (unsigned char*)p->hooks.reallocate(p->buffer, newsize); if (newbuffer == NULL) { p->hooks.deallocate(p->buffer); p->length = 0; p->buffer = NULL; return NULL; } } else { /* otherwise reallocate manually */ newbuffer = (unsigned char*)p->hooks.allocate(newsize); if (!newbuffer) { p->hooks.deallocate(p->buffer); p->length = 0; p->buffer = NULL; return NULL; } if (newbuffer) { memcpy(newbuffer, p->buffer, p->offset + 1); } p->hooks.deallocate(p->buffer); } p->length = newsize; p->buffer = newbuffer; return newbuffer + p->offset; } /* calculate the new length of the string in a printbuffer and update the offset */ static void update_offset(printbuffer * const buffer) { const unsigned char *buffer_pointer = NULL; if ((buffer == NULL) || (buffer->buffer == NULL)) { return; } buffer_pointer = buffer->buffer + buffer->offset; buffer->offset += strlen((const char*)buffer_pointer); } /* securely comparison of floating-point variables */ static cJSON_bool compare_double(double a, double b) { double maxVal = fabs(a) > fabs(b) ? fabs(a) : fabs(b); return (fabs(a - b) <= maxVal * DBL_EPSILON); } /* Render the number nicely from the given item into a string. */ static cJSON_bool print_number(const cJSON * const item, printbuffer * const output_buffer) { unsigned char *output_pointer = NULL; double d = item->valuedouble; int length = 0; size_t i = 0; unsigned char number_buffer[26] = {0}; /* temporary buffer to print the number into */ unsigned char decimal_point = get_decimal_point(); double test = 0.0; if (output_buffer == NULL) { return false; } /* This checks for NaN and Infinity */ if (isnan(d) || isinf(d)) { length = sprintf((char*)number_buffer, "null"); } else { /* Try 15 decimal places of precision to avoid nonsignificant nonzero digits */ length = sprintf((char*)number_buffer, "%1.15g", d); /* Check whether the original double can be recovered */ if ((sscanf((char*)number_buffer, "%lg", &test) != 1) || !compare_double((double)test, d)) { /* If not, print with 17 decimal places of precision */ length = sprintf((char*)number_buffer, "%1.17g", d); } } /* sprintf failed or buffer overrun occurred */ if ((length < 0) || (length > (int)(sizeof(number_buffer) - 1))) { return false; } /* reserve appropriate space in the output */ output_pointer = ensure(output_buffer, (size_t)length + sizeof("")); if (output_pointer == NULL) { return false; } /* copy the printed number to the output and replace locale * dependent decimal point with '.' */ for (i = 0; i < ((size_t)length); i++) { if (number_buffer[i] == decimal_point) { output_pointer[i] = '.'; continue; } output_pointer[i] = number_buffer[i]; } output_pointer[i] = '\0'; output_buffer->offset += (size_t)length; return true; } /* parse 4 digit hexadecimal number */ static unsigned parse_hex4(const unsigned char * const input) { unsigned int h = 0; size_t i = 0; for (i = 0; i < 4; i++) { /* parse digit */ if ((input[i] >= '0') && (input[i] <= '9')) { h += (unsigned int) input[i] - '0'; } else if ((input[i] >= 'A') && (input[i] <= 'F')) { h += (unsigned int) 10 + input[i] - 'A'; } else if ((input[i] >= 'a') && (input[i] <= 'f')) { h += (unsigned int) 10 + input[i] - 'a'; } else /* invalid */ { return 0; } if (i < 3) { /* shift left to make place for the next nibble */ h = h << 4; } } return h; } /* converts a UTF-16 literal to UTF-8 * A literal can be one or two sequences of the form \uXXXX */ static unsigned char utf16_literal_to_utf8(const unsigned char * const input_pointer, const unsigned char * const input_end, unsigned char **output_pointer) { long unsigned int codepoint = 0; unsigned int first_code = 0; const unsigned char *first_sequence = input_pointer; unsigned char utf8_length = 0; unsigned char utf8_position = 0; unsigned char sequence_length = 0; unsigned char first_byte_mark = 0; if ((input_end - first_sequence) < 6) { /* input ends unexpectedly */ goto fail; } /* get the first utf16 sequence */ first_code = parse_hex4(first_sequence + 2); /* check that the code is valid */ if (((first_code >= 0xDC00) && (first_code <= 0xDFFF))) { goto fail; } /* UTF16 surrogate pair */ if ((first_code >= 0xD800) && (first_code <= 0xDBFF)) { const unsigned char *second_sequence = first_sequence + 6; unsigned int second_code = 0; sequence_length = 12; /* \uXXXX\uXXXX */ if ((input_end - second_sequence) < 6) { /* input ends unexpectedly */ goto fail; } if ((second_sequence[0] != '\\') || (second_sequence[1] != 'u')) { /* missing second half of the surrogate pair */ goto fail; } /* get the second utf16 sequence */ second_code = parse_hex4(second_sequence + 2); /* check that the code is valid */ if ((second_code < 0xDC00) || (second_code > 0xDFFF)) { /* invalid second half of the surrogate pair */ goto fail; } /* calculate the unicode codepoint from the surrogate pair */ codepoint = 0x10000 + (((first_code & 0x3FF) << 10) | (second_code & 0x3FF)); } else { sequence_length = 6; /* \uXXXX */ codepoint = first_code; } /* encode as UTF-8 * takes at maximum 4 bytes to encode: * 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx */ if (codepoint < 0x80) { /* normal ascii, encoding 0xxxxxxx */ utf8_length = 1; } else if (codepoint < 0x800) { /* two bytes, encoding 110xxxxx 10xxxxxx */ utf8_length = 2; first_byte_mark = 0xC0; /* 11000000 */ } else if (codepoint < 0x10000) { /* three bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx */ utf8_length = 3; first_byte_mark = 0xE0; /* 11100000 */ } else if (codepoint <= 0x10FFFF) { /* four bytes, encoding 1110xxxx 10xxxxxx 10xxxxxx 10xxxxxx */ utf8_length = 4; first_byte_mark = 0xF0; /* 11110000 */ } else { /* invalid unicode codepoint */ goto fail; } /* encode as utf8 */ for (utf8_position = (unsigned char)(utf8_length - 1); utf8_position > 0; utf8_position--) { /* 10xxxxxx */ (*output_pointer)[utf8_position] = (unsigned char)((codepoint | 0x80) & 0xBF); codepoint >>= 6; } /* encode first byte */ if (utf8_length > 1) { (*output_pointer)[0] = (unsigned char)((codepoint | first_byte_mark) & 0xFF); } else { (*output_pointer)[0] = (unsigned char)(codepoint & 0x7F); } *output_pointer += utf8_length; return sequence_length; fail: return 0; } /* Parse the input text into an unescaped cinput, and populate item. */ static cJSON_bool parse_string(cJSON * const item, parse_buffer * const input_buffer) { const unsigned char *input_pointer = buffer_at_offset(input_buffer) + 1; const unsigned char *input_end = buffer_at_offset(input_buffer) + 1; unsigned char *output_pointer = NULL; unsigned char *output = NULL; /* not a string */ if (buffer_at_offset(input_buffer)[0] != '\"') { goto fail; } { /* calculate approximate size of the output (overestimate) */ size_t allocation_length = 0; size_t skipped_bytes = 0; while (((size_t)(input_end - input_buffer->content) < input_buffer->length) && (*input_end != '\"')) { /* is escape sequence */ if (input_end[0] == '\\') { if ((size_t)(input_end + 1 - input_buffer->content) >= input_buffer->length) { /* prevent buffer overflow when last input character is a backslash */ goto fail; } skipped_bytes++; input_end++; } input_end++; } if (((size_t)(input_end - input_buffer->content) >= input_buffer->length) || (*input_end != '\"')) { goto fail; /* string ended unexpectedly */ } /* This is at most how much we need for the output */ allocation_length = (size_t) (input_end - buffer_at_offset(input_buffer)) - skipped_bytes; output = (unsigned char*)input_buffer->hooks.allocate(allocation_length + sizeof("")); if (output == NULL) { goto fail; /* allocation failure */ } } output_pointer = output; /* loop through the string literal */ while (input_pointer < input_end) { if (*input_pointer != '\\') { *output_pointer++ = *input_pointer++; } /* escape sequence */ else { unsigned char sequence_length = 2; if ((input_end - input_pointer) < 1) { goto fail; } switch (input_pointer[1]) { case 'b': *output_pointer++ = '\b'; break; case 'f': *output_pointer++ = '\f'; break; case 'n': *output_pointer++ = '\n'; break; case 'r': *output_pointer++ = '\r'; break; case 't': *output_pointer++ = '\t'; break; case '\"': case '\\': case '/': *output_pointer++ = input_pointer[1]; break; /* UTF-16 literal */ case 'u': sequence_length = utf16_literal_to_utf8(input_pointer, input_end, &output_pointer); if (sequence_length == 0) { /* failed to convert UTF16-literal to UTF-8 */ goto fail; } break; default: goto fail; } input_pointer += sequence_length; } } /* zero terminate the output */ *output_pointer = '\0'; item->type = cJSON_String; item->valuestring = (char*)output; input_buffer->offset = (size_t) (input_end - input_buffer->content); input_buffer->offset++; return true; fail: if (output != NULL) { input_buffer->hooks.deallocate(output); } if (input_pointer != NULL) { input_buffer->offset = (size_t)(input_pointer - input_buffer->content); } return false; } /* Render the cstring provided to an escaped version that can be printed. */ static cJSON_bool print_string_ptr(const unsigned char * const input, printbuffer * const output_buffer) { const unsigned char *input_pointer = NULL; unsigned char *output = NULL; unsigned char *output_pointer = NULL; size_t output_length = 0; /* numbers of additional characters needed for escaping */ size_t escape_characters = 0; if (output_buffer == NULL) { return false; } /* empty string */ if (input == NULL) { output = ensure(output_buffer, sizeof("\"\"")); if (output == NULL) { return false; } strcpy((char*)output, "\"\""); return true; } /* set "flag" to 1 if something needs to be escaped */ for (input_pointer = input; *input_pointer; input_pointer++) { switch (*input_pointer) { case '\"': case '\\': case '\b': case '\f': case '\n': case '\r': case '\t': /* one character escape sequence */ escape_characters++; break; default: if (*input_pointer < 32) { /* UTF-16 escape sequence uXXXX */ escape_characters += 5; } break; } } output_length = (size_t)(input_pointer - input) + escape_characters; output = ensure(output_buffer, output_length + sizeof("\"\"")); if (output == NULL) { return false; } /* no characters have to be escaped */ if (escape_characters == 0) { output[0] = '\"'; memcpy(output + 1, input, output_length); output[output_length + 1] = '\"'; output[output_length + 2] = '\0'; return true; } output[0] = '\"'; output_pointer = output + 1; /* copy the string */ for (input_pointer = input; *input_pointer != '\0'; (void)input_pointer++, output_pointer++) { if ((*input_pointer > 31) && (*input_pointer != '\"') && (*input_pointer != '\\')) { /* normal character, copy */ *output_pointer = *input_pointer; } else { /* character needs to be escaped */ *output_pointer++ = '\\'; switch (*input_pointer) { case '\\': *output_pointer = '\\'; break; case '\"': *output_pointer = '\"'; break; case '\b': *output_pointer = 'b'; break; case '\f': *output_pointer = 'f'; break; case '\n': *output_pointer = 'n'; break; case '\r': *output_pointer = 'r'; break; case '\t': *output_pointer = 't'; break; default: /* escape and print as unicode codepoint */ sprintf((char*)output_pointer, "u%04x", *input_pointer); output_pointer += 4; break; } } } output[output_length + 1] = '\"'; output[output_length + 2] = '\0'; return true; } /* Invoke print_string_ptr (which is useful) on an item. */ static cJSON_bool print_string(const cJSON * const item, printbuffer * const p) { return print_string_ptr((unsigned char*)item->valuestring, p); } /* Predeclare these prototypes. */ static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer); static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer); static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer); static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer); static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer); static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer); /* Utility to jump whitespace and cr/lf */ static parse_buffer *buffer_skip_whitespace(parse_buffer * const buffer) { if ((buffer == NULL) || (buffer->content == NULL)) { return NULL; } if (cannot_access_at_index(buffer, 0)) { return buffer; } while (can_access_at_index(buffer, 0) && (buffer_at_offset(buffer)[0] <= 32)) { buffer->offset++; } if (buffer->offset == buffer->length) { buffer->offset--; } return buffer; } /* skip the UTF-8 BOM (byte order mark) if it is at the beginning of a buffer */ static parse_buffer *skip_utf8_bom(parse_buffer * const buffer) { if ((buffer == NULL) || (buffer->content == NULL) || (buffer->offset != 0)) { return NULL; } if (can_access_at_index(buffer, 4) && (strncmp((const char*)buffer_at_offset(buffer), "\xEF\xBB\xBF", 3) == 0)) { buffer->offset += 3; } return buffer; } CJSON_PUBLIC(cJSON *) cJSON_ParseWithOpts(const char *value, const char **return_parse_end, cJSON_bool require_null_terminated) { size_t buffer_length; if (NULL == value) { return NULL; } /* Adding null character size due to require_null_terminated. */ buffer_length = strlen(value) + sizeof(""); return cJSON_ParseWithLengthOpts(value, buffer_length, return_parse_end, require_null_terminated); } /* Parse an object - create a new root, and populate. */ CJSON_PUBLIC(cJSON *) cJSON_ParseWithLengthOpts(const char *value, size_t buffer_length, const char **return_parse_end, cJSON_bool require_null_terminated) { parse_buffer buffer = { 0, 0, 0, 0, { 0, 0, 0 } }; cJSON *item = NULL; /* reset error position */ global_error.json = NULL; global_error.position = 0; if (value == NULL || 0 == buffer_length) { goto fail; } buffer.content = (const unsigned char*)value; buffer.length = buffer_length; buffer.offset = 0; buffer.hooks = global_hooks; item = cJSON_New_Item(&global_hooks); if (item == NULL) /* memory fail */ { goto fail; } if (!parse_value(item, buffer_skip_whitespace(skip_utf8_bom(&buffer)))) { /* parse failure. ep is set. */ goto fail; } /* if we require null-terminated JSON without appended garbage, skip and then check for a null terminator */ if (require_null_terminated) { buffer_skip_whitespace(&buffer); if ((buffer.offset >= buffer.length) || buffer_at_offset(&buffer)[0] != '\0') { goto fail; } } if (return_parse_end) { *return_parse_end = (const char*)buffer_at_offset(&buffer); } return item; fail: if (item != NULL) { cJSON_Delete(item); } if (value != NULL) { error local_error; local_error.json = (const unsigned char*)value; local_error.position = 0; if (buffer.offset < buffer.length) { local_error.position = buffer.offset; } else if (buffer.length > 0) { local_error.position = buffer.length - 1; } if (return_parse_end != NULL) { *return_parse_end = (const char*)local_error.json + local_error.position; } global_error = local_error; } return NULL; } /* Default options for cJSON_Parse */ CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value) { return cJSON_ParseWithOpts(value, 0, 0); } CJSON_PUBLIC(cJSON *) cJSON_ParseWithLength(const char *value, size_t buffer_length) { return cJSON_ParseWithLengthOpts(value, buffer_length, 0, 0); } #define cjson_min(a, b) (((a) < (b)) ? (a) : (b)) static unsigned char *print(const cJSON * const item, cJSON_bool format, const internal_hooks * const hooks) { static const size_t default_buffer_size = 256; printbuffer buffer[1]; unsigned char *printed = NULL; memset(buffer, 0, sizeof(buffer)); /* create buffer */ buffer->buffer = (unsigned char*) hooks->allocate(default_buffer_size); buffer->length = default_buffer_size; buffer->format = format; buffer->hooks = *hooks; if (buffer->buffer == NULL) { goto fail; } /* print the value */ if (!print_value(item, buffer)) { goto fail; } update_offset(buffer); /* check if reallocate is available */ if (hooks->reallocate != NULL) { printed = (unsigned char*) hooks->reallocate(buffer->buffer, buffer->offset + 1); if (printed == NULL) { goto fail; } buffer->buffer = NULL; } else /* otherwise copy the JSON over to a new buffer */ { printed = (unsigned char*) hooks->allocate(buffer->offset + 1); if (printed == NULL) { goto fail; } memcpy(printed, buffer->buffer, cjson_min(buffer->length, buffer->offset + 1)); printed[buffer->offset] = '\0'; /* just to be sure */ /* free the buffer */ hooks->deallocate(buffer->buffer); } return printed; fail: if (buffer->buffer != NULL) { hooks->deallocate(buffer->buffer); } if (printed != NULL) { hooks->deallocate(printed); } return NULL; } /* Render a cJSON item/entity/structure to text. */ CJSON_PUBLIC(char *) cJSON_Print(const cJSON *item) { return (char*)print(item, true, &global_hooks); } CJSON_PUBLIC(char *) cJSON_PrintUnformatted(const cJSON *item) { return (char*)print(item, false, &global_hooks); } CJSON_PUBLIC(char *) cJSON_PrintBuffered(const cJSON *item, int prebuffer, cJSON_bool fmt) { printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } }; if (prebuffer < 0) { return NULL; } p.buffer = (unsigned char*)global_hooks.allocate((size_t)prebuffer); if (!p.buffer) { return NULL; } p.length = (size_t)prebuffer; p.offset = 0; p.noalloc = false; p.format = fmt; p.hooks = global_hooks; if (!print_value(item, &p)) { global_hooks.deallocate(p.buffer); return NULL; } return (char*)p.buffer; } CJSON_PUBLIC(cJSON_bool) cJSON_PrintPreallocated(cJSON *item, char *buffer, const int length, const cJSON_bool format) { printbuffer p = { 0, 0, 0, 0, 0, 0, { 0, 0, 0 } }; if ((length < 0) || (buffer == NULL)) { return false; } p.buffer = (unsigned char*)buffer; p.length = (size_t)length; p.offset = 0; p.noalloc = true; p.format = format; p.hooks = global_hooks; return print_value(item, &p); } /* Parser core - when encountering text, process appropriately. */ static cJSON_bool parse_value(cJSON * const item, parse_buffer * const input_buffer) { if ((input_buffer == NULL) || (input_buffer->content == NULL)) { return false; /* no input */ } /* parse the different types of values */ /* null */ if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "null", 4) == 0)) { item->type = cJSON_NULL; input_buffer->offset += 4; return true; } /* false */ if (can_read(input_buffer, 5) && (strncmp((const char*)buffer_at_offset(input_buffer), "false", 5) == 0)) { item->type = cJSON_False; input_buffer->offset += 5; return true; } /* true */ if (can_read(input_buffer, 4) && (strncmp((const char*)buffer_at_offset(input_buffer), "true", 4) == 0)) { item->type = cJSON_True; item->valueint = 1; input_buffer->offset += 4; return true; } /* string */ if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '\"')) { return parse_string(item, input_buffer); } /* number */ if (can_access_at_index(input_buffer, 0) && ((buffer_at_offset(input_buffer)[0] == '-') || ((buffer_at_offset(input_buffer)[0] >= '0') && (buffer_at_offset(input_buffer)[0] <= '9')))) { return parse_number(item, input_buffer); } /* array */ if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '[')) { return parse_array(item, input_buffer); } /* object */ if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '{')) { return parse_object(item, input_buffer); } return false; } /* Render a value to text. */ static cJSON_bool print_value(const cJSON * const item, printbuffer * const output_buffer) { unsigned char *output = NULL; if ((item == NULL) || (output_buffer == NULL)) { return false; } switch ((item->type) & 0xFF) { case cJSON_NULL: output = ensure(output_buffer, 5); if (output == NULL) { return false; } strcpy((char*)output, "null"); return true; case cJSON_False: output = ensure(output_buffer, 6); if (output == NULL) { return false; } strcpy((char*)output, "false"); return true; case cJSON_True: output = ensure(output_buffer, 5); if (output == NULL) { return false; } strcpy((char*)output, "true"); return true; case cJSON_Number: return print_number(item, output_buffer); case cJSON_Raw: { size_t raw_length = 0; if (item->valuestring == NULL) { return false; } raw_length = strlen(item->valuestring) + sizeof(""); output = ensure(output_buffer, raw_length); if (output == NULL) { return false; } memcpy(output, item->valuestring, raw_length); return true; } case cJSON_String: return print_string(item, output_buffer); case cJSON_Array: return print_array(item, output_buffer); case cJSON_Object: return print_object(item, output_buffer); default: return false; } } /* Build an array from input text. */ static cJSON_bool parse_array(cJSON * const item, parse_buffer * const input_buffer) { cJSON *head = NULL; /* head of the linked list */ cJSON *current_item = NULL; if (input_buffer->depth >= CJSON_NESTING_LIMIT) { return false; /* to deeply nested */ } input_buffer->depth++; if (buffer_at_offset(input_buffer)[0] != '[') { /* not an array */ goto fail; } input_buffer->offset++; buffer_skip_whitespace(input_buffer); if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ']')) { /* empty array */ goto success; } /* check if we skipped to the end of the buffer */ if (cannot_access_at_index(input_buffer, 0)) { input_buffer->offset--; goto fail; } /* step back to character in front of the first element */ input_buffer->offset--; /* loop through the comma separated array elements */ do { /* allocate next item */ cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks)); if (new_item == NULL) { goto fail; /* allocation failure */ } /* attach next item to list */ if (head == NULL) { /* start the linked list */ current_item = head = new_item; } else { /* add to the end and advance */ current_item->next = new_item; new_item->prev = current_item; current_item = new_item; } /* parse next value */ input_buffer->offset++; buffer_skip_whitespace(input_buffer); if (!parse_value(current_item, input_buffer)) { goto fail; /* failed to parse value */ } buffer_skip_whitespace(input_buffer); } while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ',')); if (cannot_access_at_index(input_buffer, 0) || buffer_at_offset(input_buffer)[0] != ']') { goto fail; /* expected end of array */ } success: input_buffer->depth--; item->type = cJSON_Array; item->child = head; input_buffer->offset++; return true; fail: if (head != NULL) { cJSON_Delete(head); } return false; } /* Render an array to text */ static cJSON_bool print_array(const cJSON * const item, printbuffer * const output_buffer) { unsigned char *output_pointer = NULL; size_t length = 0; cJSON *current_element = item->child; if (output_buffer == NULL) { return false; } /* Compose the output array. */ /* opening square bracket */ output_pointer = ensure(output_buffer, 1); if (output_pointer == NULL) { return false; } *output_pointer = '['; output_buffer->offset++; output_buffer->depth++; while (current_element != NULL) { if (!print_value(current_element, output_buffer)) { return false; } update_offset(output_buffer); if (current_element->next) { length = (size_t) (output_buffer->format ? 2 : 1); output_pointer = ensure(output_buffer, length + 1); if (output_pointer == NULL) { return false; } *output_pointer++ = ','; if(output_buffer->format) { *output_pointer++ = ' '; } *output_pointer = '\0'; output_buffer->offset += length; } current_element = current_element->next; } output_pointer = ensure(output_buffer, 2); if (output_pointer == NULL) { return false; } *output_pointer++ = ']'; *output_pointer = '\0'; output_buffer->depth--; return true; } /* Build an object from the text. */ static cJSON_bool parse_object(cJSON * const item, parse_buffer * const input_buffer) { cJSON *head = NULL; /* linked list head */ cJSON *current_item = NULL; if (input_buffer->depth >= CJSON_NESTING_LIMIT) { return false; /* to deeply nested */ } input_buffer->depth++; if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '{')) { goto fail; /* not an object */ } input_buffer->offset++; buffer_skip_whitespace(input_buffer); if (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == '}')) { goto success; /* empty object */ } /* check if we skipped to the end of the buffer */ if (cannot_access_at_index(input_buffer, 0)) { input_buffer->offset--; goto fail; } /* step back to character in front of the first element */ input_buffer->offset--; /* loop through the comma separated array elements */ do { /* allocate next item */ cJSON *new_item = cJSON_New_Item(&(input_buffer->hooks)); if (new_item == NULL) { goto fail; /* allocation failure */ } /* attach next item to list */ if (head == NULL) { /* start the linked list */ current_item = head = new_item; } else { /* add to the end and advance */ current_item->next = new_item; new_item->prev = current_item; current_item = new_item; } /* parse the name of the child */ input_buffer->offset++; buffer_skip_whitespace(input_buffer); if (!parse_string(current_item, input_buffer)) { goto fail; /* failed to parse name */ } buffer_skip_whitespace(input_buffer); /* swap valuestring and string, because we parsed the name */ current_item->string = current_item->valuestring; current_item->valuestring = NULL; if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != ':')) { goto fail; /* invalid object */ } /* parse the value */ input_buffer->offset++; buffer_skip_whitespace(input_buffer); if (!parse_value(current_item, input_buffer)) { goto fail; /* failed to parse value */ } buffer_skip_whitespace(input_buffer); } while (can_access_at_index(input_buffer, 0) && (buffer_at_offset(input_buffer)[0] == ',')); if (cannot_access_at_index(input_buffer, 0) || (buffer_at_offset(input_buffer)[0] != '}')) { goto fail; /* expected end of object */ } success: input_buffer->depth--; item->type = cJSON_Object; item->child = head; input_buffer->offset++; return true; fail: if (head != NULL) { cJSON_Delete(head); } return false; } /* Render an object to text. */ static cJSON_bool print_object(const cJSON * const item, printbuffer * const output_buffer) { unsigned char *output_pointer = NULL; size_t length = 0; cJSON *current_item = item->child; if (output_buffer == NULL) { return false; } /* Compose the output: */ length = (size_t) (output_buffer->format ? 2 : 1); /* fmt: {\n */ output_pointer = ensure(output_buffer, length + 1); if (output_pointer == NULL) { return false; } *output_pointer++ = '{'; output_buffer->depth++; if (output_buffer->format) { *output_pointer++ = '\n'; } output_buffer->offset += length; while (current_item) { if (output_buffer->format) { size_t i; output_pointer = ensure(output_buffer, output_buffer->depth); if (output_pointer == NULL) { return false; } for (i = 0; i < output_buffer->depth; i++) { *output_pointer++ = '\t'; } output_buffer->offset += output_buffer->depth; } /* print key */ if (!print_string_ptr((unsigned char*)current_item->string, output_buffer)) { return false; } update_offset(output_buffer); length = (size_t) (output_buffer->format ? 2 : 1); output_pointer = ensure(output_buffer, length); if (output_pointer == NULL) { return false; } *output_pointer++ = ':'; if (output_buffer->format) { *output_pointer++ = '\t'; } output_buffer->offset += length; /* print value */ if (!print_value(current_item, output_buffer)) { return false; } update_offset(output_buffer); /* print comma if not last */ length = ((size_t)(output_buffer->format ? 1 : 0) + (size_t)(current_item->next ? 1 : 0)); output_pointer = ensure(output_buffer, length + 1); if (output_pointer == NULL) { return false; } if (current_item->next) { *output_pointer++ = ','; } if (output_buffer->format) { *output_pointer++ = '\n'; } *output_pointer = '\0'; output_buffer->offset += length; current_item = current_item->next; } output_pointer = ensure(output_buffer, output_buffer->format ? (output_buffer->depth + 1) : 2); if (output_pointer == NULL) { return false; } if (output_buffer->format) { size_t i; for (i = 0; i < (output_buffer->depth - 1); i++) { *output_pointer++ = '\t'; } } *output_pointer++ = '}'; *output_pointer = '\0'; output_buffer->depth--; return true; } /* Get Array size/item / object item. */ CJSON_PUBLIC(int) cJSON_GetArraySize(const cJSON *array) { cJSON *child = NULL; size_t size = 0; if (array == NULL) { return 0; } child = array->child; while(child != NULL) { size++; child = child->next; } /* FIXME: Can overflow here. Cannot be fixed without breaking the API */ return (int)size; } static cJSON* get_array_item(const cJSON *array, size_t index) { cJSON *current_child = NULL; if (array == NULL) { return NULL; } current_child = array->child; while ((current_child != NULL) && (index > 0)) { index--; current_child = current_child->next; } return current_child; } CJSON_PUBLIC(cJSON *) cJSON_GetArrayItem(const cJSON *array, int index) { if (index < 0) { return NULL; } return get_array_item(array, (size_t)index); } static cJSON *get_object_item(const cJSON * const object, const char * const name, const cJSON_bool case_sensitive) { cJSON *current_element = NULL; if ((object == NULL) || (name == NULL)) { return NULL; } current_element = object->child; if (case_sensitive) { while ((current_element != NULL) && (current_element->string != NULL) && (strcmp(name, current_element->string) != 0)) { current_element = current_element->next; } } else { while ((current_element != NULL) && (case_insensitive_strcmp((const unsigned char*)name, (const unsigned char*)(current_element->string)) != 0)) { current_element = current_element->next; } } if ((current_element == NULL) || (current_element->string == NULL)) { return NULL; } return current_element; } CJSON_PUBLIC(cJSON *) cJSON_GetObjectItem(const cJSON * const object, const char * const string) { return get_object_item(object, string, false); } CJSON_PUBLIC(cJSON *) cJSON_GetObjectItemCaseSensitive(const cJSON * const object, const char * const string) { return get_object_item(object, string, true); } CJSON_PUBLIC(cJSON_bool) cJSON_HasObjectItem(const cJSON *object, const char *string) { return cJSON_GetObjectItem(object, string) ? 1 : 0; } /* Utility for array list handling. */ static void suffix_object(cJSON *prev, cJSON *item) { prev->next = item; item->prev = prev; } /* Utility for handling references. */ static cJSON *create_reference(const cJSON *item, const internal_hooks * const hooks) { cJSON *reference = NULL; if (item == NULL) { return NULL; } reference = cJSON_New_Item(hooks); if (reference == NULL) { return NULL; } memcpy(reference, item, sizeof(cJSON)); reference->string = NULL; reference->type |= cJSON_IsReference; reference->next = reference->prev = NULL; return reference; } static cJSON_bool add_item_to_array(cJSON *array, cJSON *item) { cJSON *child = NULL; if ((item == NULL) || (array == NULL) || (array == item)) { return false; } child = array->child; /* * To find the last item in array quickly, we use prev in array */ if (child == NULL) { /* list is empty, start new one */ array->child = item; item->prev = item; item->next = NULL; } else { /* append to the end */ if (child->prev) { suffix_object(child->prev, item); array->child->prev = item; } else { while (child->next) { child = child->next; } suffix_object(child, item); array->child->prev = item; } } return true; } /* Add item to array/object. */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToArray(cJSON *array, cJSON *item) { return add_item_to_array(array, item); } #if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5)))) #pragma GCC diagnostic push #endif #ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wcast-qual" #endif /* helper function to cast away const */ static void* cast_away_const(const void* string) { return (void*)string; } #if defined(__clang__) || (defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 5)))) #pragma GCC diagnostic pop #endif static cJSON_bool add_item_to_object(cJSON * const object, const char * const string, cJSON * const item, const internal_hooks * const hooks, const cJSON_bool constant_key) { char *new_key = NULL; int new_type = cJSON_Invalid; if ((object == NULL) || (string == NULL) || (item == NULL) || (object == item)) { return false; } if (constant_key) { new_key = (char*)cast_away_const(string); new_type = item->type | cJSON_StringIsConst; } else { new_key = (char*)cJSON_strdup((const unsigned char*)string, hooks); if (new_key == NULL) { return false; } new_type = item->type & ~cJSON_StringIsConst; } if (!(item->type & cJSON_StringIsConst) && (item->string != NULL)) { hooks->deallocate(item->string); } item->string = new_key; item->type = new_type; return add_item_to_array(object, item); } CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item) { return add_item_to_object(object, string, item, &global_hooks, false); } /* Add an item to an object with constant string as key */ CJSON_PUBLIC(cJSON_bool) cJSON_AddItemToObjectCS(cJSON *object, const char *string, cJSON *item) { return add_item_to_object(object, string, item, &global_hooks, true); } CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToArray(cJSON *array, cJSON *item) { if (array == NULL) { return false; } return add_item_to_array(array, create_reference(item, &global_hooks)); } CJSON_PUBLIC(cJSON_bool) cJSON_AddItemReferenceToObject(cJSON *object, const char *string, cJSON *item) { if ((object == NULL) || (string == NULL)) { return false; } return add_item_to_object(object, string, create_reference(item, &global_hooks), &global_hooks, false); } CJSON_PUBLIC(cJSON*) cJSON_AddNullToObject(cJSON * const object, const char * const name) { cJSON *null = cJSON_CreateNull(); if (add_item_to_object(object, name, null, &global_hooks, false)) { return null; } cJSON_Delete(null); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddTrueToObject(cJSON * const object, const char * const name) { cJSON *true_item = cJSON_CreateTrue(); if (add_item_to_object(object, name, true_item, &global_hooks, false)) { return true_item; } cJSON_Delete(true_item); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddFalseToObject(cJSON * const object, const char * const name) { cJSON *false_item = cJSON_CreateFalse(); if (add_item_to_object(object, name, false_item, &global_hooks, false)) { return false_item; } cJSON_Delete(false_item); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddBoolToObject(cJSON * const object, const char * const name, const cJSON_bool boolean) { cJSON *bool_item = cJSON_CreateBool(boolean); if (add_item_to_object(object, name, bool_item, &global_hooks, false)) { return bool_item; } cJSON_Delete(bool_item); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddNumberToObject(cJSON * const object, const char * const name, const double number) { cJSON *number_item = cJSON_CreateNumber(number); if (add_item_to_object(object, name, number_item, &global_hooks, false)) { return number_item; } cJSON_Delete(number_item); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddStringToObject(cJSON * const object, const char * const name, const char * const string) { cJSON *string_item = cJSON_CreateString(string); if (add_item_to_object(object, name, string_item, &global_hooks, false)) { return string_item; } cJSON_Delete(string_item); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddRawToObject(cJSON * const object, const char * const name, const char * const raw) { cJSON *raw_item = cJSON_CreateRaw(raw); if (add_item_to_object(object, name, raw_item, &global_hooks, false)) { return raw_item; } cJSON_Delete(raw_item); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddObjectToObject(cJSON * const object, const char * const name) { cJSON *object_item = cJSON_CreateObject(); if (add_item_to_object(object, name, object_item, &global_hooks, false)) { return object_item; } cJSON_Delete(object_item); return NULL; } CJSON_PUBLIC(cJSON*) cJSON_AddArrayToObject(cJSON * const object, const char * const name) { cJSON *array = cJSON_CreateArray(); if (add_item_to_object(object, name, array, &global_hooks, false)) { return array; } cJSON_Delete(array); return NULL; } CJSON_PUBLIC(cJSON *) cJSON_DetachItemViaPointer(cJSON *parent, cJSON * const item) { if ((parent == NULL) || (item == NULL)) { return NULL; } if (item != parent->child) { /* not the first element */ item->prev->next = item->next; } if (item->next != NULL) { /* not the last element */ item->next->prev = item->prev; } if (item == parent->child) { /* first element */ parent->child = item->next; } /* make sure the detached item doesn't point anywhere anymore */ item->prev = NULL; item->next = NULL; return item; } CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromArray(cJSON *array, int which) { if (which < 0) { return NULL; } return cJSON_DetachItemViaPointer(array, get_array_item(array, (size_t)which)); } CJSON_PUBLIC(void) cJSON_DeleteItemFromArray(cJSON *array, int which) { cJSON_Delete(cJSON_DetachItemFromArray(array, which)); } CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObject(cJSON *object, const char *string) { cJSON *to_detach = cJSON_GetObjectItem(object, string); return cJSON_DetachItemViaPointer(object, to_detach); } CJSON_PUBLIC(cJSON *) cJSON_DetachItemFromObjectCaseSensitive(cJSON *object, const char *string) { cJSON *to_detach = cJSON_GetObjectItemCaseSensitive(object, string); return cJSON_DetachItemViaPointer(object, to_detach); } CJSON_PUBLIC(void) cJSON_DeleteItemFromObject(cJSON *object, const char *string) { cJSON_Delete(cJSON_DetachItemFromObject(object, string)); } CJSON_PUBLIC(void) cJSON_DeleteItemFromObjectCaseSensitive(cJSON *object, const char *string) { cJSON_Delete(cJSON_DetachItemFromObjectCaseSensitive(object, string)); } /* Replace array/object items with new ones. */ CJSON_PUBLIC(cJSON_bool) cJSON_InsertItemInArray(cJSON *array, int which, cJSON *newitem) { cJSON *after_inserted = NULL; if (which < 0) { return false; } after_inserted = get_array_item(array, (size_t)which); if (after_inserted == NULL) { return add_item_to_array(array, newitem); } newitem->next = after_inserted; newitem->prev = after_inserted->prev; after_inserted->prev = newitem; if (after_inserted == array->child) { array->child = newitem; } else { newitem->prev->next = newitem; } return true; } CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemViaPointer(cJSON * const parent, cJSON * const item, cJSON * replacement) { if ((parent == NULL) || (replacement == NULL) || (item == NULL)) { return false; } if (replacement == item) { return true; } replacement->next = item->next; replacement->prev = item->prev; if (replacement->next != NULL) { replacement->next->prev = replacement; } if (parent->child == item) { parent->child = replacement; } else { /* * To find the last item in array quickly, we use prev in array. * We can't modify the last item's next pointer where this item was the parent's child */ if (replacement->prev != NULL) { replacement->prev->next = replacement; } } item->next = NULL; item->prev = NULL; cJSON_Delete(item); return true; } CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem) { if (which < 0) { return false; } return cJSON_ReplaceItemViaPointer(array, get_array_item(array, (size_t)which), newitem); } static cJSON_bool replace_item_in_object(cJSON *object, const char *string, cJSON *replacement, cJSON_bool case_sensitive) { if ((replacement == NULL) || (string == NULL)) { return false; } /* replace the name in the replacement */ if (!(replacement->type & cJSON_StringIsConst) && (replacement->string != NULL)) { cJSON_free(replacement->string); } replacement->string = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks); replacement->type &= ~cJSON_StringIsConst; return cJSON_ReplaceItemViaPointer(object, get_object_item(object, string, case_sensitive), replacement); } CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObject(cJSON *object, const char *string, cJSON *newitem) { return replace_item_in_object(object, string, newitem, false); } CJSON_PUBLIC(cJSON_bool) cJSON_ReplaceItemInObjectCaseSensitive(cJSON *object, const char *string, cJSON *newitem) { return replace_item_in_object(object, string, newitem, true); } /* Create basic types: */ CJSON_PUBLIC(cJSON *) cJSON_CreateNull(void) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type = cJSON_NULL; } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateTrue(void) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type = cJSON_True; } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateFalse(void) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type = cJSON_False; } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateBool(cJSON_bool boolean) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type = boolean ? cJSON_True : cJSON_False; } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateNumber(double num) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type = cJSON_Number; item->valuedouble = num; /* use saturation in case of overflow */ if (num >= INT_MAX) { item->valueint = INT_MAX; } else if (num <= (double)INT_MIN) { item->valueint = INT_MIN; } else { item->valueint = (int)num; } } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateString(const char *string) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type = cJSON_String; item->valuestring = (char*)cJSON_strdup((const unsigned char*)string, &global_hooks); if(!item->valuestring) { cJSON_Delete(item); return NULL; } } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateStringReference(const char *string) { cJSON *item = cJSON_New_Item(&global_hooks); if (item != NULL) { item->type = cJSON_String | cJSON_IsReference; item->valuestring = (char*)cast_away_const(string); } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateObjectReference(const cJSON *child) { cJSON *item = cJSON_New_Item(&global_hooks); if (item != NULL) { item->type = cJSON_Object | cJSON_IsReference; item->child = (cJSON*)cast_away_const(child); } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateArrayReference(const cJSON *child) { cJSON *item = cJSON_New_Item(&global_hooks); if (item != NULL) { item->type = cJSON_Array | cJSON_IsReference; item->child = (cJSON*)cast_away_const(child); } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateRaw(const char *raw) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type = cJSON_Raw; item->valuestring = (char*)cJSON_strdup((const unsigned char*)raw, &global_hooks); if(!item->valuestring) { cJSON_Delete(item); return NULL; } } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateArray(void) { cJSON *item = cJSON_New_Item(&global_hooks); if(item) { item->type=cJSON_Array; } return item; } CJSON_PUBLIC(cJSON *) cJSON_CreateObject(void) { cJSON *item = cJSON_New_Item(&global_hooks); if (item) { item->type = cJSON_Object; } return item; } /* Create Arrays: */ CJSON_PUBLIC(cJSON *) cJSON_CreateIntArray(const int *numbers, int count) { size_t i = 0; cJSON *n = NULL; cJSON *p = NULL; cJSON *a = NULL; if ((count < 0) || (numbers == NULL)) { return NULL; } a = cJSON_CreateArray(); for(i = 0; a && (i < (size_t)count); i++) { n = cJSON_CreateNumber(numbers[i]); if (!n) { cJSON_Delete(a); return NULL; } if(!i) { a->child = n; } else { suffix_object(p, n); } p = n; } return a; } CJSON_PUBLIC(cJSON *) cJSON_CreateFloatArray(const float *numbers, int count) { size_t i = 0; cJSON *n = NULL; cJSON *p = NULL; cJSON *a = NULL; if ((count < 0) || (numbers == NULL)) { return NULL; } a = cJSON_CreateArray(); for(i = 0; a && (i < (size_t)count); i++) { n = cJSON_CreateNumber((double)numbers[i]); if(!n) { cJSON_Delete(a); return NULL; } if(!i) { a->child = n; } else { suffix_object(p, n); } p = n; } return a; } CJSON_PUBLIC(cJSON *) cJSON_CreateDoubleArray(const double *numbers, int count) { size_t i = 0; cJSON *n = NULL; cJSON *p = NULL; cJSON *a = NULL; if ((count < 0) || (numbers == NULL)) { return NULL; } a = cJSON_CreateArray(); for(i = 0;a && (i < (size_t)count); i++) { n = cJSON_CreateNumber(numbers[i]); if(!n) { cJSON_Delete(a); return NULL; } if(!i) { a->child = n; } else { suffix_object(p, n); } p = n; } return a; } CJSON_PUBLIC(cJSON *) cJSON_CreateStringArray(const char *const *strings, int count) { size_t i = 0; cJSON *n = NULL; cJSON *p = NULL; cJSON *a = NULL; if ((count < 0) || (strings == NULL)) { return NULL; } a = cJSON_CreateArray(); for (i = 0; a && (i < (size_t)count); i++) { n = cJSON_CreateString(strings[i]); if(!n) { cJSON_Delete(a); return NULL; } if(!i) { a->child = n; } else { suffix_object(p,n); } p = n; } return a; } /* Duplication */ CJSON_PUBLIC(cJSON *) cJSON_Duplicate(const cJSON *item, cJSON_bool recurse) { cJSON *newitem = NULL; cJSON *child = NULL; cJSON *next = NULL; cJSON *newchild = NULL; /* Bail on bad ptr */ if (!item) { goto fail; } /* Create new item */ newitem = cJSON_New_Item(&global_hooks); if (!newitem) { goto fail; } /* Copy over all vars */ newitem->type = item->type & (~cJSON_IsReference); newitem->valueint = item->valueint; newitem->valuedouble = item->valuedouble; if (item->valuestring) { newitem->valuestring = (char*)cJSON_strdup((unsigned char*)item->valuestring, &global_hooks); if (!newitem->valuestring) { goto fail; } } if (item->string) { newitem->string = (item->type&cJSON_StringIsConst) ? item->string : (char*)cJSON_strdup((unsigned char*)item->string, &global_hooks); if (!newitem->string) { goto fail; } } /* If non-recursive, then we're done! */ if (!recurse) { return newitem; } /* Walk the ->next chain for the child. */ child = item->child; while (child != NULL) { newchild = cJSON_Duplicate(child, true); /* Duplicate (with recurse) each item in the ->next chain */ if (!newchild) { goto fail; } if (next != NULL) { /* If newitem->child already set, then crosswire ->prev and ->next and move on */ next->next = newchild; newchild->prev = next; next = newchild; } else { /* Set newitem->child and move to it */ newitem->child = newchild; next = newchild; } child = child->next; } return newitem; fail: if (newitem != NULL) { cJSON_Delete(newitem); } return NULL; } static void skip_oneline_comment(char **input) { *input += static_strlen("//"); for (; (*input)[0] != '\0'; ++(*input)) { if ((*input)[0] == '\n') { *input += static_strlen("\n"); return; } } } static void skip_multiline_comment(char **input) { *input += static_strlen("/*"); for (; (*input)[0] != '\0'; ++(*input)) { if (((*input)[0] == '*') && ((*input)[1] == '/')) { *input += static_strlen("*/"); return; } } } static void minify_string(char **input, char **output) { (*output)[0] = (*input)[0]; *input += static_strlen("\""); *output += static_strlen("\""); for (; (*input)[0] != '\0'; (void)++(*input), ++(*output)) { (*output)[0] = (*input)[0]; if ((*input)[0] == '\"') { (*output)[0] = '\"'; *input += static_strlen("\""); *output += static_strlen("\""); return; } else if (((*input)[0] == '\\') && ((*input)[1] == '\"')) { (*output)[1] = (*input)[1]; *input += static_strlen("\""); *output += static_strlen("\""); } } } CJSON_PUBLIC(void) cJSON_Minify(char *json) { char *into = json; if (json == NULL) { return; } while (json[0] != '\0') { switch (json[0]) { case ' ': case '\t': case '\r': case '\n': json++; break; case '/': if (json[1] == '/') { skip_oneline_comment(&json); } else if (json[1] == '*') { skip_multiline_comment(&json); } else { json++; } break; case '\"': minify_string(&json, (char**)&into); break; default: into[0] = json[0]; json++; into++; } } /* and null-terminate. */ *into = '\0'; } CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_Invalid; } CJSON_PUBLIC(cJSON_bool) cJSON_IsFalse(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_False; } CJSON_PUBLIC(cJSON_bool) cJSON_IsTrue(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xff) == cJSON_True; } CJSON_PUBLIC(cJSON_bool) cJSON_IsBool(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & (cJSON_True | cJSON_False)) != 0; } CJSON_PUBLIC(cJSON_bool) cJSON_IsNull(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_NULL; } CJSON_PUBLIC(cJSON_bool) cJSON_IsNumber(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_Number; } CJSON_PUBLIC(cJSON_bool) cJSON_IsString(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_String; } CJSON_PUBLIC(cJSON_bool) cJSON_IsArray(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_Array; } CJSON_PUBLIC(cJSON_bool) cJSON_IsObject(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_Object; } CJSON_PUBLIC(cJSON_bool) cJSON_IsRaw(const cJSON * const item) { if (item == NULL) { return false; } return (item->type & 0xFF) == cJSON_Raw; } CJSON_PUBLIC(cJSON_bool) cJSON_Compare(const cJSON * const a, const cJSON * const b, const cJSON_bool case_sensitive) { if ((a == NULL) || (b == NULL) || ((a->type & 0xFF) != (b->type & 0xFF)) || cJSON_IsInvalid(a)) { return false; } /* check if type is valid */ switch (a->type & 0xFF) { case cJSON_False: case cJSON_True: case cJSON_NULL: case cJSON_Number: case cJSON_String: case cJSON_Raw: case cJSON_Array: case cJSON_Object: break; default: return false; } /* identical objects are equal */ if (a == b) { return true; } switch (a->type & 0xFF) { /* in these cases and equal type is enough */ case cJSON_False: case cJSON_True: case cJSON_NULL: return true; case cJSON_Number: if (compare_double(a->valuedouble, b->valuedouble)) { return true; } return false; case cJSON_String: case cJSON_Raw: if ((a->valuestring == NULL) || (b->valuestring == NULL)) { return false; } if (strcmp(a->valuestring, b->valuestring) == 0) { return true; } return false; case cJSON_Array: { cJSON *a_element = a->child; cJSON *b_element = b->child; for (; (a_element != NULL) && (b_element != NULL);) { if (!cJSON_Compare(a_element, b_element, case_sensitive)) { return false; } a_element = a_element->next; b_element = b_element->next; } /* one of the arrays is longer than the other */ if (a_element != b_element) { return false; } return true; } case cJSON_Object: { cJSON *a_element = NULL; cJSON *b_element = NULL; cJSON_ArrayForEach(a_element, a) { /* TODO This has O(n^2) runtime, which is horrible! */ b_element = get_object_item(b, a_element->string, case_sensitive); if (b_element == NULL) { return false; } if (!cJSON_Compare(a_element, b_element, case_sensitive)) { return false; } } /* doing this twice, once on a and b to prevent true comparison if a subset of b * TODO: Do this the proper way, this is just a fix for now */ cJSON_ArrayForEach(b_element, b) { a_element = get_object_item(a, b_element->string, case_sensitive); if (a_element == NULL) { return false; } if (!cJSON_Compare(b_element, a_element, case_sensitive)) { return false; } } return true; } default: return false; } } CJSON_PUBLIC(void *) cJSON_malloc(size_t size) { return global_hooks.allocate(size); } CJSON_PUBLIC(void) cJSON_free(void *object) { global_hooks.deallocate(object); } apparmor-3.0.4/binutils/aa-status.80000664000175000017500000001645014201060300014745 0ustar jjjj.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "AA-STATUS 8" .TH AA-STATUS 8 "2022-02-10" "AppArmor 3.0.4" "AppArmor" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" aa\-status \- display various information about the current AppArmor policy. .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBaa-status\fR [option] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBaa-status\fR will report various aspects of the current state of AppArmor confinement. By default, it displays the same information as if the \fI\-\-verbose\fR argument were given. A sample of what this looks like is: .PP .Vb 8 \& apparmor module is loaded. \& 110 profiles are loaded. \& 102 profiles are in enforce mode. \& 8 profiles are in complain mode. \& Out of 129 processes running: \& 13 processes have profiles defined. \& 8 processes have profiles in enforce mode. \& 5 processes have profiles in complain mode. .Ve .PP Other argument options are provided to report individual aspects, to support being used in scripts. .SH "OPTIONS" .IX Header "OPTIONS" \&\fBaa-status\fR accepts only one argument at a time out of: .IP "\-\-enabled" 4 .IX Item "--enabled" returns error code if AppArmor is not enabled. .IP "\-\-profiled" 4 .IX Item "--profiled" displays the number of loaded AppArmor policies. .IP "\-\-enforced" 4 .IX Item "--enforced" displays the number of loaded enforcing AppArmor policies. .IP "\-\-complaining" 4 .IX Item "--complaining" displays the number of loaded non-enforcing AppArmor policies. .IP "\-\-kill" 4 .IX Item "--kill" displays the number of loaded enforcing AppArmor policies that will kill tasks on policy violations. .IP "\-\-special\-unconfined" 4 .IX Item "--special-unconfined" displays the number of loaded non-enforcing AppArmor policies that are in the special unconfined mode. .IP "\-\-process\-mixed displays the number of processes confined by profile stacks with profiles in different modes." 4 .IX Item "--process-mixed displays the number of processes confined by profile stacks with profiles in different modes." .PD 0 .IP "\-\-verbose" 4 .IX Item "--verbose" .PD displays multiple data points about loaded AppArmor policy set (the default action if no arguments are given). .IP "\-\-json" 4 .IX Item "--json" displays multiple data points about loaded AppArmor policy set in a \s-1JSON\s0 format, fit for machine consumption. .IP "\-\-pretty\-json" 4 .IX Item "--pretty-json" same as \-\-json, formatted to be readable by humans as well as by machines. .IP "\-\-help" 4 .IX Item "--help" displays a short usage statement. .SH "EXIT STATUS" .IX Header "EXIT STATUS" Upon exiting, \fBaa-status\fR will set its exit status to the following values: .IP "\fB0\fR" 4 .IX Item "0" if apparmor is enabled and policy is loaded. .IP "\fB1\fR" 4 .IX Item "1" if apparmor is not enabled/loaded. .IP "\fB2\fR" 4 .IX Item "2" if apparmor is enabled but no policy is loaded. .IP "\fB3\fR" 4 .IX Item "3" if the apparmor control files aren't available under /sys/kernel/security/. .IP "\fB4\fR" 4 .IX Item "4" if the user running the script doesn't have enough privileges to read the apparmor control files. .IP "\fB42\fR" 4 .IX Item "42" if an internal error occurred. .SH "BUGS" .IX Header "BUGS" \&\fBaa-status\fR must be run as root to read the state of the loaded policy from the apparmor module. It uses the /proc filesystem to determine which processes are confined and so is susceptible to race conditions. .PP If you find any additional bugs, please report them at . .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBapparmor\fR\|(7), \fBapparmor.d\fR\|(5), and . apparmor-3.0.4/binutils/aa-features-abi.pod0000664000175000017500000000420714201060045016407 0ustar jjjj# This publication is intellectual property of Canonical Ltd. Its contents # can be duplicated, either in part or in whole, provided that a copyright # label is visibly located on each copy. # # All information found in this book has been compiled with utmost # attention to detail. However, this does not guarantee complete accuracy. # Neither Canonical Ltd, the authors, nor the translators shall be held # liable for possible errors or the consequences thereof. # # Many of the software and hardware descriptions cited in this book # are registered trademarks. All trade names are subject to copyright # restrictions and may be registered trade marks. Canonical Ltd # essentially adheres to the manufacturer's spelling. # # Names of products and trademarks appearing in this book (with or without # specific notation) are likewise subject to trademark and trade protection # laws and may thus fall under copyright restrictions. # =pod =head1 NAME aa-features-abi - Extract, validate and manipulate AppArmor feature abis =head1 SYNOPSIS B [OPTIONS] [OUTPUT OPTIONS] =head1 DESCRIPTION B is used to extract a features abi and output to either stdout or a specified file. A SOURCE_OPTION must be specified. If an output option is not specified the features abi is written to stdout. =head1 OPTIONS B accepts the following arguments: =over 4 =item -h, --help Display a brief usage guide. =item -d, --debug show messages with debugging information =item -v, --verbose show messages with stats =back =head1 SOURCE =over 4 =item -x, --extract Extract the features abi for the kernel =item -f FILE, --file=FILE Load the features abi from FILE and send it to OUTPUT OPTIONS. =back =head1 OUTPUT OPTIONS =over 4 =item --stdout Write the features abi to I, this is the default if no output option is specified. =item -w FILE, --write FILE Write the features abi to I. =back =head1 BUGS If you find any bugs, please report them at L. =head1 SEE ALSO apparmor(7), apparmor.d(5), aa_features(3), and L. =cut apparmor-3.0.4/binutils/aa-status.pod0000664000175000017500000000740014201060045015361 0ustar jjjj# This publication is intellectual property of Novell Inc. and Canonical # Ltd. Its contents can be duplicated, either in part or in whole, provided # that a copyright label is visibly located on each copy. # # All information found in this book has been compiled with utmost # attention to detail. However, this does not guarantee complete accuracy. # Neither SUSE LINUX GmbH, Canonical Ltd, the authors, nor the translators # shall be held liable for possible errors or the consequences thereof. # # Many of the software and hardware descriptions cited in this book # are registered trademarks. All trade names are subject to copyright # restrictions and may be registered trade marks. SUSE LINUX GmbH # and Canonical Ltd. essentially adhere to the manufacturer's spelling. # # Names of products and trademarks appearing in this book (with or without # specific notation) are likewise subject to trademark and trade protection # laws and may thus fall under copyright restrictions. # =pod =head1 NAME aa-status - display various information about the current AppArmor policy. =head1 SYNOPSIS B [option] =head1 DESCRIPTION B will report various aspects of the current state of AppArmor confinement. By default, it displays the same information as if the I<--verbose> argument were given. A sample of what this looks like is: apparmor module is loaded. 110 profiles are loaded. 102 profiles are in enforce mode. 8 profiles are in complain mode. Out of 129 processes running: 13 processes have profiles defined. 8 processes have profiles in enforce mode. 5 processes have profiles in complain mode. Other argument options are provided to report individual aspects, to support being used in scripts. =head1 OPTIONS B accepts only one argument at a time out of: =over 4 =item --enabled returns error code if AppArmor is not enabled. =item --profiled displays the number of loaded AppArmor policies. =item --enforced displays the number of loaded enforcing AppArmor policies. =item --complaining displays the number of loaded non-enforcing AppArmor policies. =item --kill displays the number of loaded enforcing AppArmor policies that will kill tasks on policy violations. =item --special-unconfined displays the number of loaded non-enforcing AppArmor policies that are in the special unconfined mode. =item --process-mixed displays the number of processes confined by profile stacks with profiles in different modes. =item --verbose displays multiple data points about loaded AppArmor policy set (the default action if no arguments are given). =item --json displays multiple data points about loaded AppArmor policy set in a JSON format, fit for machine consumption. =item --pretty-json same as --json, formatted to be readable by humans as well as by machines. =item --help displays a short usage statement. =back =head1 EXIT STATUS Upon exiting, B will set its exit status to the following values: =over 4 =item B<0> if apparmor is enabled and policy is loaded. =item B<1> if apparmor is not enabled/loaded. =item B<2> if apparmor is enabled but no policy is loaded. =item B<3> if the apparmor control files aren't available under /sys/kernel/security/. =item B<4> if the user running the script doesn't have enough privileges to read the apparmor control files. =item B<42> if an internal error occurred. =back =head1 BUGS B must be run as root to read the state of the loaded policy from the apparmor module. It uses the /proc filesystem to determine which processes are confined and so is susceptible to race conditions. If you find any additional bugs, please report them at L. =head1 SEE ALSO apparmor(7), apparmor.d(5), and L. =cut apparmor-3.0.4/binutils/aa_status.c0000664000175000017500000004317114201060045015110 0ustar jjjj/* * Copyright (C) 2020 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. */ #define _GNU_SOURCE /* for asprintf() */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "cJSON.h" #define autofree __attribute((cleanup(_aa_autofree))) #define autofclose __attribute((cleanup(_aa_autofclose))) #define AA_EXIT_ENABLED 0 #define AA_EXIT_DISABLED 1 #define AA_EXIT_NO_POLICY 2 #define AA_EXIT_NO_CONTROL 3 #define AA_EXIT_NO_PERM 4 #define AA_EXIT_INTERNAL_ERROR 42 /* NOTE: Increment this whenever the JSON format changes */ static const unsigned char aa_status_json_version[] = "2"; #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) #define __unused __attribute__ ((__unused__)) struct profile { char *name; char *status; }; static void free_profiles(struct profile *profiles, size_t n) { while (n > 0) { n--; free(profiles[n].name); free(profiles[n].status); } free(profiles); } struct process { char *pid; char *profile; char *exe; char *mode; }; static void free_processes(struct process *processes, size_t n) { while (n > 0) { n--; free(processes[n].pid); free(processes[n].profile); free(processes[n].exe); free(processes[n].mode); } free(processes); } static int verbose = 0; #define dprintf(...) \ do { \ if (verbose) \ printf(__VA_ARGS__); \ } while (0) #define dfprintf(...) \ do { \ if (verbose) \ fprintf(__VA_ARGS__); \ } while (0) static int get_profiles(struct profile **profiles, size_t *n) { autofree char *apparmorfs = NULL; autofree char *apparmor_profiles = NULL; struct stat st; autofclose FILE *fp = NULL; autofree char *line = NULL; size_t len = 0; int ret; *profiles = NULL; *n = 0; ret = stat("/sys/module/apparmor", &st); if (ret != 0) { dfprintf(stderr, "apparmor not present.\n"); ret = AA_EXIT_DISABLED; goto exit; } dprintf("apparmor module is loaded.\n"); ret = aa_find_mountpoint(&apparmorfs); if (ret == -1) { dfprintf(stderr, "apparmor filesystem is not mounted.\n"); ret = AA_EXIT_NO_CONTROL; goto exit; } apparmor_profiles = malloc(strlen(apparmorfs) + 10); // /profiles\0 if (apparmor_profiles == NULL) { ret = AA_EXIT_INTERNAL_ERROR; goto exit; } sprintf(apparmor_profiles, "%s/profiles", apparmorfs); fp = fopen(apparmor_profiles, "r"); if (fp == NULL) { if (errno == EACCES) { dfprintf(stderr, "You do not have enough privilege to read the profile set.\n"); } else { dfprintf(stderr, "Could not open %s: %s", apparmor_profiles, strerror(errno)); } ret = AA_EXIT_NO_PERM; goto exit; } while (getline(&line, &len, fp) != -1) { struct profile *_profiles; autofree char *status = NULL; autofree char *name = NULL; char *tmpname = aa_splitcon(line, &status); if (!tmpname) { dfprintf(stderr, "Error: failed profile name split of '%s'.\n", line); ret = AA_EXIT_INTERNAL_ERROR; // skip this entry and keep processing continue; } name = strdup(tmpname); if (status) status = strdup(status); // give up if out of memory if (name == NULL || status == NULL) { free_profiles(*profiles, *n); *profiles = NULL; *n = 0; ret = AA_EXIT_INTERNAL_ERROR; break; } _profiles = realloc(*profiles, (*n + 1) * sizeof(**profiles)); if (_profiles == NULL) { free_profiles(*profiles, *n); *profiles = NULL; *n = 0; ret = AA_EXIT_INTERNAL_ERROR; break; } // steal name and status _profiles[*n].name = name; _profiles[*n].status = status; name = NULL; status = NULL; *n = *n + 1; *profiles = _profiles; } exit: return ret == 0 ? (*n > 0 ? AA_EXIT_ENABLED : AA_EXIT_NO_POLICY) : ret; } static int compare_profiles(const void *a, const void *b) { return strcmp(((struct profile *)a)->name, ((struct profile *)b)->name); } static int filter_profiles(struct profile *profiles, size_t n, const char *filter, struct profile **filtered, size_t *nfiltered) { int ret = 0; size_t i; *filtered = NULL; *nfiltered = 0; for (i = 0; i < n; i++) { if (filter == NULL || strcmp(profiles[i].status, filter) == 0) { struct profile *_filtered = realloc(*filtered, (*nfiltered + 1) * sizeof(**filtered)); if (_filtered == NULL) { free_profiles(*filtered, *nfiltered); *filtered = NULL; *nfiltered = 0; ret = AA_EXIT_INTERNAL_ERROR; break; } _filtered[*nfiltered].name = strdup(profiles[i].name); _filtered[*nfiltered].status = strdup(profiles[i].status); *filtered = _filtered; *nfiltered = *nfiltered + 1; } } if (*nfiltered != 0) { qsort(*filtered, *nfiltered, sizeof(*profiles), compare_profiles); } return ret; } static int get_processes(struct profile *profiles, size_t n, struct process **processes, size_t *nprocesses) { DIR *dir = NULL; struct dirent *entry = NULL; int ret = 0; *processes = NULL; *nprocesses = 0; dir = opendir("/proc"); if (dir == NULL) { ret = AA_EXIT_INTERNAL_ERROR; goto exit; } while ((entry = readdir(dir)) != NULL) { size_t i; int rc; int ispid = 1; autofree char *profile = NULL; autofree char *mode = NULL; /* be careful */ autofree char *exe = NULL; autofree char *real_exe = NULL; autofclose FILE *fp = NULL; autofree char *line = NULL; // ignore non-pid entries for (i = 0; ispid && i < strlen(entry->d_name); i++) { ispid = (isdigit(entry->d_name[i]) ? 1 : 0); } if (!ispid) { continue; } rc = aa_getprocattr(atoi(entry->d_name), "current", &profile, &mode); if (rc == -1 && errno != ENOMEM) { /* fail to access */ continue; } else if (rc == -1 || asprintf(&exe, "/proc/%s/exe", entry->d_name) == -1) { fprintf(stderr, "ERROR: Failed to allocate memory\n"); ret = AA_EXIT_INTERNAL_ERROR; goto exit; } else if (mode) { /* TODO: make this not needed. Mode can now be autofreed */ mode = strdup(mode); } // get executable - readpath can allocate for us but seems // to fail in some cases with errno 2 - no such file or // directory - whereas readlink() can succeed in these // cases - and readpath() seems to have the same behaviour // as in python with better canonicalized results so try it // first and fallack to readlink if it fails // coverity[toctou] real_exe = realpath(exe, NULL); if (real_exe == NULL) { int res; // ensure enough space for NUL terminator real_exe = calloc(PATH_MAX + 1, sizeof(char)); if (real_exe == NULL) { fprintf(stderr, "ERROR: Failed to allocate memory\n"); ret = AA_EXIT_INTERNAL_ERROR; goto exit; } res = readlink(exe, real_exe, PATH_MAX); if (res == -1) { continue; } real_exe[res] = '\0'; } if (mode == NULL) { // is unconfined so keep only if this has a // matching profile. TODO: fix to use attachment for (i = 0; i < n; i++) { if (strcmp(profiles[i].name, real_exe) == 0) { profile = strdup(real_exe); mode = strdup("unconfined"); break; } } } if (profile != NULL && mode != NULL) { struct process *_processes = realloc(*processes, (*nprocesses + 1) * sizeof(**processes)); if (_processes == NULL) { free_processes(*processes, *nprocesses); *processes = NULL; *nprocesses = 0; ret = AA_EXIT_INTERNAL_ERROR; goto exit; } _processes[*nprocesses].pid = strdup(entry->d_name); _processes[*nprocesses].profile = profile; _processes[*nprocesses].exe = strdup(real_exe); _processes[*nprocesses].mode = mode; *processes = _processes; *nprocesses = *nprocesses + 1; profile = NULL; mode = NULL; ret = AA_EXIT_ENABLED; } } exit: if (dir != NULL) { closedir(dir); } return ret; } static int filter_processes(struct process *processes, size_t n, const char *filter, struct process **filtered, size_t *nfiltered) { size_t i; int ret = 0; *filtered = NULL; *nfiltered = 0; for (i = 0; i < n; i++) { if (filter == NULL || strcmp(processes[i].mode, filter) == 0) { struct process *_filtered = realloc(*filtered, (*nfiltered + 1) * sizeof(**filtered)); if (_filtered == NULL) { free_processes(*filtered, *nfiltered); *filtered = NULL; *nfiltered = 0; ret = AA_EXIT_INTERNAL_ERROR; break; } _filtered[*nfiltered].pid = strdup(processes[i].pid); _filtered[*nfiltered].profile = strdup(processes[i].profile); _filtered[*nfiltered].exe = strdup(processes[i].exe); _filtered[*nfiltered].mode = strdup(processes[i].mode); *filtered = _filtered; *nfiltered = *nfiltered + 1; } } return ret; } /** * Returns error code if AppArmor is not enabled */ static int simple_filtered_count(const char *filter) { size_t n; struct profile *profiles; int ret; ret = get_profiles(&profiles, &n); if (ret == 0) { size_t nfiltered; struct profile *filtered = NULL; ret = filter_profiles(profiles, n, filter, &filtered, &nfiltered); printf("%zd\n", nfiltered); free_profiles(filtered, nfiltered); } free_profiles(profiles, n); return ret; } static int simple_filtered_process_count(const char *filter) { size_t nprocesses, nprofiles; struct profile *profiles = NULL; struct process *processes = NULL; int ret; ret = get_profiles(&profiles, &nprofiles); if (ret != 0) return ret; ret = get_processes(profiles, nprofiles, &processes, &nprocesses); if (ret == 0) { size_t nfiltered; struct process *filtered = NULL; ret = filter_processes(processes, nprocesses, filter, &filtered, &nfiltered); printf("%zd\n", nfiltered); free_processes(filtered, nfiltered); } free_profiles(profiles, nprofiles); free_processes(processes, nprocesses); return ret; } static int cmd_enabled(__unused const char *command) { int res = aa_is_enabled(); return res == 1 ? 0 : 1; } static int cmd_profiled(__unused const char *command) { return simple_filtered_count(NULL); } static int cmd_enforced(__unused const char *command) { return simple_filtered_count("enforce"); } static int cmd_complaining(__unused const char *command) { return simple_filtered_count("complain"); } static int cmd_kill(__unused const char *command) { return simple_filtered_count("kill"); } static int cmd_unconfined(__unused const char *command) { return simple_filtered_count("unconfined"); } static int cmd_process_mixed(__unused const char *command) { return simple_filtered_process_count("mixed"); } static int compare_processes_by_profile(const void *a, const void *b) { return strcmp(((struct process *)a)->profile, ((struct process *)b)->profile); } static int compare_processes_by_executable(const void *a, const void *b) { return strcmp(((struct process *)a)->exe, ((struct process *)b)->exe); } static int detailed_output(FILE *json) { size_t nprofiles = 0, nprocesses = 0; struct profile *profiles = NULL; struct process *processes = NULL; const char *profile_statuses[] = {"enforce", "complain", "kill", "unconfined"}; const char *process_statuses[] = {"enforce", "complain", "unconfined", "mixed", "kill"}; int ret; size_t i; ret = get_profiles(&profiles, &nprofiles); if (ret != 0) { goto exit; } ret = get_processes(profiles, nprofiles, &processes, &nprocesses); if (ret != 0) { dfprintf(stderr, "Failed to get processes: %d....\n", ret); goto exit; } if (json) { fprintf(json, "{\"version\": \"%s\", \"profiles\": {", aa_status_json_version); } else { dprintf("%zd profiles are loaded.\n", nprofiles); } for (i = 0; i < ARRAY_SIZE(profile_statuses); i++) { size_t nfiltered = 0, j; struct profile *filtered = NULL; ret = filter_profiles(profiles, nprofiles, profile_statuses[i], &filtered, &nfiltered); if (ret != 0) { goto exit; } if (!json) { dprintf("%zd profiles are in %s mode.\n", nfiltered, profile_statuses[i]); } for (j = 0; j < nfiltered; j++) { if (json) { fprintf(json, "%s\"%s\": \"%s\"", i == 0 && j == 0 ? "" : ", ", filtered[j].name, profile_statuses[i]); } else { dprintf(" %s\n", filtered[j].name); } } free_profiles(filtered, nfiltered); } if (json) { fprintf(json, "}, \"processes\": {"); } else { dprintf("%zd processes have profiles defined.\n", nprocesses); } for (i = 0; i < ARRAY_SIZE(process_statuses); i++) { size_t nfiltered = 0, j; struct process *filtered = NULL; ret = filter_processes(processes, nprocesses, process_statuses[i], &filtered, &nfiltered); if (ret != 0) { goto exit; } if (!json) { if (strcmp(process_statuses[i], "unconfined") == 0) { dprintf("%zd processes are unconfined but have a profile defined.\n", nfiltered); } else { dprintf("%zd processes are in %s mode.\n", nfiltered, process_statuses[i]); } } if (!json) { qsort(filtered, nfiltered, sizeof(*filtered), compare_processes_by_profile); for (j = 0; j < nfiltered; j++) { dprintf(" %s (%s) %s\n", filtered[j].exe, filtered[j].pid, // hide profile name if matches executable (strcmp(filtered[j].profile, filtered[j].exe) == 0 ? "" : filtered[j].profile)); } } else { // json output requires processes to be grouped per executable qsort(filtered, nfiltered, sizeof(*filtered), compare_processes_by_executable); for (j = 0; j < nfiltered; j++) { if (j > 0 && strcmp(filtered[j].exe, filtered[j - 1].exe) == 0) { // same executable fprintf(json, ", {\"profile\": \"%s\", \"pid\": \"%s\", \"status\": \"%s\"}", filtered[j].profile, filtered[j].pid, filtered[j].mode); } else { fprintf(json, "%s\"%s\": [{\"profile\": \"%s\", \"pid\": \"%s\", \"status\": \"%s\"}", // first element will be a unique executable i == 0 && j == 0 ? "" : "], ", filtered[j].exe, filtered[j].profile, filtered[j].pid, filtered[j].mode); } } } free_processes(filtered, nfiltered); } if (json) { fprintf(json, "%s}}\n", nprocesses > 0 ? "]" : ""); } exit: free_processes(processes, nprocesses); free_profiles(profiles, nprofiles); return ret == 0 ? (nprofiles > 0 ? AA_EXIT_ENABLED : AA_EXIT_NO_POLICY) : ret; } static int cmd_json(__unused const char *command) { detailed_output(stdout); return 0; } static int cmd_pretty_json(__unused const char *command) { autofree char *buffer = NULL; autofree char *pretty = NULL; cJSON *json; FILE *f; /* no autofclose - want explicit close to sync */ size_t size; int ret; f = open_memstream(&buffer, &size); if (!f) { dfprintf(stderr, "Failed to open memstream: %m\n"); return AA_EXIT_INTERNAL_ERROR; } ret = detailed_output(f); fclose(f); if (ret) return ret; json = cJSON_Parse(buffer); if (!json) { dfprintf(stderr, "Failed to parse json output"); return AA_EXIT_INTERNAL_ERROR; } pretty = cJSON_Print(json); if (!pretty) { dfprintf(stderr, "Failed to print pretty json"); return AA_EXIT_INTERNAL_ERROR; } fprintf(stdout, "%s\n", pretty); return AA_EXIT_ENABLED; } static int cmd_verbose(__unused const char *command) { verbose = 1; return detailed_output(NULL); } static int print_usage(const char *command) { printf("Usage: %s [OPTIONS]\n" "Displays various information about the currently loaded AppArmor policy.\n" "OPTIONS (one only):\n" " --enabled returns error code if AppArmor not enabled\n" " --profiled prints the number of loaded policies\n" " --enforced prints the number of loaded enforcing policies\n" " --complaining prints the number of loaded non-enforcing policies\n" " --kill prints the number of loaded enforcing policies that kill tasks on policy violations\n" " --special-unconfined prints the number of loaded non-enforcing policies in the special unconfined mode\n" " --process-mixed prints the number processes with mixed profile modes\n" " --json displays multiple data points in machine-readable JSON format\n" " --pretty-json same data as --json, formatted for human consumption as well\n" " --verbose (default) displays multiple data points about loaded policy set\n" " --help this message\n", command); return 0; } struct command { const char * const name; int (*cmd)(const char *command); }; static struct command commands[] = { {"--enabled", cmd_enabled}, {"--profiled", cmd_profiled}, {"--enforced", cmd_enforced}, {"--complaining", cmd_complaining}, {"--kill", cmd_kill}, {"--special-unconfined", cmd_unconfined}, {"--process-mixed", cmd_process_mixed}, {"--json", cmd_json}, {"--pretty-json", cmd_pretty_json}, {"--verbose", cmd_verbose}, {"-v", cmd_verbose}, {"--help", print_usage}, {"-h", print_usage}, }; int main(int argc, char **argv) { int ret = EXIT_SUCCESS; int _ret; int (*cmd)(const char*) = cmd_verbose; if (argc > 2) { dfprintf(stderr, "Error: Too many options.\n"); cmd = print_usage; ret = EXIT_FAILURE; } else if (argc == 2) { int (*_cmd)(const char*) = NULL; size_t i; for (i = 0; i < ARRAY_SIZE(commands); i++) { if (strcmp(argv[1], commands[i].name) == 0) { _cmd = commands[i].cmd; break; } } if (_cmd == NULL) { dfprintf(stderr, "Error: Invalid command.\n"); cmd = print_usage; ret = EXIT_FAILURE; } else { cmd = _cmd; } } _ret = cmd(argv[0]); exit(ret == EXIT_FAILURE ? ret : _ret); } apparmor-3.0.4/binutils/aa-enabled.10000664000175000017500000001314514201060300015003 0ustar jjjj.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "AA-ENABLED 1" .TH AA-ENABLED 1 "2022-02-10" "AppArmor 3.0.4" "AppArmor" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" aa\-enabled \- test whether AppArmor is enabled .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBaa-enabled\fR [options] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBaa-enabled\fR is used to determine if AppArmor is enabled. .SH "OPTIONS" .IX Header "OPTIONS" \&\fBaa-enabled\fR accepts the following arguments: .IP "\-h, \-\-help" 4 .IX Item "-h, --help" Display a brief usage guide. .IP "\-q, \-\-quiet" 4 .IX Item "-q, --quiet" Do not output anything to stdout. This option is intended to be used by scripts that simply want to use the exit code to determine if AppArmor is enabled. .IP "\-x, \-\-exclusive" 4 .IX Item "-x, --exclusive" Require AppArmor to have exclusive access to shared \s-1LSM\s0 interfaces to be considered enabled. .SH "EXIT STATUS" .IX Header "EXIT STATUS" Upon exiting, \fBaa-enabled\fR will set its exit status to the following values: .IP "\fB0\fR" 4 .IX Item "0" if AppArmor is enabled. .IP "\fB1\fR" 4 .IX Item "1" if AppArmor is not enabled/loaded. .IP "\fB2\fR" 4 .IX Item "2" intentionally not used as an \fBaa-enabled\fR exit status. .IP "\fB3\fR" 4 .IX Item "3" if the AppArmor control files aren't available under /sys/kernel/security/. .IP "\fB4\fR" 4 .IX Item "4" if \fBaa-enabled\fR doesn't have enough privileges to read the apparmor control files. .IP "\fB10\fR" 4 .IX Item "10" AppArmor is enabled but does not have access to shared \s-1LSM\s0 interfaces. .IP "\fB64\fR" 4 .IX Item "64" if any unexpected error or condition is encountered. .SH "BUGS" .IX Header "BUGS" If you find any bugs, please report them at . .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBapparmor\fR\|(7), \fBapparmor.d\fR\|(5), \fBaa_is_enabled\fR\|(2), and . apparmor-3.0.4/binutils/aa_enabled.c0000664000175000017500000000443114201060045015153 0ustar jjjj/* * Copyright (C) 2015 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. */ #include #include #include #include #include #include #define _(s) gettext(s) #include void print_help(const char *command) { printf(_("%s: [options]\n" " options:\n" " -x | --exclusive Shared interfaces must be available\n" " -q | --quiet Don't print out any messages\n" " -h | --help Print help\n"), command); exit(1); } /* Exit statuses and meanings are documented in the aa-enabled.pod file */ static void exit_with_error(int saved_errno, int quiet) { switch(saved_errno) { case ENOSYS: if (!quiet) printf(_("No - not available on this system.\n")); exit(1); case ECANCELED: if (!quiet) printf(_("No - disabled at boot.\n")); exit(1); case ENOENT: if (!quiet) printf(_("Maybe - policy interface not available.\n")); exit(3); case EPERM: case EACCES: if (!quiet) printf(_("Maybe - insufficient permissions to determine availability.\n")); exit(4); case EBUSY: if (!quiet) printf(_("Partially - public shared interfaces are not available.\n")); exit(10); } if (!quiet) printf(_("Error - %s\n"), strerror(saved_errno)); exit(64); } int main(int argc, char **argv) { int i, enabled; int quiet = 0; int require_shared = 0; setlocale(LC_MESSAGES, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); if (argc > 3) { printf(_("unknown or incompatible options\n")); print_help(argv[0]); } for (i = 1; i < argc; i++) { if (strcmp(argv[i], "--quiet") == 0 || strcmp(argv[i], "-q") == 0) { quiet = 1; } else if (strcmp(argv[i], "--exclusive") == 0 || strcmp(argv[i], "-x") == 0) { require_shared = 1; } else if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { print_help(argv[0]); } else { printf(_("unknown option '%s'\n"), argv[1]); print_help(argv[0]); } } enabled = aa_is_enabled(); if (!enabled) { if (require_shared || errno != EBUSY) exit_with_error(errno, quiet); } if (!quiet) printf(_("Yes\n")); exit(0); } apparmor-3.0.4/parser/0000775000175000017500000000000014201060301012410 5ustar jjjjapparmor-3.0.4/parser/parser_include.h0000664000175000017500000000235014201060045015565 0ustar jjjj/* * Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 * NOVELL (All rights reserved) * Copyright (c) 2010 - 2012 * Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Canonical, Ltd. */ #ifndef PARSER_INCLUDE_H #define PARSER_INCLUDE_H extern int preprocess_only; extern int add_search_dir(const char *dir); extern void init_base_dir(void); extern void set_base_dir(char *dir); extern void parse_default_paths(void); extern int do_include_preprocessing(char *profilename); FILE *search_path(char *filename, char **fullpath, bool *skip); extern void push_include_stack(char *filename); extern void pop_include_stack(void); extern void reset_include_stack(const char *filename); #endif apparmor-3.0.4/parser/signal.h0000664000175000017500000000311314201060045014041 0ustar jjjj/* * Copyright (c) 2014 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #ifndef __AA_SIGNAL_H #define __AA_SIGNAL_H #include "parser.h" #include "rule.h" #include "profile.h" #define AA_MAY_SEND (1 << 1) #define AA_MAY_RECEIVE (1 << 2) #define AA_VALID_SIGNAL_PERMS (AA_MAY_SEND | AA_MAY_RECEIVE) typedef set Signals; int parse_signal_mode(const char *str_mode, int *mode, int fail); class signal_rule: public rule_t { void extract_sigs(struct value_list **list); void move_conditionals(struct cond_entry *conds); public: Signals signals; char *peer_label; int mode; int audit; int deny; signal_rule(int mode, struct cond_entry *conds); virtual ~signal_rule() { signals.clear(); free(peer_label); }; virtual ostream &dump(ostream &os); virtual int expand_variables(void); virtual int gen_policy_re(Profile &prof); virtual void post_process(Profile &prof unused) { }; protected: virtual void warn_once(const char *name) override; }; #endif /* __AA_SIGNAL_H */ apparmor-3.0.4/parser/apparmor.d.5.html0000644000175000017500000024676014201060301015521 0ustar jjjj apparmor.d - syntax of security profiles for AppArmor.
 apparmor.d - syntax of security profiles for AppArmor.

NAME

apparmor.d - syntax of security profiles for AppArmor.

DESCRIPTION

AppArmor profiles describe mandatory access rights granted to given programs and are fed to the AppArmor policy enforcement module using apparmor_parser(8). This man page describes the format of the AppArmor configuration files; see apparmor(7) for an overview of AppArmor.

FORMAT

AppArmor policy is written in a declarative language, in which the order of rules within a given section or block does not matter. Policy is by convention written so that it is contained in multiple files, but this is not a requirement. It could just as easily be written in a single file. The policy language is compiled to a architecture independent binary format that is loaded into the kernel for enforcement.

The base unit of AppArmor confinement is the profile. It contains a set of rules which are enforced when the profile is associated with a running program. The rules within the profile provide a whitelist of different permission that are allowed, along with a few other special rules.

The text in AppArmor policy is split into two sections, the preamble and the profile definitions. The preamble must occur at the head of the file and once profile definitions begin, no more preamble rules are allowed (even in files that are included into the profile). When AppArmor policy (set of profiles) is split across multiple files, each file can have its own preamble section, which may be the same or different from other files preamble. Files included within a profile section can not have a preamble section.

The following is a BNF-style description of AppArmor policy configuration files; see below for an example AppArmor policy file. AppArmor configuration files are line-oriented; # introduces a comment, similar to shell scripting languages. The exception to this rule is that #include will include the contents of a file inline to the policy; this behaviour is modelled after cpp(1).

    PROFILE FILE = ( [ PREAMBLE ] [ PROFILE ] )*

    PREAMBLE = ( COMMENT | VARIABLE ASSIGNMENT | ALIAS RULE | INCLUDE | ABI )* Variable assignment and alias rules must come before the profile.

    VARIABLE ASSIGNMENT = VARIABLE ('=' | '+=') (space separated values)

    VARIABLE = '@{' ALPHA [ ( ALPHANUMERIC | '_' ) ... ] '}'

    ALIAS RULE = 'alias' ABS PATH '->' REWRITTEN ABS PATH ','

    INCLUDE = ( '#include' | 'include' ) [ 'if exists' ] ( ABS PATH | MAGIC PATH )

    ABI = ( 'abi' ) ( ABS PATH | MAGIC PATH ) ','

    ABS PATH = '"' path '"' (the path is passed to open(2))

    MAGIC PATH = '<' relative path '>' The path is relative to /etc/apparmor.d/.

    COMMENT = '#' TEXT [ '\r' ] '\n'

    TEXT = any characters

    PROFILE = ( PROFILE HEAD ) [ ATTACHMENT SPECIFICATION ] [ PROFILE FLAG CONDS ] '{' ( RULES )* '}'

    PROFILE HEAD = [ 'profile' ] FILEGLOB | 'profile' PROFILE NAME

    PROFILE NAME ( UNQUOTED PROFILE NAME | QUOTED PROFILE NAME )

    QUOTED PROFILE NAME = '"' UNQUOTED PROFILE NAME '"'

    UNQUOTED PROFILE NAME = (must start with alphanumeric character (after variable expansion), or '/' AARE have special meanings; see below. May include VARIABLE. Rules with embedded spaces or tabs must be quoted.)

    ATTACHMENT SPECIFICATION = [ PROFILE_EXEC_COND ] [ PROFILE XATTR CONDS ]

    PROFILE_EXEC_COND = FILEGLOB

    PROFILE XATTR CONDS = [ 'xattrs=' ] '(' comma or white space separated list of PROFILE XATTR ')'

    PROFILE XATTR = extended attribute name '=' XATTR VALUE FILEGLOB

    XATTR VALUE FILEGLOB = FILEGLOB

    PROFILE FLAG CONDS = [ 'flags=' ] '(' comma or white space separated list of PROFILE FLAGS ')'

    PROFILE FLAGS = PROFILE MODE | AUDIT_MODE | 'mediate_deleted' | 'attach_disconnected' | 'chroot_relative'

    PROFILE MODE = 'enforce' | 'complain' | 'kill' | 'unconfined'

    AUDIT MODE = 'audit'

    RULES = [ ( LINE RULES | COMMA RULES ',' | BLOCK RULES )

    LINE RULES = ( COMMENT | INCLUDE ) [ '\r' ] '\n'

    COMMA RULES = ( CAPABILITY RULE | NETWORK RULE | MOUNT RULE | PIVOT ROOT RULE | UNIX RULE | FILE RULE | LINK RULE | CHANGE_PROFILE RULE | RLIMIT RULE | DBUS RULE )

    BLOCK RULES = ( SUBPROFILE | HAT | QUALIFIER BLOCK )

    SUBPROFILE = 'profile' PROFILE NAME [ ATTACHMENT SPECIFICATION ] [ PROFILE FLAG CONDS ] '{' ( RULES )* '}'

    HAT = ('hat' | '^') HATNAME [ PROFILE FLAG CONDS ] '{' ( RULES )* '}'

    HATNAME = (must start with alphanumeric character. See aa_change_hat(2) for a description of how this "hat" is used. If '^' is used to start a hat then there is no space between the '^' and HATNAME)

    QUALIFIER BLOCK = QUALIFIERS BLOCK

    ACCESS TYPE = ( 'allow' | 'deny' )

    QUALIFIERS = [ 'audit' ] [ ACCESS TYPE ]

    CAPABILITY RULE = [ QUALIFIERS ] 'capability' [ CAPABILITY LIST ]

    CAPABILITY LIST = ( CAPABILITY )+

    CAPABILITY = (lowercase capability name without 'CAP_' prefix; see capabilities(7))

    NETWORK RULE = [ QUALIFIERS ] 'network' [ DOMAIN ] [ TYPE | PROTOCOL ]

    DOMAIN = ( 'unix' | 'inet' | 'ax25' | 'ipx' | 'appletalk' | 'netrom' | 'bridge' | 'atmpvc' | 'x25' | 'inet6' | 'rose' | 'netbeui' | 'security' | 'key' | 'netlink' | 'packet' | 'ash' | 'econet' | 'atmsvc' | 'rds' | 'sna' | 'irda' | 'pppox' | 'wanpipe' | 'llc' | 'ib' | 'mpls' | 'can' | 'tipc' | 'bluetooth' | 'iucv' | 'rxrpc' | 'isdn' | 'phonet' | 'ieee802154' | 'caif' | 'alg' | 'nfc' | 'vsock' | 'kcm' | 'qipcrtr' | 'smc' | 'xdp' | 'mctp' ) ','

    TYPE = ( 'stream' | 'dgram' | 'seqpacket' | 'rdm' | 'raw' | 'packet' )

    PROTOCOL = ( 'tcp' | 'udp' | 'icmp' )

    MOUNT RULE = ( MOUNT | REMOUNT | UMOUNT )

    MOUNT = [ QUALIFIERS ] 'mount' [ MOUNT CONDITIONS ] [ SOURCE FILEGLOB ] [ '->' [ MOUNTPOINT FILEGLOB ]

    REMOUNT = [ QUALIFIERS ] 'remount' [ MOUNT CONDITIONS ] MOUNTPOINT FILEGLOB

    UMOUNT = [ QUALIFIERS ] 'umount' [ MOUNT CONDITIONS ] MOUNTPOINT FILEGLOB

    MOUNT CONDITIONS = [ ( 'fstype' | 'vfstype' ) ( '=' | 'in' ) MOUNT FSTYPE EXPRESSION ] [ 'options' ( '=' | 'in' ) MOUNT FLAGS EXPRESSION ]

    MOUNT FSTYPE EXPRESSION = ( MOUNT FSTYPE LIST | MOUNT EXPRESSION )

    MOUNT FSTYPE LIST = Comma separated list of valid filesystem and virtual filesystem types (eg ext4, debugfs, devfs, etc)

    MOUNT FLAGS EXPRESSION = ( MOUNT FLAGS LIST | MOUNT EXPRESSION )

    MOUNT FLAGS LIST = Comma separated list of MOUNT FLAGS.

    MOUNT FLAGS = ( 'ro' | 'rw' | 'nosuid' | 'suid' | 'nodev' | 'dev' | 'noexec' | 'exec' | 'sync' | 'async' | 'remount' | 'mand' | 'nomand' | 'dirsync' | 'noatime' | 'atime' | 'nodiratime' | 'diratime' | 'bind' | 'rbind' | 'move' | 'verbose' | 'silent' | 'loud' | 'acl' | 'noacl' | 'unbindable' | 'runbindable' | 'private' | 'rprivate' | 'slave' | 'rslave' | 'shared' | 'rshared' | 'relatime' | 'norelatime' | 'iversion' | 'noiversion' | 'strictatime' | 'nouser' | 'user' )

    MOUNT EXPRESSION = ( ALPHANUMERIC | AARE ) ...

    PIVOT ROOT RULE = [ QUALIFIERS ] pivot_root [ oldroot=OLD PUT FILEGLOB ] [ NEW ROOT FILEGLOB ] [ '->' PROFILE NAME ]

    SOURCE FILEGLOB = FILEGLOB

    MOUNTPOINT FILEGLOB = FILEGLOB

    OLD PUT FILEGLOB = FILEGLOB

    PTRACE_RULE = [ QUALIFIERS ] 'ptrace' [ PTRACE ACCESS PERMISSIONS ] [ PTRACE PEER ]

    PTRACE ACCESS PERMISSIONS = PTRACE ACCESS | PTRACE ACCESS LIST

    PTRACE ACCESS LIST = '(' Comma or space separated list of PTRACE ACCESS ')'

    PTRACE ACCESS = ( 'r' | 'w' | 'rw' | 'read' | 'readby' | 'trace' | 'tracedby' )

    PTRACE PEER = 'peer' '=' AARE

    SIGNAL_RULE = [ QUALIFIERS ] 'signal' [ SIGNAL ACCESS PERMISSIONS ] [ SIGNAL SET ] [ SIGNAL PEER ]

    SIGNAL ACCESS PERMISSIONS = SIGNAL ACCESS | SIGNAL ACCESS LIST

    SIGNAL ACCESS LIST = '(' Comma or space separated list of SIGNAL ACCESS ')'

    SIGNAL ACCESS = ( 'r' | 'w' | 'rw' | 'read' | 'write' | 'send' | 'receive' )

    SIGNAL SET = 'set' '=' '(' SIGNAL LIST ')'

    SIGNAL LIST = Comma or space separated list of SIGNALS

    SIGNALS = ( 'hup' | 'int' | 'quit' | 'ill' | 'trap' | 'abrt' | 'bus' | 'fpe' | 'kill' | 'usr1' | 'segv' | 'usr2' | 'pipe' | 'alrm' | 'term' | 'stkflt' | 'chld' | 'cont' | 'stop' | 'stp' | 'ttin' | 'ttou' | 'urg' | 'xcpu' | 'xfsz' | 'vtalrm' | 'prof' | 'winch' | 'io' | 'pwr' | 'sys' | 'emt' | 'exists' | 'rtmin+0' ... 'rtmin+32' )

    SIGNAL PEER = 'peer' '=' AARE

    DBUS RULE = ( DBUS MESSAGE RULE | DBUS SERVICE RULE | DBUS EAVESDROP RULE | DBUS COMBINED RULE )

    DBUS MESSAGE RULE = [ QUALIFIERS ] 'dbus' [ DBUS ACCESS EXPRESSION ] [ DBUS BUS ] [ DBUS PATH ] [ DBUS INTERFACE ] [ DBUS MEMBER ] [ DBUS PEER ]

    DBUS SERVICE RULE = [ QUALIFIERS ] 'dbus' [ DBUS ACCESS EXPRESSION ] [ DBUS BUS ] [ DBUS NAME ]

    DBUS EAVESDROP RULE = [ QUALIFIERS ] 'dbus' [ DBUS ACCESS EXPRESSION ] [ DBUS BUS ]

    DBUS COMBINED RULE = [ QUALIFIERS ] 'dbus' [ DBUS ACCESS EXPRESSION ] [ DBUS BUS ]

    DBUS ACCESS EXPRESSION = ( DBUS ACCESS | '(' DBUS ACCESS LIST ')' )

    DBUS BUS = 'bus' '=' '(' 'system' | 'session' | '"' AARE '"' | AARE ')'

    DBUS PATH = 'path' '=' '(' '"' AARE '"' | AARE ')'

    DBUS INTERFACE = 'interface' '=' '(' '"' AARE '"' | AARE ')'

    DBUS MEMBER = 'member' '=' '(' '"' AARE '"' | AARE ')'

    DBUS PEER = 'peer' '=' '(' [ DBUS NAME ] [ DBUS LABEL ] ')'

    DBUS NAME = 'name' '=' '(' '"' AARE '"' | AARE ')'

    DBUS LABEL = 'label' '=' '(' '"' AARE '"' | AARE ')'

    DBUS ACCESS LIST = Comma separated list of DBUS ACCESS

    DBUS ACCESS = ( 'send' | 'receive' | 'bind' | 'eavesdrop' | 'r' | 'read' | 'w' | 'write' | 'rw' ) Some accesses are incompatible with some rules; see below.

    AARE = ?*[]{}^ See below for meanings.

    UNIX RULE = [ QUALIFIERS ] 'unix' [ UNIX ACCESS EXPR ] [ UNIX RULE CONDS ] [ UNIX LOCAL EXPR ] [ UNIX PEER EXPR ]

    UNIX ACCESS EXPR = ( UNIX ACCESS | UNIX ACCESS LIST )

    UNIX ACCESS = ( 'create' | 'bind' | 'listen' | 'accept' | 'connect' | 'shutdown' | 'getattr' | 'setattr' | 'getopt' | 'setopt' | 'send' | 'receive' | 'r' | 'w' | 'rw' ) Some access modes are incompatible with some rules or require additional parameters.

    UNIX ACCESS LIST = '(' UNIX ACCESS ( [','] UNIX ACCESS )* ')'

    UNIX RULE CONDS = ( TYPE COND | PROTO COND ) Each cond can appear at most once.

    TYPE COND = 'type' '=' ( AARE | '(' ( '"' AARE '"' | AARE )+ ')' )

    PROTO COND = 'protocol' '=' ( AARE | '(' ( '"' AARE '"' | AARE )+ ')' )

    UNIX LOCAL EXPR = ( UNIX ADDRESS COND | UNIX LABEL COND | UNIX ATTR COND | UNIX OPT COND )* Each cond can appear at most once.

    UNIX PEER EXPR = 'peer' '=' ( UNIX ADDRESS COND | UNIX LABEL COND )+ Each cond can appear at most once.

    UNIX ADDRESS COND 'addr' '=' ( AARE | '(' '"' AARE '"' | AARE ')' )

    UNIX LABEL COND 'label' '=' ( AARE | '(' '"' AARE '"' | AARE ')' )

    UNIX ATTR COND 'attr' '=' ( AARE | '(' '"' AARE '"' | AARE ')' )

    UNIX OPT COND 'opt' '=' ( AARE | '(' '"' AARE '"' | AARE ')' )

    RLIMIT RULE = 'set' 'rlimit' [RLIMIT '<=' RLIMIT VALUE ]

    RLIMIT = ( 'cpu' | 'fsize' | 'data' | 'stack' | 'core' | 'rss' | 'nofile' | 'ofile' | 'as' | 'nproc' | 'memlock' | 'locks' | 'sigpending' | 'msgqueue' | 'nice' | 'rtprio' | 'rttime' )

    RLIMIT VALUE = ( RLIMIT SIZE | RLIMIT NUMBER | RLIMIT TIME | RLIMIT NICE )

    RLIMIT SIZE = NUMBER ( 'K' | 'M' | 'G' ) Only applies to RLIMIT of 'fsize', 'data', 'stack', 'core', 'rss', 'as', 'memlock', 'msgqueue'.

    RLIMIT NUMBER = number from 0 to max rlimit value. Only applies to RLIMIT of 'ofile', 'nofile', 'locks', 'sigpending', 'nproc', 'rtprio'.

    RLIMIT TIME = NUMBER ( 'us' | 'microsecond' | 'microseconds' | 'ms' | 'millisecond' | 'milliseconds' | 's' | 'sec' | 'second' | 'seconds' | 'min' | 'minute' | 'minutes' | 'h' | 'hour' | 'hours' | 'd' | 'day' | 'days' | 'week' | 'weeks' ) Only applies to RLIMIT of 'cpu' and 'rttime'. RLIMIT 'cpu' only allows units >= 'seconds'.

    RLIMIT NICE = a number between -20 and 19. Only applies to RLIMIT of 'nice'.

    FILE RULE = [ QUALIFIERS ] [ 'owner' ] ( 'file' | [ 'file' ] ( FILEGLOB ACCESS | ACCESS FILEGLOB ) [ '->' EXEC TARGET ] )

    FILEGLOB = ( QUOTED FILEGLOB | UNQUOTED FILEGLOB )

    QUOTED FILEGLOB = '"' UNQUOTED FILEGLOB '"'

    UNQUOTED FILEGLOB = (must start with '/' (after variable expansion), AARE have special meanings; see below. May include VARIABLE. Rules with embedded spaces or tabs must be quoted. Rules must end with '/' to apply to directories.)

    ACCESS = ( 'r' | 'w' | 'a' | 'l' | 'k' | 'm' | EXEC TRANSITION )+ (not all combinations are allowed; see below.)

    EXEC TRANSITION = ( 'ix' | 'ux' | 'Ux' | 'px' | 'Px' | 'cx' | 'Cx' | 'pix' | 'Pix' | 'cix' | 'Cix' | 'pux' | 'PUx' | 'cux' | 'CUx' | 'x' ) A bare 'x' is only allowed in rules with the deny qualifier, everything else only without the deny qualifier.

    EXEC TARGET = name Requires EXEC TRANSITION specified.

    LINK RULE = QUALIFIERS [ 'owner' ] 'link' [ 'subset' ] FILEGLOB '->' FILEGLOB

    ALPHA = ('a', 'b', 'c', ... 'z', 'A', 'B', ... 'Z')

    ALPHANUMERIC = ('0', '1', '2', ... '9', 'a', 'b', 'c', ... 'z', 'A', 'B', ... 'Z')

    CHANGE_PROFILE RULE = 'change_profile' [ [ EXEC MODE ] EXEC COND ] [ '->' PROFILE NAME ]

    EXEC_MODE = ( 'safe' | 'unsafe' )

    EXEC COND = FILEGLOB

All resources and programs need a full path. There may be any number of subprofiles (aka child profiles) in a profile, limited only by kernel memory. Subprofile names are limited to 974 characters. Child profiles can be used to confine an application in a special way, or when you want the child to be unconfined on the system, but confined when called from the parent. Hats are a special child profile that can be used with the aa_change_hat(2) API call. Applications written or modified to use aa_change_hat(2) can take advantage of subprofiles to run under different confinements, dependent on program logic. Several aa_change_hat(2)-aware applications exist, including an Apache module, mod_apparmor(5); a PAM module, pam_apparmor; and a Tomcat valve, tomcat_apparmor. Applications written or modified to use change_profile(2) transition permanently to the specified profile. libvirt is one such application.

Profile Head

The profile head consists of a required name that is unique and optional attachment conditionals and control flags.

Name

The name of the profile is its identifier. It is what is displayed during introspection (eg. ps -Z), and defines how the profile is referenced by policy rules for any policy interaction via ipc or domain changes. It is recommended that the name be kept short and have meaning for the application it is being applied eg. firefox for the firefox web browser or its functional role eg. log_admin.

If the name is an applications full absolute path name eg. /usr/bin/firefox and an exec attachment conditional is not specified the name is also used as the profile's exec attachment conditional. This use however has been deprecated and is discouraged as it makes for long names that can make profile rules difficult to understand, and may not be fully displayed by some introspection tools.

Attachment Conditionals

The attachment conditionals are used during profile changes to determine whether a profile is a match for the proposed profile transition. The attachment conditionals are optional, how and when they are applied is determined by the specific condition(s) used.

When attachment conditionals are used, the attachment conditionals for all profiles in the namespace will be evaluated. The profile with the set of attachments that result in the best match will become the new profile after a transition operation. Attachments that don't match will result in the profile not being available for transition.

If no conditionals are specified the profile will only be used if a transition explicitly specifies the profile name.

Exec Attachment Conditional

The exec attachment conditional governs how closely the profile matches an executable program. This conditional is only used during an exec operation when the matching exec rule specifies either a px or cx (or their derivatives) transition type. The exec attachment conditional will also be used by tasks that are unconfined as they use a pix transition rule.

If there are no attachment matches then it is up to the exec rule to determine what happens (fail or a fallback option).

Note: see profile Name for information around using the profile name as an attachment conditional.

Exec attachment conditionals can contain variable names and pattern matching. They use a longest left match heuristic to deterime the winner in the case of multiple matches at run time. The exact implementation of this resolution is kernel specific and has improved over time, while retaining backwards compatibility. If the heuristic can not determine a winner between multiple matches the exec will be denied.

Extended Attributes Attachment Conditional

AppArmor profiles have the ability to target files based on their xattr(7) values in addition to their path. For example, the following profile matches files in /usr/bin with the attribute "security.apparmor" and value "trusted":

  /usr/bin/* xattrs(security.apparmor="trusted") {
    # ...
  }

See apparmor_xattrs(7) for further details.

Flags

The profile flags allow modifying the behavior of the profile. If a profile flag is specified it takes priority over any conflicting flags that have been specified by rules in the profile body.

Profile Mode

The profile mode allow controlling the enforcement behavior of the profile rules.

If no mode is specified the profile defaults to enforce mode.

enforce For a given action, if the profile rules do not grant permission the action will be denied, with an EACCES or EPERM error code returned to userspace, and the violation will be logged with a tag of the access being DENIED.
kill This is a variant of enforce mode where in addition to returning EACCES or EPERM for a violation, the task is also sent a signal to kill it.
complain For a given action, if the profile rules do not grant permission the action will be allowed, but the violation will be logged with a tag of the access being ALLOWED.
unconfined This mode allows a task confined by the profile to behave as though they are unconfined. This mode allow for an unconfined behavior that can be later changed to confinement by using profile replacement. This mode is should not be used under regular deployment but can be useful during debugging and some system initialization scenarios.

Audit Mode

The audit mode allows control of how AppArmor messages are are logged to the audit system.

audit This flag causes all actions whether allowed or denied to be logged.

Misc modes

mediate_deleted This forces AppArmor to mediate deleted files as if they still exist in the file system.
attach_disconnected This forces AppArmor to attach disconnected objects to the task's namespace and mediate them as though they are part of the namespace. WARNING this mode is unsafe and can result in aliasing and access to objects that should not be allowed. Its intent is a debug and policy development tool.
chroot_relative This forces file names to be relative to a chroot and behave as if the chroot is a mount namespace.

Access Modes

File permission access modes consists of combinations of the following modes:

r

- read

w

- write -- conflicts with append

a

- append -- conflicts with write

ux

- unconfined execute

Ux

- unconfined execute -- scrub the environment

px

- discrete profile execute

Px

- discrete profile execute -- scrub the environment

cx

- transition to subprofile on execute

Cx

- transition to subprofile on execute -- scrub the environment

ix

- inherit execute

pix

- discrete profile execute with inherit fallback

Pix

- discrete profile execute with inherit fallback -- scrub the environment

cix

- transition to subprofile on execute with inherit fallback

Cix

- transition to subprofile on execute with inherit fallback -- scrub the environment

pux

- discrete profile execute with fallback to unconfined

PUx

- discrete profile execute with fallback to unconfined -- scrub the environment

cux

- transition to subprofile on execute with fallback to unconfined

CUx

- transition to subprofile on execute with fallback to unconfined -- scrub the environment

deny x

- disallow execute (in rules with the deny qualifier)

m

- allow PROT_EXEC with mmap(2) calls

l

- link

k

- lock

Access Modes Details

r - Read mode

Allows the program to have read access to the file or directory listing. Read access is required for shell scripts and other interpreted content.

w - Write mode

Allows the program to have write access to the file. Files and directories must have this permission if they are to be unlinked (removed.) Write mode is not required on a directory to rename or create files within the directory.

This mode conflicts with append mode.

a - Append mode

Allows the program to have a limited appending only write access to the file. Append mode will prevent an application from opening the file for write unless it passes the O_APPEND parameter flag on open.

The mode conflicts with Write mode.

ux - Unconfined execute mode

Allows the program to execute the program without any AppArmor profile being applied to the program.

This mode is useful when a confined program needs to be able to perform a privileged operation, such as rebooting the machine. By placing the privileged section in another executable and granting unconfined execution rights, it is possible to bypass the mandatory constraints imposed on all confined processes. For more information on what is constrained, see the apparmor(7) man page.

WARNING 'ux' should only be used in very special cases. It enables the designated child processes to be run without any AppArmor protection. 'ux' does not scrub the environment of variables such as LD_PRELOAD; as a result, the calling domain may have an undue amount of influence over the callee. Use this mode only if the child absolutely must be run unconfined and LD_PRELOAD must be used. Any profile using this mode provides negligible security. Use at your own risk.

Incompatible with other exec transition modes and the deny qualifier.

Ux - unconfined execute -- scrub the environment

'Ux' allows the named program to run in 'ux' mode, but AppArmor will invoke the Linux Kernel's unsafe_exec routines to scrub the environment, similar to setuid programs. (See ld.so(8) for some information on setuid/setgid environment scrubbing.)

WARNING 'Ux' should only be used in very special cases. It enables the designated child processes to be run without any AppArmor protection. Use this mode only if the child absolutely must be run unconfined. Use at your own risk.

Incompatible with other exec transition modes and the deny qualifier.

px - Discrete Profile execute mode

This mode requires that a discrete security profile is defined for a program executed and forces an AppArmor domain transition. If there is no profile defined then the access will be denied.

WARNING 'px' does not scrub the environment of variables such as LD_PRELOAD; as a result, the calling domain may have an undue amount of influence over the callee.

Incompatible with other exec transition modes and the deny qualifier.

Px - Discrete Profile execute mode -- scrub the environment

'Px' allows the named program to run in 'px' mode, but AppArmor will invoke the Linux Kernel's unsafe_exec routines to scrub the environment, similar to setuid programs. (See ld.so(8) for some information on setuid/setgid environment scrubbing.)

Incompatible with other exec transition modes and the deny qualifier.

cx - Transition to Subprofile execute mode

This mode requires that a local security profile is defined and forces an AppArmor domain transition to the named profile. If there is no profile defined then the access will be denied.

WARNING 'cx' does not scrub the environment of variables such as LD_PRELOAD; as a result, the calling domain may have an undue amount of influence over the callee.

Incompatible with other exec transition modes and the deny qualifier.

Cx - Transition to Subprofile execute mode -- scrub the environment

'Cx' allows the named program to run in 'cx' mode, but AppArmor will invoke the Linux Kernel's unsafe_exec routines to scrub the environment, similar to setuid programs. (See ld.so(8) for some information on setuid/setgid environment scrubbing.)

Incompatible with other exec transition modes and the deny qualifier.

ix - Inherit execute mode

Prevent the normal AppArmor domain transition on execve(2) when the profiled program executes the named program. Instead, the executed resource will inherit the current profile.

This mode is useful when a confined program needs to call another confined program without gaining the permissions of the target's profile, or losing the permissions of the current profile. There is no version to scrub the environment because 'ix' executions don't change privileges.

Incompatible with other exec transition modes and the deny qualifier.

Profile transition with inheritance fallback execute mode

These modes attempt to perform a domain transition as specified by the matching permission (shown below) and if that transition fails to find the matching profile the domain transition proceeds using the 'ix' transition mode.

  'Pix' == 'Px' with fallback to 'ix'
  'pix' == 'px' with fallback to 'ix'
  'Cix' == 'Cx' with fallback to 'ix'
  'cix' == 'cx' with fallback to 'ix'

Incompatible with other exec transition modes and the deny qualifier.

Profile transition with unconfined fallback execute mode

These modes attempt to perform a domain transition as specified by the matching permission (shown below) and if that transition fails to find the matching profile the domain transition proceeds using the 'ux' transition mode if 'pux', 'cux' or the 'Ux' transition mode if 'PUx', 'CUx' is used.

  'PUx' == 'Px' with fallback to 'Ux'
  'pux' == 'px' with fallback to 'ux'
  'CUx' == 'Cx' with fallback to 'Ux'
  'cux' == 'cx' with fallback to 'ux'

Incompatible with other exec transition modes and the deny qualifier.

deny x - Deny execute

For rules including the deny modifier, only 'x' is allowed to deny execute.

The 'ix', 'Px', 'px', 'Cx', 'cx' and the fallback modes conflict with the deny modifier.

Directed profile transitions

The directed ('px', 'Px', 'pix', 'Pix', 'pux', 'PUx') profile and subprofile ('cx', 'Cx', 'cix', 'Cix', 'cux', 'CUx') transitions normally determine the profile to transition to from the executable name. It is however possible to specify the name of the profile that the transition should use.

The name of the profile to transition to is specified using the '->' followed by the name of the profile to transition to. Eg.

  /bin/** px -> profile,

Incompatible with other exec transition modes.

m - Allow executable mapping

This mode allows a file to be mapped into memory using mmap(2)'s PROT_EXEC flag. This flag marks the pages executable; it is used on some architectures to provide non-executable data pages, which can complicate exploit attempts. AppArmor uses this mode to limit which files a well-behaved program (or all programs on architectures that enforce non-executable memory access controls) may use as libraries, to limit the effect of invalid -L flags given to ld(1) and LD_PRELOAD, LD_LIBRARY_PATH, given to ld.so(8).

Allows the program to be able to create a link with this name. When a link is created, the new link MUST have a subset of permissions as the original file (with the exception that the destination does not have to have link access.) If there is an 'x' rule on the new link, it must match the original file exactly.

k - lock mode

Allows the program to be able lock a file with this name. This permission covers both advisory and mandatory locking.

leading OR trailing access permissions

File rules can be specified with the access permission either leading or trailing the file glob. Eg.

  rw /**,               # leading permissions

  /** rw,               # trailing permissions

When leading permissions are used further rule options and context may be allowed, Eg.

  l /foo -> /bar,       # lead 'l' link permission is equivalent to link rules

Link rules allow specifying permission to form a hard link as a link target pair. If the subset condition is specified then the permissions to access the link file must be a subset of the profiles permissions to access the target file. If there is an 'x' rule on the new link, it must match the original file exactly.

Eg.

  /file1  r,
  /file2  rwk,
  /link*  rw,
  link subset /link* -> /**,

The link rule allows linking of /link to both /file1 or /file2 by name however because the /link file has 'rw' permissions it is not allowed to link to /file1 because that would grant an access path to /file1 with more permissions than the 'r' permissions the profile specifies.

A link of /link to /file2 would be allowed because the 'rw' permissions of /link are a subset of the 'rwk' permissions for /file1.

The link rule is equivalent to specifying the 'l' link permission as a leading permission with no other file access permissions. When this is done the link rule options can be specified.

The following link rule is equivalent to the 'l' permission file rule

  link /foo -> bar,
  l /foo -> /bar,

File rules that specify the 'l' permission and don't specify the extend link permissions map to link rules as follows.

  /foo l,
  l /foo,
  link subset /foo -> /**,

Comments

Comments start with # and may begin at any place within a line. The comment ends when the line ends. This is the same comment style as shell scripts.

Capabilities

The only capabilities a confined process may use may be enumerated; for the complete list, please refer to capabilities(7). Note that granting some capabilities renders AppArmor confinement for that domain advisory; while open(2), read(2), write(2), etc., will still return error when access is not granted, some capabilities allow loading kernel modules, arbitrary access to IPC, ability to bypass discretionary access controls, and other operations that are typically reserved for the root user.

Network Rules

AppArmor supports simple coarse grained network mediation. The network rule restrict all socket(2) based operations. The mediation done is a coarse-grained check on whether a socket of a given type and family can be created, read, or written. There is no mediation based of port number or protocol beyond tcp, udp, and raw. Network netlink(7) rules may only specify type 'dgram' and 'raw'.

AppArmor network rules are accumulated so that the granted network permissions are the union of all the listed network rule permissions.

AppArmor network rules are broad and general and become more restrictive as further information is specified.

eg.

 network,               #allow access to all networking
 network tcp,           #allow access to tcp
 network inet tcp,      #allow access to tcp only for inet4 addresses
 network inet6 tcp,     #allow access to tcp only for inet6 addresses
 network netlink raw,   #allow access to AF_NETLINK SOCK_RAW

Mount Rules

AppArmor supports mount mediation and allows specifying filesystem types and mount flags. The syntax of mount rules in AppArmor is based on the mount(8) command syntax. Mount rules must contain one of the mount, remount or umount keywords, but all mount conditions are optional. Unspecified optional conditionals are assumed to match all entries (eg, not specifying fstype means all fstypes are matched). Due to the complexity of the mount command and how options may be specified, AppArmor allows specifying conditionals three different ways:

  1. If a conditional is specified using '=', then the rule only grants permission for mounts matching the exactly specified options. For example, an AppArmor policy with the following rule:

        mount options=ro /dev/foo -E<gt> /mnt/,

    Would match:

        $ mount -o ro /dev/foo /mnt

    but not either of these:

        $ mount -o ro,atime /dev/foo /mnt
    
        $ mount -o rw /dev/foo /mnt
  2. If a conditional is specified using 'in', then the rule grants permission for mounts matching any combination of the specified options. For example, if an AppArmor policy has the following rule:

        mount options in (ro,atime) /dev/foo -> /mnt/,

    all of these mount commands will match:

        $ mount -o ro /dev/foo /mnt
    
        $ mount -o ro,atime /dev/foo /mnt
    
        $ mount -o atime /dev/foo /mnt

    but none of these will:

        $ mount -o ro,sync /dev/foo /mnt
    
        $ mount -o ro,atime,sync /dev/foo /mnt
    
        $ mount -o rw /dev/foo /mnt
    
        $ mount -o rw,noatime /dev/foo /mnt
    
        $ mount /dev/foo /mnt
  3. If multiple conditionals are specified in a single mount rule, then the rule grants permission for each set of options. This provides a shorthand when writing mount rules which might help to logically break up a conditional. For example, if an AppArmor policy has the following rule:

        mount options=ro options=atime

    both of these mount commands will match:

        $ mount -o ro /dev/foo /mnt
    
        $ mount -o atime /dev/foo /mnt

    but this one will not:

        $ mount -o ro,atime /dev/foo /mnt

Note that separate mount rules are distinct and the options do not accumulate. For example, these AppArmor mount rules:

    mount options=ro,

    mount options=atime,

are not equivalent to either of these mount rules:

    mount options=(ro,atime),

    mount options in (ro,atime),

To help clarify the flexibility and complexity of mount rules, here are some example rules with accompanying matching commands:

mount,

the 'mount' rule without any conditionals is the most generic and allows any mount. Equivalent to 'mount fstype=** options=** ** -> /**'.

mount /dev/foo,

allow mounting of /dev/foo anywhere with any options. Some matching mount commands:

    $ mount /dev/foo /mnt

    $ mount -t ext3 /dev/foo /mnt

    $ mount -t vfat /dev/foo /mnt

    $ mount -o ro,atime,noexec,nodiratime /dev/foo /srv/some/mountpoint
mount options=ro /dev/foo,

allow mounting of /dev/foo anywhere, as read only. Some matching mount commands:

    $ mount -o ro /dev/foo /mnt

    $ mount -o ro /dev/foo /some/where/else
mount options=(ro,atime) /dev/foo,

allow mount of /dev/foo anywhere, as read only and using inode access times. Some matching mount commands:

    $ mount -o ro,atime /dev/foo /mnt

    $ mount -o ro,atime /dev/foo /some/where/else
mount options in (ro,atime) /dev/foo,

allow mount of /dev/foo anywhere using some combination of 'ro' and 'atime' (see above). Some matching mount commands:

    $ mount -o ro /dev/foo /mnt

    $ mount -o atime /dev/foo /some/where/else

    $ mount -o ro,atime /dev/foo /some/other/place
mount options=ro /dev/foo, mount options=atime /dev/foo,

allow mount of /dev/foo anywhere as read only, and allow mount of /dev/foo anywhere using inode access times. Note this is expressed as two different rules. Matches:

    $ mount -o ro /dev/foo /mnt/1

    $ mount -o atime /dev/foo /mnt/2
mount -> /mnt/**,

allow mounting anything under a directory in /mnt/**. Some matching mount commands:

    $ mount /dev/foo1 /mnt/1

    $ mount -o ro,atime,noexec,nodiratime /dev/foo2 /mnt/deep/path/foo2
mount options=ro -> /mnt/**,

allow mounting anything under /mnt/**, as read only. Some matching mount commands:

    $ mount -o ro /dev/foo1 /mnt/1

    $ mount -o ro /dev/foo2 /mnt/deep/path/foo2
mount fstype=ext3 options=(rw,atime) /dev/sdb1 -> /mnt/stick/,

allow mounting an ext3 filesystem in /dev/sdb1 on /mnt/stick as read/write and using inode access times. Matches only:

    $ mount -o rw,atime /dev/sdb1 /mnt/stick
mount options=(ro, atime) options in (nodev, user) /dev/foo -> /mnt/,

allow mounting /dev/foo on /mmt/ read only and using inode access times or allow mounting /dev/foo on /mnt/ with some combination of 'nodev' and 'user'. Matches only:

    $ mount -o ro,atime /dev/foo /mnt

    $ mount -o nodev /dev/foo /mnt

    $ mount -o user /dev/foo /mnt

    $ mount -o nodev,user /dev/foo /mnt

Pivot Root Rules

AppArmor mediates changing of the root filesystem through the pivot_root(2) system call. The syntax of 'pivot_root' rules in AppArmor is based on the pivot_root(2) system call parameters with the notable exception that the ordering is reversed. The path corresponding to the put_old parameter of pivot_root(2) is optionally specified in the 'pivot_root' rule using the 'oldroot=' prefix.

AppArmor 'pivot_root' rules can specify a profile transition to occur during the pivot_root(2) system call. Note that AppArmor will only transition the process calling pivot_root(2) to the new profile.

The paths specified in 'pivot_root' rules must end with '/' since they are directories.

Here are some example 'pivot_root' rules:

    # Allow any pivot
    pivot_root,

    # Allow pivoting to any new root directory and putting the old root
    # directory at /mnt/root/old/
    pivot_root oldroot=/mnt/root/old/,

    # Allow pivoting the root directory to /mnt/root/
    pivot_root /mnt/root/,

    # Allow pivoting to /mnt/root/ and putting the old root directory at
    # /mnt/root/old/
    pivot_root oldroot=/mnt/root/old/ /mnt/root/,

    # Allow pivoting to /mnt/root/, putting the old root directory at
    # /mnt/root/old/ and transition to the /mnt/root/sbin/init profile
    pivot_root oldroot=/mnt/root/old/ /mnt/root/ -> /mnt/root/sbin/init,

PTrace rules

AppArmor supports mediation of ptrace(2). AppArmor PTrace rules are accumulated so that the granted PTrace permissions are the union of all the listed PTrace rule permissions.

AppArmor PTrace permissions are implied when a rule does not explicitly state an access list. By default, all PTrace permissions are implied.

The trace and tracedby permissions govern ptrace(2) while read and readby govern certain proc(5) filesystem accesses, kcmp(2), futexes (get_robust_list(2)) and perf trace events.

For a ptrace operation to be allowed the profile of the tracing process and the profile of the target task must both have the correct permissions. For example, the profile of the process attaching to another task must have the trace permission for the target task's profile, and the task being traced must have the tracedby permission for the tracing process' profile.

Example AppArmor PTrace rules:

    # Allow all PTrace access
    ptrace,

    # Explicitly allow all PTrace access,
    ptrace (read, readby, trace, tracedby),

    # Explicitly deny use of ptrace(2)
    deny ptrace (trace),

    # Allow unconfined processes (eg, a debugger) to ptrace us
    ptrace (readby, tracedby) peer=unconfined,

    # Allow ptrace of a process running under the /usr/bin/foo profile
    ptrace (trace) peer=/usr/bin/foo,

Signal rules

AppArmor supports mediation of signal(7). AppArmor signal rules are accumulated so that the granted signal permissions are the union of all the listed signal rule permissions.

AppArmor signal permissions are implied when a rule does not explicitly state an access list. By default, all signal permissions are implied.

For the sending of a signal to be allowed, the profile of the sending process and the profile of the target task must both have the correct permissions. For example, the profile of a process sending a signal to another task must have the send permission for the target task's profile, and the task receiving the signal must have a receive permission for the sending process' profile.

Example AppArmor signal rules:

    # Allow all signal access
    signal,

    # Explicitly deny sending the HUP and INT signals
    deny signal (send) set=(hup, int),

    # Allow unconfined processes to send us signals
    signal (receive) peer=unconfined,

    # Allow sending of signals to a process running under the /usr/bin/foo
    # profile
    signal (send) peer=/usr/bin/foo,

    # Allow checking for PID existence
    signal (receive, send) set=("exists"),

    # Allow us to signal ourselves using the built-in @{profile_name} variable
    signal peer=@{profile_name},

    # Allow two real-time signals
    signal set=(rtmin+0 rtmin+32),

DBus rules

AppArmor supports DBus mediation. The mediation is performed in conjunction with the DBus daemon. The DBus daemon verifies that communications over the bus are permitted by AppArmor policy.

AppArmor DBus rules are accumulated so that the granted DBus permissions are the union of all the listed DBus rule permissions.

AppArmor DBus rules are broad and general and become more restrictive as further information is specified. Policy may be specified down to the interface member level (method or signal name), however the contents of messages are not examined.

Some AppArmor DBus permissions are not compatible with all AppArmor DBus rules. The 'bind' permission cannot be used in message rules. The 'send' and 'receive' permissions cannot be used in service rules. The 'eavesdrop' permission cannot be used in rules containing any conditionals outside of the 'bus' conditional.

'r' and 'read' are synonyms for 'receive'. 'w' and 'write' are synonyms for 'send'. 'rw' is a synonym for both 'send' and 'receive'.

AppArmor DBus permissions are implied when a rule does not explicitly state an access list. By default, all DBus permissions are implied. Only message permissions are implied for message rules and only service permissions are implied for service rules.

Example AppArmor DBus rules:

    # Allow all DBus access
    dbus,

    # Explicitly allow all DBus access,
    dbus (send, receive, bind),

    # Deny send/receive/bind access to the session bus
    deny dbus bus=session,

    # Allow bind access for a particular name on any bus
    dbus bind name=com.example.ExampleName,

    # Allow receive access for a particular path and interface
    dbus receive path=/com/example/path interface=com.example.Interface,

    # Deny send/receive access to the system bus for a particular interface
    deny dbus bus=system interface=com.example.ExampleInterface,

    # Allow send access for a particular path, interface, member, and pair of
    # peer names:
    dbus send
         bus=session
         path=/com/example/path
         interface=com.example.Interface
         member=ExampleMethod
         peer=(name=(com.example.ExampleName1|com.example.ExampleName2)),

    # Allow receive access for all unconfined peers
    dbus receive peer=(label=unconfined),

    # Allow eavesdropping on the system bus
    dbus eavesdrop bus=system,

    # Allow and audit all eavesdropping
    audit dbus eavesdrop,

Unix socket rules

AppArmor supports fine grained mediation of unix domain abstract and anonymous sockets. Unix domain sockets with file system paths are mediated via file access rules.

Abstract unix domain sockets is a nonportable Linux extension of unix domain sockets, see unix(7) for more information.

Unix socket address paths

The sun_path component (aka the socket address) of a unix domain socket is specified by the

  addr=

conditional. If an address conditional is not specified as part of a rule then the rule matches both abstract and anonymous sockets.

In apparmor the address of an abstract unix domain socket begins with the @ character, similar to how they are reported (as paths) by netstat -x. The address then follows and may contain pattern matching and any characters including the null character. In apparmor null characters must be specified by using an escape sequence \000 or \x00. The pattern matching is the same as is used by file path matching so * will not match / even though it has no special meaning with in an abstract socket name. Eg.

  unix addr=@*,

Autobound unix domain sockets have a unix sun_path assigned to them by the kernel, as such specifying a policy based address is not possible. The autobinding of sockets can be controlled by specifying the special auto keyword. Eg.

  unix addr=auto,

To indicate that the rule only applies to auto binding of unix domain sockets. It is important to note this only applies to the bind permission as once the socket is bound to an address it is indistinguishable from a socket that have an addr bound with a specified name. When the auto keyword is used with other permissions or as part of a peer addr it will be replaced with a pattern that can match an autobound socket. Eg. For some kernels

  unix rw addr=auto,

is transformed to

  unix rw addr=@[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9],

It is important to note, this pattern may match abstract sockets that were not autobound but have an addr that fits what is generated by the kernel when autobinding a socket.

Anonymous unix domain sockets have no sun_path associated with the socket address, however it can be specified with the special none keyword to indicate the rule only applies to anonymous unix domain sockets. Eg.

  unix addr=none,

If the address component of a rule is not specified then the rule applies to autobind, abstract and anonymous sockets.

Unix socket permissions

Unix domain socket rules are accumulated so that the granted unix socket permissions are the union of all the listed unix rule permissions.

Unix domain socket rules are broad and general and become more restrictive as further information is specified. Policy may be specified down to the socket address (aka sun_path) and label level. The content of the communication is not examined.

Unix socket rule permissions are implied when a rule does not explicitly state an access list. By default if a rule does not have an access list all permissions that are compatible with the specified set of local and peer conditionals are implied.

The create, bind, listen, shutdown, getattr, setattr, getopt, and setopt permissions are local socket permissions. They are only applied to the local socket and can't be specified in rules that have a peer component. The accept permission applies to the combination of a local and peer socket. The connect, send, and receive permissions are peer socket permissions.

Only the peer socket permissions will be applied to rules that don't specify permissions and contain a peer component.

Example Unix domain socket rules:

  # Allow all permissions to unix sockets
  unix,

  # Explicitly allow all unix permissions
  unix (create, listen, accept, connect, send, receive, getattr, setattr, setopt, getopt),

  # Explicitly deny unix socket access
  deny unix,

  # Allow create and use of abstract and anonymous sockets for profile_name
  unix peer=(label=@{profile_name}),

  # Allow receiving via unix sockets from unconfined
  unix (receive) peer=(label=unconfined),

  # Allow getattr and shutdown on anonymous sockets
  unix (getattr, shutdown) addr=none,

  # Allow SOCK_STREAM connect, receive and send on an abstract socket @bar
  # with peer running under profile '/foo'
  unix (connect, receive, send) type=stream peer=(label=/foo,addr="@bar"),

  # Allow accepting connections from and receiving from peer running under
  # profile '/bar' on abstract socket '@foo'
  unix (accept, receive) addr=@foo peer=(label=/bar),

Abstract unix domain sockets autobind

Abstract unix domain sockets can autobind to an address. The autobind address is a unique 5 digit string of decimal numbers, eg. @00001. There is nothing that prevents a task from manually binding to addresses with a similar pattern so it is impossible to reliably identify autobind addresses from a regular address.

Interaction of network rules and fine grained unix domain socket rules

The coarse grained networking rules can be used to control unix domain sockets as well. When fine grained unix domain socket mediation is available the coarse grained network rule is mapped into the equivalent unix socket rule.

E.G.

    network unix,  =>  unix,

    network unix stream,   =>  unix stream,

Fine grained mediation rules however can not be losslessly converted back to the coarse grained network rule; e.g.

   unix bind addr=@example,

Has no exact match under coarse grained network rules, the closest match is the much wider permission rule of

   network unix,

change_profile rules

AppArmor supports self directed profile transitions via the change_profile api. Change_profile rules control which permissions for which profiles a confined task can transition to. The profile name can contain apparmor pattern matching to specify different profiles.

  change_profile -> **,

The change_profile api allows the transition to be delayed until when a task executes another application. If an exec rule transition is specified for the application and the change_profile api is used to make a transition at exec time, the transition specified by the change_profile api takes precedence.

The Change_profile permission can restrict which profiles can be transitioned to based off of the executable name by specifying the exec condition.

  change_profile /bin/bash -> new_profile,

The restricting of the transition profile to a given executable at exec time is only useful when then current task is allowed to make dynamic decisions about what confinement should be, but the decision set needs to be controlled. A list of profiles or multiple rules can be used to specify the profiles in the set. Eg.

  change_profile /bin/bash -> {new_profile1,new_profile2,new_profile3},

An exec rule can be used to specify a transition for the executable, if the transition should be allowed even if the change_profile api has not been used to select a transition for those available in the change_profile rule set. Eg.

  /bin/bash Px -> new_profile1,
  change_profile /bin/bash -> {new_profile1,new_profile2,new_profile3},

The exec mode dictates whether or not the Linux Kernel's unsafe_exec routines should be used to scrub the environment, similar to setuid programs. (See ld.so(8) for some information on setuid/setgid environment scrubbing.) The safe mode sets up environment scrubbing to occur when the new application is executed and unsafe mode disables AppArmor's requirement for environment scrubbing (the kernel and/or libc may still require environment scrubbing). An exec mode can only be specified when an exec condition is present.

  change_profile safe /bin/bash -> new_profile,

Not all kernels support safe mode and the parser will downgrade rules to unsafe mode in that situation. If no exec mode is specified, the default is safe mode in kernels that support it.

rlimit rules

AppArmor can set and control the resource limits associated with a profile as described in the setrlimit(2) man page.

The AppArmor rlimit controls allow setting of limits and restricting changes of them and these actions can be audited. Enforcement of the set limits is handled by the standard kernel enforcement mechanism for rlimits and will not result in an audited apparmor message if the limit is enforced.

If a profile does not have an rlimit rule associated with a given rlimit then the rlimit is left alone and regular access, including changing the limit, is allowed. However if the profile sets an rlimit then the current limit is checked and if greater than the limit specified in the rule it will be changed to the specified limit.

AppArmor rlimit rules control the hard limit of an application and ensure that if the hard limit is lowered that the soft limit does not exceed the hard limit value.

Eg.

  set rlimit data <= 100M,
  set rlimit nproc <= 10,
  set rlimit nice <= 5,

Variables

AppArmor's policy language allows embedding variables into file rules to enable easier configuration for some common (and pervasive) setups. Variables may have multiple values assigned, but any variable assignments must be made before the start of the profile.

The parser will automatically expand variables to include all values that they have been assigned; it is an error to reference a variable without setting at least one value. You can use empty quotes ("") to explicitly add an empty value.

At the time of this writing, the following variables are defined in the provided AppArmor policy:

  @{HOME}
  @{HOMEDIRS}
  @{multiarch}
  @{pid}
  @{pids}
  @{PROC}
  @{securityfs}
  @{apparmorfs}
  @{sys}
  @{tid}
  @{run}
  @{XDG_DESKTOP_DIR}
  @{XDG_DOWNLOAD_DIR}
  @{XDG_TEMPLATES_DIR}
  @{XDG_PUBLICSHARE_DIR}
  @{XDG_DOCUMENTS_DIR}
  @{XDG_MUSIC_DIR}
  @{XDG_PICTURES_DIR}
  @{XDG_VIDEOS_DIR}

These are defined in files in /etc/apparmor.d/tunables and are used in many of the abstractions described later.

You may also add files in /etc/apparmor.d/tunables/home.d for site-specific customization of @{HOMEDIRS}, /etc/apparmor.d/tunables/multiarch.d for @{multiarch} and /etc/apparmor.d/tunables/xdg-user-dirs.d for @{XDG_*}.

The special @{profile_name} variable is set to the profile name and may be used in all policy.

Alias rules

AppArmor also provides alias rules for remapping paths for site-specific layouts. They are an alternative form of path rewriting to using variables, and are done after variable resolution. Alias rules must occur within the preamble of the profile. System-wide aliases are found in /etc/apparmor.d/tunables/alias, which is included by /etc/apparmor.d/tunables/global. /etc/apparmor.d/tunables/global is typically included at the beginning of an AppArmor profile.

Globbing

File resources may be specified with a globbing syntax similar to that used by popular shells, such as csh(1), bash(1), zsh(1).

*

can substitute for any number of characters, excepting '/'

**

can substitute for any number of characters, including '/'

?

can substitute for any single character excepting '/'

[abc]

will substitute for the single character a, b, or c

[a-c]

will substitute for the single character a, b, or c

[^a-c]

will substitute for any single character not matching a, b or c

{ab,cd}

will expand to one rule to match ab, one rule to match cd

When AppArmor looks up a directory the pathname being looked up will end with a slash (e.g., /var/tmp/); otherwise it will not end with a slash. Only rules that match a trailing slash will match directories. Some examples, none matching the /tmp/ directory itself, are:

/tmp/*

Files directly in /tmp.

/tmp/*/

Directories directly in /tmp.

/tmp/**

Files and directories anywhere underneath /tmp.

/tmp/**/

Directories anywhere underneath /tmp.

Rule Qualifiers

There are several rule qualifiers that can be applied to permission rules. Rule qualifiers can modify the rule and/or permissions within the rule.

allow

Specifies that permissions requests that match the rule are allowed. This is the default value for rules and does not need to be specified. Conflicts with the deny qualifier.

audit

Specifies that permissions requests that match the rule should be recorded to the audit log.

deny

Specifies that permissions requests that match the rule should be denied without logging. Can be combined with 'audit' to enable logging. Conflicts with the allow qualifier.

owner

Specifies that the task must have the same euid/fsuid as the object being referenced by the permission check.

Qualifier Blocks

Rule Qualifiers can be applied to multiple rules at a time by grouping the rules into a rule block.

  audit {
     /foo r,
     network,
  }

#include mechanism

AppArmor provides an easy abstraction mechanism to group common access requirements; this abstraction is an extremely flexible way to grant site-specific rights and makes writing new AppArmor profiles very simple by assembling the needed building blocks for any given program.

The use of '#include' is modelled directly after cpp(1); its use will replace the '#include' statement with the specified file's contents. The leading '#' is optional, and the '#include' keyword can be followed by an option conditional 'if exists' that specifies profile compilation should continue if the specified file or directory is not found.

#include "/absolute/path" specifies that /absolute/path should be used. #include "relative/path" specifies that relative/path should be used, where the path is relative to the current working directory. #include <magic/path> is the most common usage; it will load magic/path relative to a directory specified to apparmor_parser(8). /etc/apparmor.d/ is the AppArmor default.

The supplied AppArmor profiles follow several conventions; the abstractions stored in /etc/apparmor.d/abstractions/ are some large clusters that are used in most profiles. What follows are short descriptions of how some of the abstractions are used.

abstractions/audio

Includes accesses to device files used for audio applications.

abstractions/authentication

Includes access to files and services typically necessary for services that perform user authentication.

abstractions/base

Includes files that should be readable and writable in all profiles.

abstractions/bash

Includes many files used by bash; useful for interactive shells and programs that call system(3).

abstractions/consoles

Includes read and write access to the device files controlling the virtual console, sshd(8), xterm(1), etc. This abstraction is needed for many programs that interact with users.

abstractions/fonts

Includes access to fonts and the font libraries.

abstractions/gnome

Includes read and write access to GNOME configuration files, as well as read access to GNOME libraries.

abstractions/kde

Includes read and write access to KDE configuration files, as well as read access to KDE libraries.

abstractions/kerberosclient

Includes file access rules needed for common kerberos clients.

abstractions/nameservice

Includes file rules to allow DNS, LDAP, NIS, SMB, user and group password databases, services, and protocols lookups.

abstractions/perl

Includes read access to perl modules.

abstractions/user-download
abstractions/user-mail
abstractions/user-manpages
abstractions/user-tmp
abstractions/user-write

Some profiles for typical "user" programs will use these include files to describe rights that users have in the system.

abstractions/wutmp

Includes write access to files used to maintain wtmp(5) and utmp(5) databases, used with the w(1) and associated commands.

abstractions/X

Includes read access to libraries, configuration files, X authentication files, and the X socket.

Some of the abstractions rely on variables that are set in files in the /etc/apparmor.d/tunables/ directory. These variables are currently @{HOME} and @{HOMEDIRS}. Variables cannot be set in profile scope; they can only be set before the profile. Therefore, any profiles that use abstractions should either #include <tunables/global> or otherwise ensure that @{HOME} and @{HOMEDIRS} are set before starting the profile definition. The aa-autodep(8) and aa-genprof(8) utilities will automatically emit #include <tunables/global> in generated profiles.

Feature ABI

The feature abi tells AppArmor which feature set the policy was developed under. This is important to ensure that kernels with a different feature set don't enforce features that the policy doesn't support, which can result in unexpected application failures.

When policy is compiled both the kernel feature abi and policy feature abi are consulted to build a policy that will work for the system's kernel.

If the kernel supports a feature not supported by the policy then policy will be built so that the kernel does NOT enforce that feature.

If the policy supports a feature not supported by the kernel the compile may downgrade the rule with the feature to something the kernel supports, drop the rule completely, or fail the compile.

If the policy abi is specified as kernel then the running kernel's abi will be used. This should never be used in shipped policy as it can cause system breakage when a new kernel is installed.

ABI compatibility with AppArmor 2.x

AppArmor 3 remains compatible with AppArmor 2.x by detecting when a profile does not have a feature ABI specified. In this case the policy compile will either apply the pinned feature ABI as specified by the config file or the command line, or if neither of those are applied by using a default feature ABI.

It is important to note that the default feature ABI does not support new features added in AppArmor 3 or later.

EXAMPLE

An example AppArmor profile:

        # which feature abi the policy was developed with
        abi <abi/3.0>,

        # a variable definition in the preamble
        @{HOME} = /home/*/ /root/

        # a comment about foo.
        /usr/bin/foo {
          /bin/mount          ux,
          /dev/{,u}random     r,
          /etc/ld.so.cache    r,
          /etc/foo.conf       r,
          /etc/foo/*          r,
          /lib/ld-*.so*       rmix,
          /lib/lib*.so*       r,
          /proc/[0-9]**       r,
          /usr/lib/**         r,
          /tmp/foo.pid        wr,
          /tmp/foo.*          lrw,
          /@{HOME}/.foo_file  rw,
          /usr/bin/baz        Cx -> baz,

          # a comment about foo's hat (subprofile), bar.
          ^bar {
            /lib/ld-*.so*       rmix,
            /usr/bin/bar        rmix,
            /var/spool/*        rwl,
          }

          # a comment about foo's subprofile, baz.
          profile baz {
            #include <abstractions/bash>
            owner /proc/[0-9]*/stat r,
            /bin/bash ixr,
            /var/lib/baz/ r,
            owner /var/lib/baz/* rw,
          }
        }

FILES

/etc/init.d/boot.apparmor
/etc/apparmor.d/

KNOWN BUGS

  • Mount options support the use of pattern matching but mount flags are not correctly intersected against specified patterns. Eg, 'mount options=**,' should be equivalent to 'mount,', but it is not. (LP: #965690)

  • The fstype may not be matched against when certain mount command flags are used. Specifically fstype matching currently only works when creating a new mount and not remount, bind, etc.

  • Mount rules with multiple 'options' conditionals are not applied as documented but instead merged such that 'options in (ro,nodev) options in (atime)' is equivalent to 'options in (ro,nodev,atime)'.

  • When specifying mount options with the 'in' conditional, both the positive and negative values match when specifying one or the other. Eg, 'rw' matches when 'ro' is specified and 'dev' matches when 'nodev' is specified such that 'options in (ro,nodev)' is equivalent to 'options in (rw,dev)'.

SEE ALSO

apparmor(7), apparmor_parser(8), apparmor_xattrs(7), aa-complain(1), aa-enforce(1), aa_change_hat(2), mod_apparmor(5), and https://wiki.apparmor.net.

 apparmor.d - syntax of security profiles for AppArmor.
apparmor-3.0.4/parser/rule.cc0000664000175000017500000000175114201060045013677 0ustar jjjj/* * Copyright (c) 2014 * Canonical Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #include "rule.h" #include "parser.h" #include std::ostream &operator<<(std::ostream &os, rule_t &rule) { return rule.dump(os); }; /* do we want to warn once/profile or just once per compile?? */ void rule_t::warn_once(const char *name, const char *msg) { common_warn_once(name, msg, &warned_name); } apparmor-3.0.4/parser/README0000664000175000017500000000046014201060045013275 0ustar jjjjThe apparmor_parser allows you to add, replace, and remove AppArmor policy through the use of command line options. The default is to add. `apparmor_parser --help` shows what the command line options are. You can also find more information at https://wiki.apparmor.net -- The AppArmor development team apparmor-3.0.4/parser/po/0000775000175000017500000000000014201060045013033 5ustar jjjjapparmor-3.0.4/parser/po/pa.po0000664000175000017500000006047214201060045014004 0ustar jjjj# translation of apparmor-parser.pa.po to Panjabi # # A S Alam , 2007. # ASB , 2007. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:31+0000\n" "Last-Translator: A S Alam \n" "Language-Team: Panjabi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: pa\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "ਗਲਤੀ: ਮੈਮੋਰੀ ਖਤਮ ਹੋਈ।\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "ਗਲਤੀ: basedir %s ਇੱਕ ਡਾਇਰੈਕਟਰੀ ਨਹੀਂ ਹੈ, ਛੱਡਿਆ ਜਾ ਰਿਹਾ ਹੈ।\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "ਗਲਤੀ: ਡਾਇਰੈਕਟਰੀ %s ਖੋਜ ਮਾਰਗ 'ਚ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "ਗਲਤੀ: ਮੈਮੋਰੀ ਜਾਰੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ।\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "ਗਲਤ ਲਿਖਣ ਸਥਿਤੀ\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "ਅਧਿਕਾਰ ਪਾਬੰਦੀ\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "ਮੈਮੋਰੀ ਤੋਂ ਬਾਹਰ\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "ਪਰੋਫਾਇਲ ਦਸਤਖਤ ਨਹੀਂ ਮਿਲਦੇ\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "ਪਰੋਫਾਇਲ ਵਰਜਨ ਅੱਪਾਰਮੋਰ ਮੋਡੀਊਲ ਵਲੋਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "ਪਰੋਫਾਇਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "ਪਰੋਫਾਇਲ ਮੌਜੂਦ ਨਹੀਂ\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਅਸਮਰੱਥ। " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" ਬਦਲਣ ਲਈ ਅਸਮਰੱਥ। " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" ਹਟਾਉਣ ਲਈ ਅਸਮਰੱਥ। " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdout ਉੱਤੇ ਲਿਖਣ ਲਈ ਅਸਮਰੱਥ\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: ਗਲਤ ਚੋਣ: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "ਸਫ਼ਲ \"%s\" ਲਈ ਹਟਾਉਣਾ\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s - %s ਖੋਲà©à¨¹à¨£ ਲਈ ਅਸਫ਼ਲ\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "ਕੰਮ ਖੇਤਰ ਬਣਾਉਣ ਲਈ ਅਸਮਰੱਥ\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "ਪਰੋਫਾਇਲ %s ਸੀਰੀਅਲਾਈਜ਼ ਲਈ ਅਸਮਰੱਥ\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: ਪੂਰੀ ਪਰੋਫਾਇਲ à¨à¨‚ਟਰੀ ਲਿਖਣ ਲਈ ਅਸਮਰੱਥ\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "ਅਚਾਨਕ ਅੱਖਰ ਮਿਲਿਆ: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) ਅਣਜਾਣ ਅੱਖਰ ਮਿਲਿਆ: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: ਅਫਸੋਸ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇਹ ਪਰੋਗਰਾਮ ਚਲਾਉਣ ਲਈ ਰੂਟ ਅਧਿਕਾਰ ਚਾਹੀਦੇ ਹਨ।\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: ਚੇਤਾਵਨੀ! ਤà©à¨¸à©€à¨‚ ਇਹ ਪਰੋਗਰਾਮ ਲਈ setuid root ਸੈੱਟ ਕੀਤਾ ਹੈ।\n" "ਕੋਈ ਵੀ, ਜੋ ਕਿ ਇਹ ਪਰੋਗਰਾਮ ਚਲਾ ਸਕਦਾ ਹੈ, ਉਹ ਤà©à¨¹à¨¾à¨¡à¨¾ ਅੱਪਆਰਮੋਰ ਪਰੋਫਾਇਲ ਅੱਪਡੇਟ ਕਰ " "ਸਕਦਾ ਹੈ।\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "ਗਲਤੀ: ਪਰੋਫਾਇਲ %s ਪੜà©à¨¹à¨¿à¨† ਨਹੀਂ ਜਾ ਸਕਿਆ: %s\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "ਮੈਮੋਰੀ ਜਾਰੀ ਕਰਨ ਗਲਤੀ।" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: ਫਾਇਲ 'ਚ ਗਲਤੀਆਂ ਮਿਲੀਆਂ। ਵਿੱਚੇ ਛੱਡਿਆ ਜਾਂਦਾ ਹੈ।\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor ਪਾਰਸ ਗਲਤੀ: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "à¨à¨‚ਟਰੀਆਂ ਮਰਜ਼ ਨਹੀਂ ਕੀਤੀਆਂ ਜਾ ਸਕੀਆਂ। ਮੈਮੋਰੀ ਖਤਮ ਹੋਈ।\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "ਕੀ ਲਾਈਨ ਅੱਖਰ ਦਾ ਖਾਤਮਾ ਨਹੀਂ ਹੈ? (à¨à¨‚ਟਰੀ: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "ਗਲਤ ਨੈੱਟਵਰਕ à¨à¨‚ਟਰੀ ਹੈ।" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex ਗਰà©à©±à¨ªà¨¿à©°à¨— ਗਲਤੀ। ਨਾ-ਬੰਦ ਹੋਈ ਗਰà©à©±à¨ªà¨¿à©°à¨— ਜਾਂ ਅੱਖਰ ਕਲਾਸ, ਬੰਦ } ਦੀ ਲੋੜ ਸੀ\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: ਅੰਦਰੂਨੀ ਬਫ਼ਰ ਓਵਰਫਲੋ ਮਿਲਿਆ, %d ਅੱਖਰ ਵੱਧ ਗਠਹਨ\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: ਇੰਪà©à©±à¨Ÿ ਲਾਈਨ '%s' ਪਾਰਸ ਕਰਨ ਲਈ ਅਸਮਰੱਥ\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "ਪਰੋਫਾਇਲ %s ਲਈ ਰੂਲ ਮਿਲਾਨ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ, ਲੋਡ ਕਰਨ ਲਈ ਫੇਲà©à¨¹\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "ਪਰੋਫਾਇਲ %s regexs ਪਰੋਸੈਸ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ, ਲੋਡ ਕਰਨ ਲਈ ਫੇਲà©à¨¹\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "ਪਰੋਫਾਇਲ %s ਲਈ ਵੇਰੀਬਲ à¨à¨•ਸਪੈਂਡ ਕਰਨ ਦੌਰਾਨ ਗਲਤੀ, ਲੋਡ ਕਰਨ ਲਈ ਫੇਲà©à¨¹\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "%s ਪਰੋਫਾਇਲ ਵਿੱਚ ਗਲਤੀ, ਲੋਡ ਕਰਨ ਲਈ ਫੇਲà©à¨¹\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: regex ਪੋਸਟ-ਪਰੋਸੈਸ ਦੌਰਾਨ ਗਲਤੀਆਂ ਮਿਲੀਆਂ। ਅਧੂਰਾ ਖਤਮ।\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s:ਪੋਸਟ-ਪਰੋਸੈਸਿੰਗ ਰੂਲ ਜੋੜਨ ਦੌਰਾਨ ਗਲਤੀਆਂ ਮਿਲੀਆਂ। ਅਧੂਰਾ ਛੱਡਿਆ।\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/hu.po0000664000175000017500000006433114201060045014016 0ustar jjjj# translation of apparmor-parser.hu.po to Hungarian # translation of apparmor-parser.hu.po to # translation of apparmor-parser.po to # Hungarian message File YaST2 (@memory@). # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2002 SuSE Linux AG. # Copyright (C) 2000, 2001 SuSE GmbH. # # Marcel Hilzinger , 2001. # Sári Gábor , 2000. # Steve Varadi , 2000. # Zoltán Levárdy , 1999. # Papp Zsolt , 2006. # Kalman Kemenczy , 2006, 2007, 2008. # Ervin Novak , 2008. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2015-04-03 18:34+0000\n" "Last-Translator: Úr Balázs \n" "Language-Team: Hungarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: hu\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Hiba: nincs elég memória\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" "Hiba: a(z) %s alapkönyvtár nem érvényes könyvtár, ezért kihagyásra kerül.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Hiba: nem sikerült a(z) %s könyvtár hozzáadása a keresési útvonalhoz.\n" # modules/printconf/printconf_write_printer.ycp:30 # clients/printconf_write.ycp:308 #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Hiba: nem sikerült lefoglalni memóriát\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Rossz írási pozíció\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Engedély megtagadva\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Nincs elég memória\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "A profil nem felel meg a protokollnak\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "A profil nem egyezik az aláírással\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "A profil verzióját az AppArmor nem támogatja\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "A profil már létezik\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "A profil nem létezik\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" nem vehetÅ‘ fel. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" nem cserélhetÅ‘ le. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" nem távolítható el. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Nem sikerült írni a standard kimenetre\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Érvénytelen paraméter: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\" hozzáadása sikerült.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\" cseréje sikerült.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\" eltávolítása sikerült.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PÃNIK rossz növekmény puffer: %p poz: %p kit: %p méret %d felb: %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s nem nyitható meg - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Memóriafoglalási hiba: A(z) ^%s eltávolítása sikertelen\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Memóriafoglalási hiba. A(z) %s:%s eltávolítása sikertelen." # clients/lan_nfs_write.ycp:78 #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "a munkaterület létrehozása nem sikerült\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "A(z) %s profil sorba szedése nem sikerült\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Nem sikerült a teljes profilbejegyzés kiírása\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "„%s†nem nyitható meg" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Váratlan karakter: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Váratlan karakter: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Nem sikerült memóriát foglalni az aldomainbase csatolási pontnak\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Figyelem: A(z) %s nem tartalmaz megfelelÅ‘ fájlrendszert, fel van csatolva?\n" "Ez a --subdomainfs paraméterrel írható felül.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Sajnálom. A program futtatásához root jogosultság szükséges.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Figyelem! A program setuid root módban futásra van állítva.\n" "Bárki, aki futtatja a programot, frissíteni tudja az AppArmor profilokat.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Hiba: A profil beolvasása sikertelen %s: %s\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Memóriafoglalási hiba." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Hiba a fájlban. A program leáll.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "A nagybetűs \"RWLIMX\" minÅ‘sítÅ‘k használata elavult, használjon kisbetűket.\n" "A részletekkel kapcsolatban lásd az apparmor.d(5) kézikönyvoldalt.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Ütközés: 'a' és 'w' kölcsönösen kizáró." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Az 'i' végrehajtás-módosító érvénytelen, már meg van adva egy ütközÅ‘ minÅ‘sítÅ‘" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "A korlátozás nélküli végrehajtás-minÅ‘sítÅ‘ (%c%c) lehetÅ‘vé teszi egyes " "veszélyes környezeti változók átadását a korlátozás nélküli folyamatnak; a " "részletekkel kapcsolatban lásd a 'man 5 apparmor.d' kézikönyvoldalt.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "A(z) '%c' végrehajtás-módosító érvénytelen, már meg van adva egy ütközÅ‘ " "minÅ‘sítÅ‘" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "A(z) '%c%c' végrehajtás-módosító érvénytelen, már meg van adva egy ütközÅ‘ " "minÅ‘sítÅ‘" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "BelsÅ‘: váratlan módkarakter ('%c') a bemenetben" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "A belsÅ‘ hiba érvénytelen perm 0x%llx létrehozását okozta\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor feldolgozási hiba: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "A bejegyzések nem fésülhetÅ‘k össze. Nincs elég memória\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "%s -> %s álnév létrehozása sikertelen\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "A 'debug' profiljelzÅ‘ már nem érvényes." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Érvénytelen profiljelzÅ‘: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: A `rule' NULL értéket adott vissza." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Érvénytelen mód, az 'x' elÅ‘tt az 'i', 'p' vagy 'u' végrehajtás-módosító " "kell, hogy álljon" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Érvénytelen mód, az 'x' elÅ‘tt az 'i', 'p', 'c' vagy 'u' végrehajtás-módosító " "kell, hogy álljon" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Érvénytelen mód, az 'x' elÅ‘tt az 'i', 'p' vagy 'u' végrehajtás-módosító " "kell, hogy álljon" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert: A `network_rule' érvénytelen protokollt adott vissza." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert: A `change_profile' NULL értéket adott vissza." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: A 'hat rule' NULL értéket adott vissza." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: A `local_profile rule' NULL értéket adott vissza." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Be nem állított logikai változó (%s) egy feltételes kifejezésben" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "nem biztonságos szabályból hiányzik a futtatási jogosultság" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "A részhalmaz csak a link szabályokkal használható." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "A link és futtatás jogosultságok ütköznek egy fájl szabályon ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "link jogosultságok nem engedélyezettek egy nevezett profil átmenetében.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "Lehet, hogy hiányzik egy sorvége karakter? (bejegyzés: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Érvénytelen hálózati bejegyzés." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Érvénytelen tulajdonság: %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: Érvénytelen nyitott {, a csoportosítások nem ágyazhatók egymásba\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Regex csoportosítási hiba: Érvénytelen számú elem a { és } között\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex csoportosítási hiba: Érvénytelen záró }, nem található hozzá " "tartozó nyitott {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex csoportosítási hiba: Be nem zárt csoport, záró } hiányzik\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: BelsÅ‘ puffer-túlcsordulás, %d karakterrel több\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: A '%s' bemeneti sor értelmezése nem sikerült\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "HIBA a(z) %s profil szabályainak összefésülésénél, a betöltés nem sikerült\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "HIBA: a(z) %s profil ezzel a kernellel nem használható irányelvelemeket " "tartalmaz:\n" "\t'*', '?', karaktertartományok és alternatívák használata nem megengedett.\n" "\t'**' csak a szabály végén használható.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "HIBA a(z) %s profil reguláris kifejezéseinek feldolgozásakor, a betöltés nem " "sikerült\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "HIBA a(z) %s profil változóinak kibontásakor, a betöltés nem sikerült\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" "HIBA a hat hozzáférési szabály a(z) %s profilhoz való hozzáadásakor\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "HIBA a(z) %s profilban, a betöltés nem sikerült\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Hibák az utófeldolgozás közben. A program leáll.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Hibák a reguláris kifejezés utófeldolgozása közben. A program leáll.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Hibák az utófeldolgozás közben. A program leáll.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Hiba a szabályok egyesítésének utófeldolgozásában. A program leáll.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ug.po0000664000175000017500000005106414201060045014014 0ustar jjjj# Uyghur translation for apparmor # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:00+0000\n" "Last-Translator: AppArmor list \n" "Language-Team: Uyghur \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ug\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/hr.po0000664000175000017500000006173014201060045014013 0ustar jjjj# translation of apparmor-parser.hr.po to Croatian # Croatian message file for YaST2 (@memory@) # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2002 SuSE Linux AG. # Copyright (C) 2001 SuSE GmbH. # # Vlatko Kosturjak , 2001. # KreÅ¡imir Jozić , 2006, 2007, 2008. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:58+0000\n" "Last-Translator: KreÅ¡imir Jozić \n" "Language-Team: Croatian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: hr\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "GreÅ¡ka: Nedovoljno memorije.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "GreÅ¡ka: temeljni direktorij %s nije direktorij, preskaÄem.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "GreÅ¡ka: Ne mogu dodati direktorij %s u putanju za pretragu.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "GreÅ¡ka: Ne mogu rezervirati memoriju.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Neipravan položaj za zapisivanje\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Pristup odbijen\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Nema dovoljno memorije\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil ne odgovara protokolu\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil ne odgovara potpisu\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Verzija profila nije podržana od Apparmor modula\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil već postoji\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil ne postoji\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Ne mogu dodati \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Ne mogu zamijeniti \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s : Ne mogu ukloniti \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Ne mogu pisati na stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: UMETANJE: Neispravan izbor: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Dodavanje je uspjelo za \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Zamjena je uspjela za \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Uklanjanje je uspjelo za \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANIKA neispravan inkrementalni spremnik %p pol %p ekst %p vel %d raz %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Ne mogu otvoriti %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "GreÅ¡ka prilikom rezervacije memorije: ne mogu ukloniti ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "GreÅ¡ka prilikom rezervacije memorije: ne mogu ukloniti %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "Ne mogu napraviti radni prostor\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "Ne mogu serijalizirati profil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Ne mogu zapisati cjeli unos profila\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "PronaÄ‘en neoÄekivani znak: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) PronaÄ‘en neoÄekivani znak: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: Ne mogu rezervirati memoriju za toÄku montiranja poddomene\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Upozorenje: ne mogu pronaći prikladan datoteÄni sustav u %s, da li je " "montiran?\n" "Koristite --subdomainfs za premoÅ¡tenje.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: IspriÄavamo se. Trebate root privilegije za pokretanje ovog programa.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Upozorenje! Postavili ste setuid root ovog programa.\n" "Svatko tko može pokrenuti ovaj program može manipulirati AppArmor " "profilima.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "GreÅ¡ka: Ne mogu uÄitati profil %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "GreÅ¡ka kod rezerviranja memorije." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s PronaÄ‘ene su greÅ¡ke u datoteci. Prekidam.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Kvalifikatori s velikim slovima \"RWLIMX\" su zastarjeli, molimo vas da ih " "pretvorite u mala slova\n" "Pogledajte apparmor.d(5) man stranice za detalje.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Sukob 'a' i 'w' dozvole su meÄ‘usobno iskljuÄive." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Kvalifikator izvrÅ¡avanja 'i' nije ispravan, sukobljeni kvalifikator je već " "naveden" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "NeograniÄeni kvalifikator izvrÅ¡avanja (%c%c) dozvoljava da neke opasne " "varijable okoline budu proslijeÄ‘ene neprovjerenim procesima, pogledajte 'man " "5 apparmor.d' za detalje.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Kvalifikator izvrÅ¡avanja '%c' nije ispravan, sukobljeni kvalifikator je već " "naveden" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Kvalifikator izvrÅ¡avanja '%c%c' nije ispravan, sukobljeni kvalifikator je " "već naveden" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "UnutraÅ¡nje: neoÄekivani oblik znaka '%c' u ulazu" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "UnutraÅ¡nja greÅ¡ka je stvorila neispravne dozvole 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor greÅ¡ka parsera: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Ne mogu spojiti unose. Nedovoljno memorije\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Ne mogu napraviti alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Zastavica profila 'uklanjanje greÅ¡aka' viÅ¡e nije ispravna." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Neispravna zastavica profila: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Potvrda: `rule' je vratilo NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Neispravan naÄin, u pravilima odbijanja 'x' ne smije imati kvalifikatore " "izvrÅ¡avanja 'i', 'p', ili 'u' u prefiksu" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Neispravan oblik, ispred 'x' moraju biti kvalifikatori izvrÅ¡avanja 'i', 'p', " "'c' ili 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Neispravan oblik, ispred 'x' moraju biti kvalifikatori izvrÅ¡avanja 'i', 'p' " "ili 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Potvrda: `network_rule' je vratilo neispravan protokol." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Potvrda: `change_profile' je vratilo NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Potvrda: `hat rule' je vratilo NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Nepostavljena varijabla istinitosti %s koriÅ¡tena u if-uvjetu" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "Nesigurnom pravilu nedostaju prava izvrÅ¡avanja" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "nedostaje oznaka kraja niza? (unos: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Neispravan mrežni unos." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Neispravna mogućnost %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Neispravno otvaranje {, ugniježđena grupiranja nisu dozvoljena\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: GreÅ¡ka prilikom grupiranja regularnih izraza: Neispravan broj stavki " "izmeÄ‘u {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s GreÅ¡ka prilikom grupiranja regularnih izraza: Neispravno zatvaranje }, " "nema odgovarajućeg otvaranja {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s GreÅ¡ka prilikom grupiranja regularnih izraza: Nezatvoreno grupiranje ili " "klasa znakova, oÄekujem zatvaranje }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: Detektiran je prelijev unutraÅ¡njeg spremnika, %d znakova previÅ¡e\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Ne mogu parsirati ulaznu liniju '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "GREÅ KA kod spajanja pravila za profil %s, ne mogu uÄitati\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "GREÅ KA profil %s sadrži elemente pravila koji se ne mogu korisiti s ovim " "kernelom:\n" "\t'*', '?', raspon znakova i alternative nisu dozvoljene.\n" "\t'**' se može koristiti samo na kraju pravila.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "GREÅ KA kod obrade regularnih izraza za profil %s, ne mogu uÄitati\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "GREÅ KA kod uÄitavanja varijabli za profil %s, ne mogu uÄitati\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "GREÅ KA u profilu %s, ne mogu uÄitati\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: NaÄ‘ene su greÅ¡ke prilikom postprocesiranja regularnih izraza. " "Prekidam.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: NaÄ‘ene su greÅ¡ke prilikom postprocesiranja kombiniranja pravila. " "Prekidam.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/gu.po0000664000175000017500000005712314201060045014016 0ustar jjjjmsgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:03+0000\n" "Last-Translator: Priyavert \n" "Language-Team: AgreeYa Solutions\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: gu\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "અયોગà«àª¯ લેખન સà«àª¥àª¿àª¤àª¿\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "પરવાનગી નાકબૂલ\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "અપૂરતી મેમરી\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "પà«àª°à«‹àª«àª¾àªˆàª² પà«àª°à«‹àªŸà«‹àª•ોલ સાથે બંધબેસતો નથી\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "પà«àª°à«‹àª«àª¾àªˆàª² સહી સાથે અનà«àª°à«‚પ નથી\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "પà«àª°à«‹àª«àª¾àªˆàª² અસà«àª¤àª¿àª¤à«àªµàª®àª¾àª‚ છે\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "પà«àª°à«‹àª«àª¾àªˆàª² અસà«àª¤àª¿àª¤à«àªµàª®àª¾àª‚ નથી\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: ઉમેરી શકાતà«àª‚ નથી \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: બદલી શકાતà«àª‚ નથી \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: દૂર કરી શકાતà«àª‚ નથી \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdout પર શકાતà«àª‚ નથી\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: આગà«àª°àª¹ રાખો: અયોગà«àª¯ વિકલà«àªª: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "ઉમેરવાનà«àª‚ સફળ થયà«àª‚ છે \"%s\" માટે.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "બદલવાનà«àª‚ સફળ થયà«àª‚ છે \"%s\" માટે.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "દૂર કરવાનà«àª‚ સફળ થયà«àª‚ છે \"%s\" માટે.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "ભયભીત અયોગà«àª¯ ઈનà«àª•à«àª°à«€àª®à«‡àª¨à«àªŸ બફર %p pos %p ext %p સાઈઠ%d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "ખà«àª²à«€ શકà«àª¤à«àª‚ નથી %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "કારà«àª¯àª¨à«‹ વિસà«àª¤àª¾àª° બનાવી શકાતો નથી\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "પà«àª°à«‹àª«àª¾àªˆàª² પà«àª°àª•ાશિત થઈ શકતો નથી %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: સંપૂરà«àª£ પà«àª°à«‹àª«àª¾àªˆàª² àªàª¨à«àªŸà«àª°à«€ લખી શકાતી નથી.\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "અણધારà«àª¯à«‹ વરà«àª£ મળà«àª¯à«‹: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: સબડોમેઈનબેઠમાઉનà«àªŸ પોઈનà«àªŸ માટે મેમરી ફાળવી શકાઈ નહીં\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "મેમરી ફાળવવામાં ભૂલ." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: ફાઈલમાં ભૂલો મળી છે. અટકાવાયà«àª‚ છે.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec કà«àªµà«‹àª²à«€àª«àª¾àª¯àª° 'i' અયોગà«àª¯ છે, વિરોધ કરતો કà«àªµà«‹àª²à«€àª«àª¾àª¯àª° જણાવી દેવામાં આવà«àª¯à«‹ જ છે" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "àªàª¨à«àªŸà«àª°à«€àª“ ભળી શકાઈ નથી. અપૂરતી મેમરી\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "આગà«àª°àª¹ રાખો: `રૂલ' પાછો લાવà«àª¯à«‹ નલ NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "આગà«àª°àª¹ રાખો: `હેટ રૂલ' પાછો લાવà«àª¯à«‹ નલ NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "લાઈન પૂરી થયા પછીનો વરà«àª£ ખૂટે છે? (àªàª¨à«àªŸà«àª°à«€: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: ગેરકાયદેસર ઓપન {, નેસà«àªŸàª¿àª‚ગ ગà«àª°à«àªªà«€àª‚ગ ને મંજૂરી નથી\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex ગà«àª°à«àªªà«€àª‚ગ ભૂલ: {} ની વચà«àªšà«‡ અયોગà«àª¯ સંખà«àª¯àª¾àª¨à«€ બાબતો\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex ગà«àª°à«àªªà«€àª‚ગ ભૂલ: અયોગà«àª¯ બંધ }, તેને અનà«àª°à«‚પ કોઈ ઓપન { નà«àª¥à«€ મળતà«àª‚\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: આંતરિક બફર ઉભરાઈ ગયેલà«àª‚ મળે છે, %d વરà«àª£à«‹ ઓળંગાઈ ગયા છે\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: ઈનà«àªªà«àªŸ લાઈન '%s' પારà«àª¸ કરી શકાતી નથી\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "પà«àª°à«‹àª«àª¾àªˆàª² %s માં ભૂલ, લઈ આવવાનà«àª‚ નિષà«àª«àª³\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s: પોસà«àªŸàªªà«àª°à«‹àª¸à«‡àª¸à«€àª‚ગ નિયમો ભેગાં કરતાં ભૂલો મળી છે. અટકાવાયà«àª‚ છે.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/fi.po0000664000175000017500000006334414201060045014003 0ustar jjjj# translation of apparmor-parser.fi.po to suomi # translation of apparmor-parser.fi.po to # translation of apparmor-parser.po to # translation of subdomain-parser.po to # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR Immunix, Inc. # # Jyri Palokangas , 2005, 2006. # Ilkka Pirskanen , 2005. # Jyri Palokangas , 2007. # Mikko Piippo , 2008. # Jyri Palokagas , 2008. # Sami Ojanen , 2008. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2014-05-01 19:38+0000\n" "Last-Translator: Jiri Grönroos \n" "Language-Team: Suomi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: fi\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Virhe: Muisti loppui.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Virhe: kantahakemisto %s ei ole hakemisto, ohitetaan.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Virhe: Hakemistoa %s ei voitu lisätä etsintäpolkuun.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Virhe: Muistin varaaminen epäonnistui.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Väärä kirjoituskohta\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Ei käyttöoikeutta\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Muisti loppui\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profiili ei noudata yhteyskäytäntöä\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profiili ei täsmää allekirjoitukseen\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profiilin versio ei ole AppArmor-moduulin tukema\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profiili on jo olemassa\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profiilia ei ole olemassa\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Tuntematon virhe (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" lisäys ei onnistunut. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" korvaus ei onnistunut. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" poisto ei onnistunut. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Kirjoittaminen stdout-tulostusvirtaan ei onnistunut\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Virheellinen valinta: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "%s lisäys onnistui.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "%s korvaus onnistui.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\" poisto onnistui.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIIKKI viallinen lisäyspuskuri %p pos %p ext %p koko %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Ei voitu avata %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Muistinvarausvirhe: Ei voitu poistaa ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Muistivarausvirhe. Ei voitu poistaa %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "työalueen luominen ei onnistunut\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "profiilin %s sarjallistaminen ei onnistunut\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Koko profiilimerkinnän kirjoittaminen ei onnistunut\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Löytyi odottamaton merkki: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Löytyi odottamaton merkki: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Muistin varaaminen alitoimialuepohjan liitoskohdalle ei onnistunut\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Varoitus: ei löydetä sopivaa tiedostojärjestelmää kohteesta %s, onko osio " "liitetty?\n" "Käytä --subdomainfs ohittaaksesi.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Ohjelman suorittamiseen tarvitaan pääkäyttäjän oikeudet.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Varoitus! Olet asettanut ohjelman setuid-tiedon pääkäyttäjäksi.\n" "Kaikki, jotka voivat suorittaa tämän ohjelman, voivat muuttaa AppArmor-" "profiileja.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Virhe: Ei voitu lukea profiilia %s: %s\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Muistivarausvirhe." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Tiedostosta löytyi virheitä. Keskeytetään.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Isoilla kirjoitetut määritteet \"RWLIMX\" eivät ole suositeltavia. Ole hyvä " "ja korjaa ne pienellä kirjoitetuiksi.\n" "Lue apparmor.d(5) manuaalisivu jos haluat aiheesta lisätietoja.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Ristiriita 'a' ja 'w' oikeudet ovat toisensa pois sulkevia." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec-valitsin 'i' virheellinen, ristiriitainen valitsin mainittu aiemmin" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Vapaa exec-valitsin (%c%c) sallii joidenkin vaarallisten ympäristömuuttujien " "lähettämisen varmistamattomille prosesseille; man 5 apparmor.d jos haluat " "lisätietoja aiheesta.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Exec-valitsin '%c' virheellinen, ristiriidan aiheuttava valitsin määritetty " "jo aiemmin" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Exec-valitsin '%c%c' virheellinen, ristiriidan aiheuttava valitsin " "määritetty jo aiemmin" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Sisäinen: odottamaton tila merkki '%c' syötteessä" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Sisäinen virhe, aiheuttaja virheellinen määritys 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor parser -virhe: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Merkintöjä ei voitu yhdistää. Muisti loppui\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Ei voitu luoda aliasta %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Profiilin lippu 'debug' ei ole enää kelvollinen." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Virheellinen profiilin lippu: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: `rule' palautti NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Virheellinen tila, kieltosäännöissä valitsinta 'x' ei saa edeltää valitsin " "'i', 'p' tai 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Virheellinen tila, valitsinta 'x' pitää edeltää valitsin 'i', 'p', 'c' tai " "'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Virheellinen tila, valitsinta 'x' pitää edeltää valitsin 'i', 'p' tai 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert: `network_rule' palautti virheellisen protokollan." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert: `change_profile' palautti NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: 'hat rule' palautti NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: 'local_profile rule' palautti NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Asettamaton boolean muuttuja %s käytössä if-lausekkeessa" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "turvaton sääntö suoritusoikeudet puuttuvat" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "aliryhmää voidaan käyttää vain linkkisäännöissä." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "linkki ja suoritusoikeudet ristiriidassa tiedostossa, joka käyttää ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "linkkioikeuksia ei sallita nimetyssä profiilinsiirrossa\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "puuttuuko rivin lopetinmerkki? (merkintä: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Virheellinen verkkomerkintä." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Virheellinen kyky %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Virheellinen aloittava {, sisäkkäiset ryhmitykset ei sallittu\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Säännöllisen lausekkeen ryhmitysvirhe: Virheellinen määrä alkioita {} " "välissä\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Säännöllisen lausekkeen ryhmitysvirhe: Virheellinen lopettava }, " "vastaavaa aloittavaa { ei tunnistettu\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex-ryhmitysvirhe: Sulkematon ryhmitys tai merkkiluokka, odotetaan " "sulje } -merkintää\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Sisäisen puskurin ylivuoto, ylitettiin %d merkkiä\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Syöterivin '%s' koostaminen ei onnistunut\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "VIRHE yhdistettäessä profiilin %s sääntöjä, lataaminen ei onnistunut\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "VIRHE profiili %s sisältää menettelytapaelementtejä, jotka eivät toimi tämän " "ytimen kanssa:\n" "\t'*', '?', merkkialueet ja muunnokset eivät ole sallittuja.\n" "\t'**' voidaan käyttää vain säännön lopussa.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "VIRHE käsiteltäessä profiilin %s säännöllisiä lausekkeita, lataaminen ei " "onnistunut\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "VIRHE laajennettaessa muuttujia profiilille %s, lataaminen ei onnistunut\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "VIRHE lisättäessä hattua profiilin %s käyttösääntöön\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "VIRHE profiilissa %s, lataaminen ei onnistunut\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Löydettiin virheitä jälkikäsittelyssä. Keskeytetään.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Löydettiin virheitä säännöllisten lausekkeiden jälkikäsittelyssä. " "Keskeytetään.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Löydettiin virheitä jälkikäsittelyssä. Keskeytetään.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Löydettiin virheitä yhdistyssääntöjen jälkikäsittelyssä. Keskeytetään.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/bs.po0000664000175000017500000005320114201060045014000 0ustar jjjj# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2014-05-01 19:36+0000\n" "Last-Translator: Samir Ribić \n" "Language-Team: Bosnian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: bs\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "GreÅ¡ka: Nema viÅ¡e memorije.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "GreÅ¡ka: osnovni direktorij %s nije direktorij, preskaÄem.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "GreÅ¡ka: Ne mogu dodati direktorij %s u stazu koja se traži.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "GreÅ¡ka: Ne mogu alocirati memoriju.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Neipravan položaj za zapisivanje\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Odobrenje odbijeno\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Nedostaje mi slobodne memorije\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Ne mogu kopirati profil: LoÅ¡a memorijska adresa\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil ne odgovara protokolu\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil ne odgovara potpisu\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Verzija profila nije podržana Apparmor modulom\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil već postoji\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil ne postoji\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "Dozvola odbijena; pokuÅ¡ao da uÄita profil, dok je zatvoren?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Nepoznata greÅ¡ka (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Ne mogu dodati \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Ne mogu zamijeniti \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s : Ne mogu ukloniti \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Ne mogu pisati na stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Ne mogu pisati u izlaznu datoteku\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: PROVJERA: Neispravan izbor: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Dodavanje je uspjelo za \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Zamjena je uspjela za \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Uklanjanje je uspjelo za \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANIKA neispravan inkrementalni spremnik %p pol %p ekst %p vel %d raz %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "profil %s mrežna pravila nisu primijenjena\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Nepoznat tip uzorka\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Ne mogu otvoriti %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "GreÅ¡ka memorijske alokacije: Ne mogu ukloniti ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "GreÅ¡ka memorijske alokacije: Ne mogu ukloniti %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/sr.po0000664000175000017500000005075214201060045014030 0ustar jjjj# Serbian translations for boot loader # Copyright (C) 2005 SUSE Linux GmbH # Copyright © 2005 Danilo Segan # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:31+0000\n" "Last-Translator: Данило Шеган \n" "Language-Team: Serbian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: sr\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/af.po0000664000175000017500000005411514201060045013767 0ustar jjjj# English translations for subdomain_parser package. # Copyright (C) 2005 Immunix, Inc. # This file is distributed under the same license as the subdomain_parser package. # Steve Beattie , 2005. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 01:27+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: af\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Slegte skryfposisie\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Toelating geweier\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Geheue is opgebruik\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profiel pas nie aan by protokol nie\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profiel stem nie ooreen met handtekening nie\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profiel bestaan reeds\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profiel bestaan nie\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Kan \"%s\" nie byvoeg nie. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Kan \"%s\" nie vervang nie. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Kan \"%s\" nie verskuif nie. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Kan nie na stdout toe skryf nie\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: BEWEER: Ongeldige opsie: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Byvoeging vir \"%s\" was suksesvol.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Vervanging van \"%s\" was suksesvol.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Verwydering van \"%s\" was suksesvol.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIEK slegs inkrementbuffer %p pos %p uitbr %p grootte %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Kan %s - %s nie open nie\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "kan werkarea nie skep nie\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "kan profiel nie seriemaak nie %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Kan nie volledige profielinskrywing skryf nie\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Onverwagte karakter gevind: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: Kon geheue vir subdomeinbasis-hegpunt nie toeken nie\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Geheuetoekenningsfout." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Foute in lêer gevind. Staking.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Uitvoerende kwalifiseerder 'i' is ongeldig, konflikterende kwalifiseerder " "reeds gespesifisieer" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Kon inskrywings nie saamvleg nie. Geheue is opgebruik\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Beweer: `reël' het NUL teruggestuur." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Beweer: `hat-reël' het NUL teruggestuur." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "ontbreek daar ’n reëleindkarakter? (inskrywing: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Onwettige open {, nesting van groeperings nie toegelaat nie\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex-groeperingsfout: Ongeldige aantal items tussen {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex-groeperingsfout: Ongeldige sluiting }, geen ooreenstemmende oop " "nie { bespeur\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Interne bufferoorvloei bespeur, %d karakters oorskry\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Kan insetreël '%s' nie ontleed nie\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "FOUT in profiel %s, het misluk om te laai\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Foute gevind in die kombineer van reëls tydens naprosessering. Staking.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/pt.po0000664000175000017500000006473214201060045014032 0ustar jjjj# translation of apparmor-parser.pt.po to Portuguese # English translations for subdomain_parser package. # Copyright (C) 2005 Immunix, Inc. # This file is distributed under the same license as the subdomain_parser package. # # Steve Beattie , 2005. # Antonio Cardoso Martins , 2006, 2007, 2008. # Carlos Gonçalves , 2007. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2016-03-03 08:40+0000\n" "Last-Translator: Ivo Xavier \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: pt\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Erro: Memória Esgotada.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Erro: basedir %s não é um directório, a saltar.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Erro: Não é possível adicionar o directório %s ao caminho de procura.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Erro: Não é possível alocar memória.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Posição de escrita errada\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permissão negada\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Memória esgotada\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Não pode copiar o perfil: Mau endereço de memória\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "O perfil não está em conformidade com o protocolo\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "O perfil não coincide com a assinatura\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Versão de perfil não suportada pelo módulo Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "O perfil já existe\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "O perfil não existe\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "Permissão negada; tentar carregar um perfil enquando confinado?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Erro desconhecido (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Não é possível adicionar \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Não é possível substituir \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Não é possível remover \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Não é possível escrever em stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Incapaz de escrever no ficheiro de saída\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERÇÃO: Opção inválida: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Adição bem sucedida para \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Substituição bem sucedida para \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Remoção bem sucedida para \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PÂNICO buffer de incremento errado %p pos %p ext %p tamanho %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "regras de perfil %s na rede não impostas\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Tipo de padrão desconhecido\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Não é possível abrir %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Erro de Alocação de Memória. Não é possível remover ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Erro de Alocação de Memória. Não é possível remover %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "não é possível criar área de trabalho\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "não é possível serializar o perfil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Não é possível escrever a entrada completa de perfil\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Incapaz de escrever a entrada inteira de perfil na cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Não foi possível abrir '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat falhou para '%s'" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir falhou '%s'" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat falhou para '%s'" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Não pode abrir '%s' em '%s'" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Encontrado caracter inesperado: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Encontrado caracter inesperado: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Avisos de %s (%s%sline %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Não é possível alocar memória para o ponto de montagem de subdomainbase\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Aviso: não é possível encontrar um fs adequado em %s, estará ele montado?\n" "Utilize --subdomainfs para sobrepor.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Lamento. Necessita de privilégios de root para executar este programa.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Aviso! Definiu este programa como setuid root.\n" "Qualquer utilizador que possa executar este programa pode actualizar os seus " "perfis AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Erro: Não é possível ler o perfil %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Erro de alocação de memória." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Foram encontrados erros no ficheiro. A interromper.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Os qualificadores maiúsculos \"RWLIMX\" estão obsoletos, por isso converta-" "os para minúsculas\n" "Para mais detalhes consulte a página de manual do apparmor.d(5).\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "As permissões 'a' e 'w' em conflito são mutuamente exclusivas." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Qualificador de execução 'i' inválido, qualificador em conflito já " "especificado" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "O qualificador de execução não constrangido (%c%c) permite a passagem de " "variáveis de ambiente perigosas para o processo não confinado; digite 'man 5 " "apparmor.d' para mais detalhes.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Qualificador de execução '%c' inválido, qualificador em conflito já " "especificado" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Qualificador de execução '%c%c' inválido, qualificador em conflito já " "especificado" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Interno: entrada com caracter de modo '%c' inesperado" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Erro interno gerou permissão inválida 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Erro de interpretação AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Não é possível intercalar as entradas. Memória Esgotada\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "Anexo de perfil deve começar com '/'." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Falha na criação da alcunha %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "A marca 'debug' de perfil já não é válida." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Marca de perfil inválida: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Asserção: `rule' devolveu NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Modo inválido, em regras de negação, o 'x' deve ser precedido por um " "qualificador de execução 'i', 'p' ou 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Modo inválido, 'x' deve ser precedido por um qualificador de execução 'i', " "'p', 'c' ou 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Modo inválido, 'x' deve ser precedido por um qualificador de execução 'i', " "'p' ou 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Asserção: `network_rule' ' devolveu protocolo inválido." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Asserção: `change_profile' devolveu NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Asserção: 'hat rule' devolveu NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Asserção: `local_profile rule' devolveu NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Variável booleana %s não definida em expressão condicional" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "Regra insegura por falta de permissões de execução" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subconjunto pode apenas ser utilizado com regras de ligação." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "permissões de link e exec conflictuam numa regra de ficheiro utilizando ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "permissões de link não são permitidas numa transição de perfil nomeada.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "caracter de fim de linha em falta? (entrada: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Entrada de rede inválido." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Capacidade inválida %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: { de abertura ilegal, o encadeamento de agrupamentos não é permitido\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Erro de agrupamento de expressões regulares: Número inválido de itens " "entre {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Erro de agrupamento de expressões regulares: Fecho inválido }, não foi " "encontrado uma } para emparelhar\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Erro de agrupamento de expressões regulares: Agrupamento ou classe de " "caracter não encerrado, espera-se uma } a fechar\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Detectado um excesso no buffer interno de %d caracteres\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Não foi possível analisar a linha de entrada '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "ERRO falhou a carga das regras de fusão do perfil %s\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ERRO perfil %s contém elementos de política não utilizáveis com este " "kernel:\n" "\t'*', '?', gamas de caracteres e alternações não são permitidos.\t'**' pode " "apenas ser utilizado no fim de uma regra.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "ERRO ao processar regexs para o perfil '%s', falhou a carga\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "ERRO ao expandir as variáveis para o perfil '%s', falhou a carga\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "ERRO ao adicionar a regra de acesso 'hat' para o perfil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ERRO no perfil %s, falhou o carregamento\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" "%s: Foram encontrados erros durante o pós-processamento. A interromper.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Foram encontrados erros durante o pós-processamento das expressões " "regulares (regex). A interromper.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" "%s: Foram encontrados erros durante o pós-processamento. A interromper.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Foram encontrados erros no pós-processamento de combinação de regras. A " "interromper.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Sem memória" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Não foi possível criar diretório de cache: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Não foi possível atualizar o diretório da cache: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/uk.po0000664000175000017500000010233414201060045014015 0ustar jjjj# translation of apparmor-parser.po to Ukrainian # Translation of apparmor-parser.uk.po to Ukrainian # English translations for subdomain_parser package. # Copyright (C) 2005 Immunix, Inc. # This file is distributed under the same license as the subdomain_parser package. # # # Ivan Petrouchtchak , 2006, 2007. # Yuri Chornoivan , 2008, 2013. # Ivan Petrouchtchak , 2008. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 12:27+0000\n" "Last-Translator: yurchor \n" "Language-Team: Ukrainian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: uk\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Помилка: недоÑтатньо пам'Ñті.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Помилка: базовий каталог %s - це не каталог; пропуÑкаєтьÑÑ.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Помилка: Ðе вдалоÑÑ Ð´Ð¾Ð´Ð°Ñ‚Ð¸ каталог %s до шлÑху пошуку.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Помилка: Ðе вдалоÑÑ Ð²Ð¸Ð´Ñ–Ð»Ð¸Ñ‚Ð¸ пам'Ñть.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Погана Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ Ð·Ð°Ð¿Ð¸Ñу\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Відмовлено у доÑтупі\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Ðе виÑтачає пам'Ñті\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Ðе вдалоÑÑ Ñкопіювати профіль: помилкова адреÑа пам’Ñті\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Профіль не ÑуміÑний з протоколом\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Профіль не збігаєтьÑÑ Ð· підпиÑом\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "ВерÑÑ–Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ не підтримуєтьÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Профіль вже Ñ–Ñнує\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Профіль не Ñ–Ñнує\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" "Ðемає доÑтупу. ЗдійÑнено Ñпробу завантажити профіль у обмеженому режимі?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Ðевідома помилка (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Ðеможливо додати \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Ðеможливо замінити \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Ðеможливо вилучити \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Ðеможливо запиÑати в stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати результати до файла\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: нечинний параметр: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "УÑпішне Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð»Ñ \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "УÑпішна заміна Ð´Ð»Ñ \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "УÑпішне Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANIC неправильне Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ð° %p поз %p розш %p розм %d Ñ€ÐµÑ %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "правила щодо мережі профілю %s не буде заÑтоÑовано примуÑово\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Ðевідомий тип взірцÑ\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Ðеможливо відкрити %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Помилка Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ð¼'Ñті: Ðе вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸ ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Помилка Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ð¼'Ñті: Ðеможливо вилучити %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "неможливо Ñтворити робочу ділÑнку\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "неможливо перетворити профіль %s в поÑлідовну форму\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Ðе вдаєтьÑÑ Ð·Ð°Ð¿Ð¸Ñати повний Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: не вдалоÑÑ Ð·Ð°Ð¿Ð¸Ñати увеÑÑŒ Ð·Ð°Ð¿Ð¸Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ до кешу\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s»" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "помилка fstat під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ «%s»" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "помилка opendir під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±Ð¸ «%s»" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "помилка stat під Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ «%s»" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ «%s» у «%s»" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Знайдено неÑподіваний Ñимвол: \"%s\"" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "У оголошеннÑÑ… змінних не може бути завершальних ком" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Знайдено неочікуваний Ñимвол: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ %s (%s%sÑ€Ñдок %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Ðе вдалоÑÑŒ виділити пам'Ñть Ð´Ð»Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ñнови піддомену\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "ПопередженнÑ: на %s не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідної файлової ÑиÑтеми, може " "його не змонтовано?\n" "ВикориÑтайте параметр --subdomainfs, щоб обійти проблему.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Ð”Ð»Ñ Ð²Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— програми потрібні привілеї адмініÑтратора.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: ПопередженнÑ! Ви вказали Ð´Ð»Ñ Ñ†Ñ–Ñ”Ñ— програми setuid root.\n" "Будь-хто, хто може запуÑкати цю програму, може змінювати\n" "ваші профілі AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Помилка: Ðе вдалоÑÑŒ прочитати профіль %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Помилка Ð²Ð¸Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ð¼'Ñті." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "УÑпішне Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ Ð´Ð»Ñ Â«%s».\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "УÑпішне Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ Ð´Ð»Ñ Â«%s».\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Ð’ файлі знайдені помилки. ПерериваєтьÑÑ.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "КлаÑифікатори у верхньому регіÑтрі \"RWLIMX\" не рекомендовано, будь лаÑка, " "переведіть Ñ—Ñ… у нижній регіÑтр\n" "ПереглÑньте Ñторінку довідки apparmor.d(5), щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Конфлікт дозволів, 'a' та 'w' Ñ” взаємовиключними." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "КлаÑифікатор Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Â«i» нечинний, попередньо визначено клаÑифікатор, що " "конфліктує з ним" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Ðеобмежений клаÑифікатор Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ (%c%c) дозволÑÑ” передачу деÑких критичних " "змінних Ñередовища необмеженому процеÑу; виконайте команду 'man 5 " "apparmor.d', щоб дізнатиÑÑ Ð±Ñ–Ð»ÑŒÑˆÐµ.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "КлаÑифікатор Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Â«%c» - нечинний, раніше визначено клаÑифікатор, що з " "ним конфліктує" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "КлаÑифікатор Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Â«%c%c» - нечинний, раніше визначено клаÑифікатор, що " "з ним конфліктує" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Внутрішнє: неочікуваний Ñимвол режиму '%c' у вхідній інформації" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ñпричинена нечинним дозволом 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Помилка аналізатора AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Ðе вдалоÑÑ Ð¾Ð±'єднати запиÑи. Ðе виÑтачає пам'Ñті\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" "профіль %s: міÑтить об’єднане правило %s з конфліктом x модифікаторів\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "Ð”Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ профілю має починатиÑÑ Ð· «/»." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Ðазви профілів мають починатиÑÑ Ð· «/», назви проÑтору назв або ключового " "Ñлова «profile» чи «hat»." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Ðе вдалоÑÑ Ñтворити пÑевдонім %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "Прапорець профілю chroot_relative конфліктує з namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "Прапорець профілю mediate_deleted конфліктує з delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Прапорець профілю attach_disconnected конфліктує з no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Прапорець профілю chroot_attach конфліктує з chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Прапорець профілю \"debug\" більше не діє." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Ðечинний прапорець профілю: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "ВиÑвлено: `rule' повернула NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Ðечинний режим, перед «x» має бути вказано клаÑифікатор Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Â«i», «p», " "або «u»" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Ðечинний режим, перед «x» має бути вказано клаÑифікатор Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Â«i», «p», " "«c» або «u»" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Ðечинний режим, перед «x» має бути вказано клаÑифікатор Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Â«i», «p», " "або «u»" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "ВиÑвлено: «network_rule» повернула нечинний протокол." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "ВиÑвлено: `change_profile' повернула NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "ВиÑвлено: 'hat rule' повернула NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "ВиÑвлено: `local_profile rule' повернула NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "ÐžÐ±Ð½ÑƒÐ»ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ñ–Ð²Ñької змінної %s, Ñку викориÑтано в виразі умови" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "небезпечне правило без дозволів на виконаннÑ" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "підмножину можна викориÑтовувати лише з правилами поÑилань." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "дозволи поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ– Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ„Ð»Ñ–ÐºÑ‚ÑƒÑŽÑ‚ÑŒ у правилі файлів за допомогою ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "дозволи поÑилань не дозволено Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ½ÐµÑÐµÐ½Ð½Ñ Ñ–Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¾Ð³Ð¾ профілю.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "відÑутній Ñимвол ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдка? (елемент: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Ðечинний мережний елемент." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Ðечинна характериÑтика %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "Помилка аналізатора AppArmor, %s%s%s, Ñ€Ñдок %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "Помилка аналізатора AppArmor,%s%s, Ñ€Ñдок %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: ÐеприпуÑтима відкрита дужка {, вузлове Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ дозволÑєтьÑÑ\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Помилка Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ виразу: нечинна кількіÑть пунктів у " "дужках {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Помилка Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ виразу: нечинна завершальна дужка }, не " "знайдено відповідної початкової дужки {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Помилка Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ виразу: не завершено групу або ÐºÐ»Ð°Ñ " "Ñимволів, не знайдено завершальної дужки }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: ВиÑвлено внутрішнє Ð¿ÐµÑ€ÐµÐ¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ð°, Ð¿ÐµÑ€ÐµÐ²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñƒ %d Ñимволів\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Ðе вдаєтьÑÑ Ð¿Ñ€Ð¾Ð°Ð½Ð°Ð»Ñ–Ð·ÑƒÐ²Ð°Ñ‚Ð¸ вхідний файл \"%s\"\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "%s: некоректна назва профілю, «%s» — помилковий формальний вираз\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "ПОМИЛКРпід Ñ‡Ð°Ñ Ð¾Ð±â€™Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð» Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ %s, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ПОМИЛКÐ! профіль %s міÑтить елементи політики, що не можуть бути викориÑтані " "з цим Ñдром ÑиÑтеми:\n" "\t'*', '?', діапазони Ñимволів Ñ– варіанти не дозволено.\n" "\tможна викориÑтовувати лише '**' наприкінці правила.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "ПОМИЛКРобробки формальних виразів Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ %s, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "ПОМИЛКРпри розширенні змінних Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ %s; Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ð»Ð¾ невдачі\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "ÐŸÐžÐœÐ˜Ð›ÐšÐ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð° доÑтупу hat Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ПОМИЛКРу профілі %s, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" "%s: У процеÑÑ– оÑтаточної обробки виÑвлено помилки. Ðварійне завершеннÑ.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: У процеÑÑ– оÑтаточної обробки формального виразу виÑвлено помилки. " "Ðварійне завершеннÑ.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" "%s: У процеÑÑ– оÑтаточної обробки виÑвлено помилки. Ðварійне завершеннÑ.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Під Ñ‡Ð°Ñ Ð¾Ñтаточної обробки Ñкладених правил виÑвлено помилки. Ðварійне " "завершеннÑ.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Ðе вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ каталог Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Â«%s» у «%s»" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "Переповнено буфер можливоÑтей." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "ÐедоÑтатньо пам’Ñті" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Ðе вдалоÑÑ Ñтворити каталог кешу: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "Файл на міÑці каталогу кешу: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Ðе вдалоÑÑ Ð¾Ð½Ð¾Ð²Ð¸Ñ‚Ð¸ каталог кешу: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°: неочікуваний Ñимвол режиму DBus, «%c», у вхідних даних" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "Ð’Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°, Ñпричинена нечинними правами доÑтупу DBus 0x%x\n" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "не можна викориÑтовувати Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ deny" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "не можна викориÑтовувати Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ owner" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "у правилах mount не можна викориÑтовувати Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ owner" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "у правилах dbus не можна викориÑтовувати Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ owner" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "у правилах capability не можна викориÑтовувати Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ owner" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "некоректна умова mount %s%s" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "помилкове правило mount" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "підтримки умов на точку Ð¼Ð¾Ð½Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ поточній верÑÑ–Ñ— не передбачено" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "некоректна умова pivotroot, «%s»" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" "%s: помилка Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ виразу: нечинна завершальна дужка ], не " "знайдено відповідної початкової дужки [\n" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" "%s: помилка Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ виразу: перевищено макÑимальний рівень " "вкладеноÑті у дужках {}\n" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" "ПОМИЛКРобробки правил policydb Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ %s, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸\n" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "ПОМИЛКРзаміри пÑевдонімів Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»ÑŽ %s, не вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸\n" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/zh_TW.po0000664000175000017500000006066414201060045014442 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:42+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: zh_TW\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "錯誤:記憶體ä¸è¶³ã€‚\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "錯誤︰基本目錄 %s 䏿˜¯ç›®éŒ„,正在跳éŽã€‚\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "錯誤︰無法將目錄 %s 新增至æœå°‹è·¯å¾‘。\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "錯誤:無法é…置記憶體。\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "ä¸è‰¯çš„寫入ä½ç½®\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "è¨±å¯æ¬Šè¢«æ‹’絕\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "記憶體ä¸è¶³\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "設定檔ä¸ç¬¦åˆé€šè¨Šå”定\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "設定檔ä¸ç¬¦åˆç°½å\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Apparmor æ¨¡çµ„ä¸æ”¯æ´è©²è¨­å®šæª”版本\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "設定檔已存在\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "設定檔ä¸å­˜åœ¨\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: 無法新增 \"%s\"。 " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: 無法å–代 \"%s\"。 " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: 無法移除 \"%s\"。 " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: 無法寫入至 stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: 顯示:無效的é¸é …: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\" 附加æˆåŠŸã€‚\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\" å–代æˆåŠŸã€‚\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\" 移除æˆåŠŸã€‚\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC ä¸è‰¯çš„增é‡ç·©è¡å€ %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "無法開啟 %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "記憶體é…置錯誤:無法移除 ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "記憶體é…置錯誤:無法移除 %s:%s。" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "無法建立工作å€\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "無法åºåˆ—化設定檔 %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: 無法寫入整個設定檔項目\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "找到éžé æœŸçš„字元: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(網路模å¼) 發ç¾éžé æœŸçš„字元︰%s" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: 無法為å­ç¶²åŸŸåŸºåœ°è£è¼‰é»žé…置記憶體\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "警告︰%s 中找ä¸åˆ°é©åˆçš„ fs,是å¦å·²è£è¼‰ï¼Ÿ\n" "請使用 --subdomainfs 覆寫。\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%sï¸°æŠ±æ­‰ã€‚æ‚¨å¿…é ˆå…·æœ‰æ ¹ä½¿ç”¨è€…æ¬Šé™æ‰èƒ½åŸ·è¡Œæ­¤ç¨‹å¼ã€‚\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%sï¸°è­¦å‘Šï¼æ‚¨å·²å°‡æ­¤ç¨‹å¼è¨­å®šç‚º setuid root。\n" "任何å¯åŸ·è¡Œæ­¤ç¨‹å¼çš„使用者å‡å¯æ›´æ–°æ‚¨çš„ AppArmor 設定檔。\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "錯誤︰無法讀å–設定檔 %s︰%s。\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "記憶體é…置錯誤。" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: 檔案中發ç¾éŒ¯èª¤ã€‚正在中止。\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "大寫修飾詞「RWLIMXã€å·²å»¢æ£„ï¼Œè«‹å°‡å…¶è½‰æ›æˆå°å¯«\n" "如需詳細資料,請åƒé–± apparmor.d(5) manpage。\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "è¡çªçš„「aã€èˆ‡ã€Œwã€è¨±å¯äº’ä¸ç›¸å®¹ã€‚" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "Exec 修飾語「iã€æ˜¯ç„¡æ•ˆçš„,已指定è¡çªçš„修飾語" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "æœªè¨­é™ exec 修飾詞 (%c%c) å…許將æŸäº›å±éšªç’°å¢ƒè®Šæ•¸å‚³éžè‡³æœªè¨­é™ç¨‹åºï¼›å¦‚需詳細資料,請åƒé–± man 5 apparmor.d。\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "Exec 修飾詞「%cã€ç„¡æ•ˆï¼ŒæŒ‡å®šäº†è¡çªçš„修飾詞" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "Exec 修飾詞「%c%cã€ç„¡æ•ˆï¼ŒæŒ‡å®šäº†è¡çªçš„修飾詞" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "內部:輸入中存在éžé æœŸçš„æ¨¡å¼å­—元「%cã€" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "å…§éƒ¨éŒ¯èª¤ç”¢ç”Ÿç„¡æ•ˆè¨±å¯æ¬Š 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor 剖æžç¨‹å¼éŒ¯èª¤ï¸°%s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "無法åˆä½µé …目。記憶體ä¸è¶³\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "無法建立別å %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "設定檔旗標「debugã€ä¸å†æœ‰æ•ˆã€‚" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "設定檔旗標 %s 無效。" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "顯示:`rule' 傳回 NULL。" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "無效模å¼ï¼Œæ‹’絕è¦å‰‡ã€Œxã€çš„å‰é¢å¿…須是 Exec 修飾詞「iã€ã€ã€Œpã€æˆ–「uã€" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "無效模å¼ï¼Œã€Œxã€çš„å‰é¢å¿…須是 Exec 修飾詞「iã€ã€ã€Œpã€ã€ã€Œcã€æˆ–「uã€" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "無效模å¼ï¼Œã€Œxã€çš„å‰é¢å¿…須是 Exec 修飾詞「iã€ã€ã€Œpã€æˆ–「uã€" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "æç¤ºï¸°ã€Œnetwork_ruleã€å‚³å›žç„¡æ•ˆçš„通訊å”定。" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "æç¤ºï¸°ã€Œchange_profileã€å‚³å›ž NULL。" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "顯示:'hat rule' 傳回 NULL。" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "顯示:「local_profile ruleã€å‚³å›ž NULL。" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "å–æ¶ˆè¨­å®š if é‹ç®—å¼ä¸­ä½¿ç”¨çš„布林變數 %s" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "ä¸å®‰å…¨è¦å‰‡ç¼ºå°‘ exec è¨±å¯æ¬Š" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "å­é›†åªèƒ½èˆ‡é€£çµè¦å‰‡ä¸€èµ·ä½¿ç”¨ã€‚" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "使用 -> 的檔案è¦å‰‡æœ‰é€£çµè¨±å¯æ¬Šèˆ‡åŸ·è¡Œè¨±å¯æ¬Šè¡çª" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "ä¸å…è¨±å°æŒ‡å®šçš„設定檔轉æ›ä½¿ç”¨é€£çµè¨±å¯æ¬Šã€‚\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "找ä¸åˆ°è¡Œå°¾å­—元?(項目: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "網路項目無效。" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "功能 %s 無效。" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: éžæ³•開啟 {, ä¸å…許巢狀群組\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex 群組錯誤:無效的項目數在 {} 之間\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "%s: Regex ç¾¤çµ„éŒ¯èª¤ï¼šéžæ³•關閉 }, 無相符的開啟 { 已嵿¸¬åˆ°\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "%s︰Regex 群組錯誤:存在未關閉的群組或字元類別,需è¦é—œé–‰}\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: 嵿¸¬åˆ°å…§éƒ¨ç·©è¡å€æº¢ä½ï¼Œè¶…éŽ %d 個字元\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: 無法剖æžè¼¸å…¥è¡Œ '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "為設定檔 %s åˆä½µè¦å‰‡æ™‚發生錯誤,無法載入\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "錯誤 設定檔 %s åŒ…å«æ­¤æ ¸å¿ƒç„¡æ³•使用的è¦å‰‡å…ƒç´ ï¸°\n" "\tä¸å…許使用「*ã€ã€ã€Œ?ã€ã€å­—元範åœå’Œæ›¿ä»£é …。\n" "\t「**ã€åƒ…å¯ç”¨æ–¼è¦å‰‡çš„æœ«å°¾ã€‚\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "為設定檔 %s è™•ç† regexs 時發生錯誤,無法載入\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "展開設定檔 %s 的變數時發生錯誤,無法載入\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "新增å°è¨­å®šæª” %s çš„ hat å­˜å–è¦å‰‡æ™‚出錯\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "設定檔 %s 中有錯誤,載入失敗\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%sï¼šå¾Œè™•ç†æœŸé–“發ç¾éŒ¯èª¤ã€‚正在中止。\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s︰regex å¾Œè™•ç†æœŸé–“發ç¾éŒ¯èª¤ã€‚正在中止。\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%sï¼šå¾Œè™•ç†æœŸé–“發ç¾éŒ¯èª¤ã€‚正在中止。\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s: çµåˆè¦å‰‡å¾Œè™•ç†æ™‚發ç¾éŒ¯èª¤ã€‚正在中止。\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/nl.po0000664000175000017500000006217714201060045014021 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:24+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: nl\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Fout: Geheugen vol\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Fout: basedir %s is geen map en wordt overgeslagen.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Fout: kan directory %s niet toevoegen aan zoekpad.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Fout: Geheugen vol\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Foutieve schrijfpositie\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Rechten geweigerd\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Geheugen vol\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profiel is niet in overeenstemming met het protocol\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profiel komt niet overeen met de ondertekening\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profielversie wordt niet ondersteund door de AppArmor-module\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profiel bestaat al\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profiel bestaat niet\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Niet in staat om \"%s\" toe te voegen. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Niet in staat om \"%s\" te vervangen. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Niet in staat om \"%s\" te verwijderen. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Niet in staat om naar stdout te schrijven\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: BEWERING: Ongeldige optie: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Toevoeging geslaagd voor \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Vervanging geslaagd voor \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Verwijdering geslaagd van \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANIEK: Foutieve verhoging van de buffer %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Kan %s - %s niet openen\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Geheugenreserveringsfout: kan ^%s niet verwijderen\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Geheugenreserveringsfout: kan %s:%s niet verwijderen." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "Kan geen werktruimte aanmaken\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "Kan profiel %s niet bewerken\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Het gehele profiel kon niet opgeslagen worden\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Onverwacht teken gevonden: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Onverwacht teken gevonden: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Kon geen geheugen reserveren voor het subdomeinbasis aankoppelpunt\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Waarschuwing: kan geen geschikt bestandssysteem vinden in %s. Is het wel " "gekoppeld?\n" "Gebruik --subdomainfs om te negeren.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: U hebt privileges voor de root nodig als u dit programma wilt " "uitvoeren.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Waarschuwing! U hebt dit programma systeembeheerrechten gegeven (setuid " "root).\n" "Iederen die dit programma kan uitvoeren, kan ook uw AppArmor-profielen " "bijwerken.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Fout: kan profiel %s niet lezen: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Fout in geheugenreservering." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Fouten gevonden in het bestand. Stop.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Bepalingen met hoofdletters \"RWLIMX\" worden niet meer gebruikt. Gebruik " "kleine letters\n" "Kijk op de apparmor.d(5)-manpage voor meer informatie.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Conflict: combinaties met 'a' en 'w' gaan niet samen." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec bepaling 'i' ongeldig, conflicterende bepaling is reeds opgegeven" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Onbegrensde exec-bepaling (%c%c) staat toe dat sommige gevaarlijke " "omgevingsvariabelen worden doorgegeven aan het onbegrensde proces; bekijk '5 " "apparmor.d' voor meer informatie.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Exec-bepaling '%c' is ongeldig. Er is al een conflicterende bepaling " "opgegeven." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Exec-bepaling '%c%c' ongeldig; een bepaling, waar deze mee botst, is reeds " "opgegeven" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Intern: onverwacht modusteken '%c' in invoer" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Interne fout genereerde ongeldige permissie 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Fout in AppArmor-parser: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Kan items niet samenvoegen. Onvoldoende geheugen\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Kan alias %s -> %s niet aanmaken\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Profielvlag 'debug' is niet langer geldig." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Ongeldige profielvlag %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Bewering: `rule' gaf NULL terug." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Ongeldige modus, in weigerregels moet 'x' voorafgegaan worden door exec-" "bepaling 'i', 'u' of 'p'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Ongeldige modus, 'x' moet voorafgegaan worden door exec-bepaling 'i', 'c', " "'u' of 'p'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Ongeldige modus. 'x' moet worden voorafgegaan door exec-bepaling 'i', 'p' of " "'u'." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Bewering: 'network_rule' heeft ongeldig protocol geretourneerd." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Bewering: 'change_profile' heeft NULL geretourneerd." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Bewering: `hat rule' gaf NULL terug." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Bewering: `local_profile' gaf NULL terug." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" "Niet-ingestelde booleaanse variabele %s wordt gebruikt in if-expressie" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "onveilige regel ontbrekende exec-machtigingen" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "Subset kan alleen worden gebruikt met linkregels." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "Link- en exec-permissies conflicteren op een bestandsregel die -> gebruikt" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "Link-permissies zijn niet toegestaan bij het transporteren van een profiel " "met een naam.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "Ontbreekt een regeleindeteken? (invoer: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Ongeldig netwerkitem." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Ongeldige functie %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Ongeldige open {, het nesten van groepen is niet toegestaan\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex groepfout: Ongeldig aantal tussen {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex groepfout: Ongeldige close }, geen bijbehorende open { gevonden\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Fout bij groeperen reguliere expressies: ongesloten groepen of " "tekencategorie, terwijl sluiting wordt verwacht }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Interne buffer overschreden, %d tekens teveel\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Niet in staat om regel '%s' te verwerken\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "FOUT bij het samenvoegen van regels voor profiel %s. Kan niet laden\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "FOUT profiel %s bevat beleidselementen die niet kunnen worden gebruikt met " "deze kernel:\n" "\t'*', '?', tekenbereiken en alternaties zijn niet toegestaan.\n" "\t'**' mag alleen worden gebruikt aan het eind van een regel.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "FOUT bij het verwerken van reguliere expressies voor profiel %s. Kan niet " "laden\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "FOUT bij variabelen uitbreiden voor profiel %s. Kan niet laden\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "FOUT bij toevoegen van de hat-toegangregel voor profiel %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "FOUT in profiel %s, laden mislukt\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: fouten gevonden tijdens het naverwerken. Afbreken.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: Fouten gevonden tijdens de nabewerking van regex regels. Stop.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: fouten gevonden tijdens de naverwerking. Stopt.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Fouten gevonden in het combineren van de nabewerkingsregels. Stop.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/pt_BR.po0000664000175000017500000006273214201060045014413 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:51+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: pt_BR\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Erro: Sem memória.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Erro: O diretório base %s não é um diretório; ignorando.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Erro: Não foi possível adicionar o diretório %s ao caminho de pesquisa.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Erro: Não foi possível alocar memória.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Posição de gravação incorreta\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permissão negada\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Memória insuficiente\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Perfil não compatível com o protocolo\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Perfil não corresponde à assinatura\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Versão de perfil não suportada pelo módulo do AppArmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "O perfil já existe\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "O perfil não existe\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Impossível adicionar \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Impossível substituir \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Impossível remover \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Impossível gravar em stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: DECLARAR: Opção inválida: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Adição bem-sucedida de \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Substituição bem-sucedida de \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Remoção bem-sucedida de \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PÂNICO: buffer de incremento incorreto %p pos %p ext %p tamanho %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Impossível abrir %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Erro de Alocação de Memória: Impossível remover ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Erro de Alocação de Memória: Impossível remover %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "impossível criar área de trabalho\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "impossível serializar perfil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Impossível gravar toda a entrada do perfil\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Caractere inesperado encontrado: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Caractere inesperado encontrado: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Impossível alocar memória para ponto de montagem de base de subdomínio\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Aviso: impossível encontrar um fs adequado em %s. Ele está montado?\n" "Use --subdomainfs para anular.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Você precisa de privilégios de root para executar este programa.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Aviso! Você definiu o setuid deste programa como root.\n" "Qualquer pessoa capaz de executar esse programa poderá atualizar seus perfis " "do AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Erro: Não foi possível ler o perfil %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Erro de alocação de memória." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Erros encontrados no arquivo. Interrompendo.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Os qualificadores maiúsculos \"RWLIMX\" foram cancelados; converta-os em " "letras minúsculas\n" "Consulte a página de manual apparmor.d(5) para obter detalhes.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "As permissões 'a' e 'w' de conflito são mutuamente exclusivas." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Qualificador de execução 'i' inválido. Qualificador em conflito já " "especificado" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "O qualificador de execução não delimitado (%c%c) permite que algumas " "variáveis de ambiente perigosas sejam passadas para o processo não " "delimitado; consulte 'man 5 apparmor.d' para obter detalhes.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Qualificador de execução '%c' inválido. Qualificador em conflito já " "especificado" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Qualificador de execução '%c%c' inválido. Qualificador em conflito já " "especificado" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Interno: caractere '%c' inesperado de modo na entrada" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Erro interno gerou permissão inválida 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Erro do analisador do AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Impossível mesclar entradas. Memória Insuficiente\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Falha ao criar o álias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "O flag de perfil 'debug' não é mais válido." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Flag de perfil inválido: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Declarar: `rule' retornou NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Modo inválido. Nas regras de negação, o 'x' não deve ser precedido pelo " "qualificador de execução 'i', 'p' ou 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Modo inválido. O 'x' deve ser precedido pelo qualificador de execução 'i', " "'p','c' ou 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Modo inválido; 'x' deve ser precedido pelo qualificador de execução 'i', 'p' " "ou 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Declarar: `network_rule' retornou um protocolo inválido." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Declarar: `change_profile' retornou NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Declarar: 'hat rule' retornou NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Declaração: a regra 'local_profile' retornou NULO." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Cancelar a definição da variável booleana %s usada na expressão if" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "permissões de execução não seguras com regra ausente" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subconjunto somente deve ser usado com regras de link." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "conflito de permissões de link e execução em uma regra de arquivo usando ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "permissões de link não são permitidas em uma transição de perfil nomeada.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "caractere de fim de linha ausente? (entrada: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Entrada de rede inválida." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Recurso inválido %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Abertura ilegal {, agrupamentos aninhados não permitidos\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Erro de agrupamento de expressão regular: Número inválido de itens entre " "{}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Erro de agrupamento de expressão regular: Fechamento inválido }; nenhuma " "abertura correspondente { detectada\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Erro de agrupamento de expressão regular: Classe de caractere ou " "agrupamento não fechado; aguardando fechamento }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Overflow de buffer interno detectado; %d caracteres excedidos\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Impossível analisar linha de entrada '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "ERRO ao fundir regras para o perfil %s; falha ao carregar\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ERRO: O perfil %s contém elementos de política que não podem ser usados com " "este kernel:\n" "\t'*', '?', faixas de caracteres e alternações não são permitidos.\n" "\t'**' somente podem ser usados no final de uma regra.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "ERRO no processamento de expressões regulares para o perfil %s; falha ao " "carregar\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "ERRO ao expandir variáveis para o perfil %s; falha ao carregar\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "ERRO ao adicionar a regra de acesso hat para o perfil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ERRO no perfil %s. Falha ao carregar\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: erros encontrados durante o pós-processamento. Interrompendo.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Erros encontrados durante o pós-processamento de expressão regular. " "Interrompendo.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: erros encontrados durante o pós-processamento. Interrompendo.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Erros encontrados no pós-processamento de regras de combinação. " "Interrompendo.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/pl.po0000664000175000017500000006310514201060045014013 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:38+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: pl\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Błąd: brak pamiÄ™ci.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Błąd: katalog bazowy %s nie jest katalogiem. PominiÄ™to.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Błąd: dodanie katalogu %s do Å›cieżki wyszukiwania nie powiodÅ‚o siÄ™.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Błąd: przydzielenie pamiÄ™ci nie powiodÅ‚o siÄ™.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "NieprawidÅ‚owa pozycja zapisu\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "DostÄ™p zabroniony\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Brak pamiÄ™ci\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil niezgodny z protokoÅ‚em\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil nie odpowiada sygnaturze\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Wersja profilu nie jest obsÅ‚ugiwana przez moduÅ‚ Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil już istnieje\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil nie istnieje\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: dodawanie \"%s\" nie powiodÅ‚o siÄ™. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: zamiana \"%s\" nie powiodÅ‚a siÄ™. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: usuniÄ™cie \"%s\" nie powiodÅ‚o siÄ™. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: zapis na wyjÅ›cie standardowe nie powiódÅ‚ siÄ™\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: nieprawidÅ‚owa opcja: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Dodanie dla \"%s\" zakoÅ„czone powodzeniem.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Zamiana dla \"%s\" zakoÅ„czona powodzeniem.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Usuwanie dla \"%s\" zakoÅ„czone powodzeniem.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "NieprawidÅ‚owy bufor przyrostowy %p na pozycji %p ext %p rozmiar %d zasób %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Otwarcie %s nie powiodÅ‚o siÄ™ - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Błąd alokacji pamiÄ™ci: Nie można usunąć ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Błąd alokacji pamiÄ™ci: Nie można usunąć %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "Tworzenie obszaru roboczego nie powiodÅ‚o siÄ™\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "Serializowanie profilu %s nie powiodÅ‚o siÄ™\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: zapisanie caÅ‚ego profilu nie powiodÅ‚o siÄ™\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Napotkano nieoczekiwany znak \"%s\"" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(tryb_sieciowy) napotkano nieoczekiwany znak: \"%s\"" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: przydzielenie pamiÄ™ci dla punktu montowania bazy poddomeny nie powiodÅ‚o " "siÄ™\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Uwaga: nie można znaleźć systemu plików w %s, czy jest on zamontowany?\n" "Opcja --subdomainfs wymusza typ systemu plików.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: do uruchomienia tego programu wymagane sÄ… uprawnienia administratora.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: uwaga - dla tego programu ustawiono flagÄ™ setuid root.\n" "Każdy użytkownik tego programu bÄ™dzie mógÅ‚ zmieniać profile AppArmor\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Błąd: nie można odczytać profilu %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Błąd przydzielenia pamiÄ™ci." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: napotkano błędy w pliku. Przerwanie procesu.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Znaczniki zapisane wielkimi literami \"RWLIMX\" nie sÄ… już aktualne. ProszÄ™ " "używać\n" "maÅ‚ych liter. WiÄ™cej informacji można znaleźć w podrÄ™czniku systemowym " "apparmor.d(5).\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Konflikt - \"a\" i \"w\" wykluczajÄ… siÄ™ wzajemnie." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Błędny znacznik wykonania \"i\". WczeÅ›niej użyto sprzecznego znacznika." #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Nieograniczony znacznik wykonania (%c%c) zezwala na przekazywanie " "niebezpiecznych zmiennych Å›rodowiska do procesu. WiÄ™cej informacji można " "znaleźć w podrÄ™czniku systemowym \"man 5 apparmor.d\".\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Błędny znacznik wykonania \"%c\". WczeÅ›niej użyto sprzecznego znacznika." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Błędny znacznik wykonania \"%c%c\", wczeÅ›niej użyto sprzecznego znacznika" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Błąd wewnÄ™trzny: napotkano nieoczekiwany znak trybu \"%c\"" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" "WewnÄ™trzny błąd spowodowaÅ‚ utworzenie nieprawidÅ‚owego uprawnienia 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Błąd parsera AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "ÅÄ…czenie wpisów nie powiodÅ‚o siÄ™. Brak pamiÄ™ci.\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Utworzenie aliasu %s nie powiodÅ‚o siÄ™ -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Flaga profilu \"debug\" nie jest już prawidÅ‚owa." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "NieprawidÅ‚owa flaga profilu: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Asercja: 'rule' zwróciÅ‚o NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Tryb nieprawidÅ‚owy, w reguÅ‚ach zabraniajÄ…cych znacznik \"x\" nie może być " "poprzedzony znacznikiem wykonania \"i\", \"p\" lub \"u\"" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Tryb nieprawidÅ‚owy, \"x\" należy poprzedzić znacznikiem wykonania \"i\", " "\"p\" lub \"u\"" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Tryb nieprawidÅ‚owy. Przed \"x\" należy użyć znacznika wykonania \"i\", " "\"p\" albo \"u\"." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Asercja: \"network_rule\" zwróciÅ‚o niepoprawny protokół." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Asercja: \"change_profile\" zwróciÅ‚o NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Asercja: \"hat rule\" zwróciÅ‚o NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Asercja: \"local_profile rule\" zwróciÅ‚o NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Nieustawiona zmienna logiczna %s użyta w wyrażeniu if." #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "niebezpieczna reguÅ‚a bez uprawnieÅ„ wykonania" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "podzbiór może być użyty tylko z reguÅ‚ami łączy." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "konflikt łączy i uprawnieÅ„ wykonywania w regule pliku używajÄ…cej ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "uprawnienia odnoÅ›ników nie sÄ… dozwolone w zmianie nazwanego profilu.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "brak znaku koÅ„ca wiersza? (wpis: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "NieprawidÅ‚owy wpis sieciowy." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "NieprawidÅ‚owe uprawnienie %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: nieprawidÅ‚owy znak {. Zagnieżdżone grupowanie jest niedozwolone.\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: błąd grupowania wyrażeÅ„ regularnych: nieprawidÅ‚owa ilość elementów " "pomiÄ™dzy {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: błąd grupowania wyrażeÅ„ regularnych: nieprawidÅ‚owy znak }; nie " "znaleziono {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: błąd grupowania wyrażeÅ„ regularnych: niedomkniÄ™te grupowanie; oczekiwano " "zamykajÄ…cego }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: wewnÄ™trzne przepeÅ‚nienie bufora; przekroczono %d znaków\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: analiza wiersza \"%s\" nie powiodÅ‚a siÄ™\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "Błąd łączenia reguÅ‚ dla profilu %s. Wczytanie nie powiodÅ‚o siÄ™.\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "Błąd: profil %s zawiera elementy zasad, które nie sÄ… używane w bieżącym\n" "\t jÄ…drze systemu: zakresy znaków \"*\", \"?\" oraz zmiany nie sÄ… " "dozwolone.\n" "\t znak \"**\" może być użyty tylko na koÅ„cu reguÅ‚y.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "Błąd przetwarzania wyrażeÅ„ regularnych dla profilu %s. Wczytanie nie " "powiodÅ‚o siÄ™.\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "Błąd rozwijania zmiennych dla profilu %s. Wczytanie nie powiodÅ‚o siÄ™.\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "Błąd podczas dodawania reguÅ‚y dostÄ™pu hat dla profilu %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "Błąd w profilu %s. Wczytanie nie powiodÅ‚o siÄ™.\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Napotkano błędy podczas przetwarzania. Proces przerwano.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Błąd podczas przetwarzania koÅ„cowego wyrażenia regularnego. Proces " "przerwano.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Napotkano błędy podczas przetwarzania. Proces przerwano.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: napotkano błędy w łączonym przetwarzaniu reguÅ‚. Proces przerwano.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/et.po0000664000175000017500000005274714201060045014022 0ustar jjjj# translation of apparmor-parser.et.po to Estonian # translation of # Copyright (C) 2006 SUSE Linux Products GmbH. # Estonian message file for YaST2 (@memory@). # # Ain Vagula , 2006. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 01:50+0000\n" "Last-Translator: Ain Vagula \n" "Language-Team: Estonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: et\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Viga: mälu ei jätku.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Viga: basedir %s pole kataloog, jäetakse vahele.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Viga: kataloogi %s pole võimalik otsinguteele lisada.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Viga: pole võimalik eraldada mälu.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Juurdepääs keelatud\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Mälu ei jätku\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profiil ei vasta protokollile\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profiil ei vasta signatuurile\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profiili versioon ei ole Apparmori mooduli poolt toetatud\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profiil on juba olemas\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profiili pole olemas\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" ei saa lisada. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" ei saa asendada. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" ei saa eemaldada. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: ei saa kirjutada standardväljundisse\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\" asendamine õnnestus.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\" eemaldamine õnnestus.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s - %s ei saa avada\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: kogu profiili kirjet ei saa kirjutada\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Leiti ootamatu märk: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Vabandust. Selle rakenduse käivitamiseks on vaja administraatori " "õigusi.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Viga: pole võimalik lugeda profiili %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Viga mälu eraldamisel." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: failis leiti vigu. Katkestamine.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmori parsimise viga: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Kirjeid ei suudetud ühendada. Mälu ei jätku\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "puudub realõpu märk? (kirje: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/bg.po0000664000175000017500000005102114201060045013762 0ustar jjjj# @TITLE@ # Copyright (C) 2006, SUSE Linux GmbH, Nuremberg # FIRST AUTHOR , YEAR. # # This file is distributed under the same license as @PACKAGE@ package. FIRST # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:10+0000\n" "Last-Translator: Borislav Mitev \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: bg\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/cy.po0000664000175000017500000005100314201060045014005 0ustar jjjj# Welsh message file for YaST2 (@memory@). # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2003 SuSE Linux AG. # Kevin Donnelly , 2003. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:14+0000\n" "Last-Translator: Kevin Donnelly \n" "Language-Team: Welsh \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: cy\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/es.po0000664000175000017500000006406114201060045014011 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-26 03:48+0000\n" "Last-Translator: Monkey \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: es\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Error: memoria insuficiente.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Error: el directorio base %s no es un directorio. Se va a omitir.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Error: no se ha podido añadir el directorio %s a la vía de búsqueda.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Error: no es posible asignar memoria.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Posición de escritura incorrecta\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permiso denegado\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Memoria agotada\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "No se puede copiar el perfil. Dirección de memoria incorrecta\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "El perfil no se ajusta al protocolo\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "El perfil no coincide con la firma\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "La versión del perfil no se admite en el módulo de Apparmor.\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "El perfil ya existe\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "El perfil no existe\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" "Permiso denegado. ¿Intentando cargar un perfil mientras estaba confinado?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Error desconocido (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: no es posible añadir \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: no es posible sustituir \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: no es posible eliminar \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: no es posible escribir en stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: imposible escribir en el archivo de salida\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: AFIRMACIÓN: Opción no válida: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Adición correcta de \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Sustitución correcta de \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Eliminación correcta de \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANIC: incremento de buffer incorrecto; pos %p; ext %p; tamaño %p; res %d " "%p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "perfil %s no se cumplen las reglas de red\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Tipo de patrón desconocido\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "No es posible abrir %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Error de asignación de memoria: no se puede eliminar ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Error de asignación de memoria: no se puede eliminar %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "no es posible crear área de trabajo\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "no es posible poner en serie el perfil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: no es posible escribir todo el perfil\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Imposible escribir la entrada de perfil completa a la caché\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "No se pudo abrir '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat falló para «%s»" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir falló «%s»" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "No se pudo abrir «%s» en «%s»" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Se ha detectado un carácter inesperado: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Se ha encontrado un carácter inesperado: %s" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: no es posible asignar memoria para el punto de montaje de base de " "subdominio\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Advertencia: no se encuentra un sistema de archivos adecuado en %s. ¿Se ha " "montado?\n" "Use --subdomainfs para anular.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: lo sentimos, pero debe tener privilegios de usuario Root para ejecutar " "este programa.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: advertencia. Ha configurado este programa como raíz de setuid.\n" "Cualquier usuario que pueda ejecutar este programa podrá actualizar los " "perfiles de AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Error: no se ha podido leer el perfil %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Error de asignación de memoria." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: se han detectado errores en el archivo. Cancelando.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Los calificadores en mayúscula RWLIMX han quedado obsoletos. Conviértalos a " "minúscula.\n" "Consulte la página man apparmor.d(5) para obtener detalles.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Conflicto: los permisos a y w son mutuamente excluyentes." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "El calificador de ejecución 'i' no es válido, ya se ha especificado un " "calificador en conflicto" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "El calificador de ejecución sin limitar (%c%c) permite que se pasen algunas " "variables de entorno peligrosas al proceso sin limitar; consulte man 5 " "apparmor.d para obtener detalles.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "El calificador de ejecución %c no es válido. Ya se ha especificado un " "calificador en conflicto." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "El calificador de ejecución %c%c no es válido, ya que está en conflicto con " "un calificador ya definido." #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Interno: carácter de modo inesperado %c en la entrada" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Un error interno ha generado permisos no válidos 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Error del analizador de AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "No es posible fusionar las entradas. Memoria agotada\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Error al crear el alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "El indicador de perfil debug ya no es válido." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Indicador de perfil no válido: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Afirmación: `rule' ha devuelto NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "El modo no es válido. Las reglas de negación x no pueden ir precedidas de " "los calificadores de ejecución i, p ni u." #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "El modo no es válido. 'x' debe ir precedido de los calificadores de " "ejecución 'i', 'p', 'c' o 'u'." #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Modo no válido. x debe estar precedida del calificador de ejecución i, p o u." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Afirmación: network_rule ha devuelto un protocolo no válido." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Afirmación: change_profile ha devuelto NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Afirmación: 'hat rule' ha devuelto NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Afirmación: la regla local_profile ha devuelto un valor nulo." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Variable booleana %s sin definir utilizada en expresión condicional." #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "Regla no segura. Faltan los permisos de ejecución." #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "Sólo se puede utilizar el subconjunto con reglas de enlace." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "Conflicto entre los permisos de ejecución y de enlace en un archivo de " "reglas que usa ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "No se permiten los permisos de enlace en una transición de perfil con " "nombre.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "¿Falta final de carácter de línea? (Entrada: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Entrada de red no válida." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Característica no válida %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: { de apertura ilegal, la anidación de grupos no está permitida\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: error de agrupación Regex: número de elementos entre {} no válido\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: error de agrupación Regex: } de cierre no válido, no se ha encontrado el " "signo { de apertura correspondiente\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: error de agrupación de regex. Grupo o clase de caracteres sin cerrar. Se " "esperaba } de cierre.\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: detectado desbordamiento de buffer interno, superado en %d caracteres\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: no es posible analizar la línea de entrada '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "ERROR al combinar reglas para el perfil %s. Error al cargar.\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ERROR: el perfil %s contiene elementos de directiva que no se pueden usar " "con este núcleo:\n" "\tNo se admite '*', '?', los rangos de caracteres ni las alternancias.\n" "\t'**' sólo se puede utilizar al final de una regla.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "ERROR al procesar regexs para el perfil %s. Error al cargar.\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "ERROR al expandir las variables para el perfil %s. Error al cargar.\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "Error al añadir la regla de acceso hat en el perfil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ERROR en el perfil %s, error al cargar\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: se han detectado errores durante el postprocesado. Abortando.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: se han detectado errores durante el posprocesado de regex. Cancelando.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: se han detectado errores durante el postrocesado. Abortando.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: se han detectado errores en el posprocesado de combinación de reglas. " "Cancelando.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ka.po0000664000175000017500000005102114201060045013765 0ustar jjjj# @TITLE@ # Copyright (C) 2006, SUSE Linux GmbH, Nuremberg # FIRST AUTHOR , YEAR. # # This file is distributed under the same license as @PACKAGE@ package. FIRST # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:25+0000\n" "Last-Translator: George Machitidze \n" "Language-Team: Georgian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ka\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/bo.po0000664000175000017500000005105714201060045014003 0ustar jjjj# Tibetan translation for apparmor # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2019-12-12 02:59+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Tibetan \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-12-13 05:38+0000\n" "X-Generator: Launchpad (build c597c3229eb023b1e626162d5947141bf7befb13)\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/de.po0000664000175000017500000007270714201060045014000 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2018-04-06 14:39+0000\n" "Last-Translator: Tobias Bannert \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: de\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Fehler: nicht genügend Speicher!\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Fehler: basedir »%s« ist kein Verzeichnis, es wird übersprungen.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Fehler: Verzeichnis »%s« konnte nicht zu Suchpfad hinzugefügt werden.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Fehler: Es konnte kein Speicher zugeordnet werden.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Ungültige Schreibposition\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Zugriff verweigert\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Nicht genügend Speicher!\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Profil konnte nicht kopiert werden: falsche Speicheradresse\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Das Profil entspricht nicht dem Protokoll\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Das Profil stimmt nicht mit der Signatur überein\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profilversion wird vom Apparmor-Modul nicht unterstützt\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil ist bereits vorhanden\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil ist nicht vorhanden\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" "Zugriff verweigert! Haben Sie versucht ein Profil zu laden, während Sie " "eingeschränkt waren?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Unbekannter Fehler (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Hinzufügen von »%s« nicht möglich. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: »%s« kann nicht ersetzt werden. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: »%s« kann nicht entfernt werden. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Schreiben in Standardausgabe nicht möglich\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Schreiben in Ausgabedatei nicht möglich\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Ungültige Option: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Hinzufügen für »%s« erfolgreich.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Ersetzungsvorgang für »%s« erfolgreich.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Entfernen für »%s« erfolgreich.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANIC - ungültiger Inkrement-Puffer %p Position %p Erweiterung %p Größe %d " "Auflösung %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "Netzwerkregeln für Profil %s werden nicht erzwungen\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Unbekannter Mustertyp\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s kann nicht geöffnet werden – %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Speicherzuordnungsfehler: ^%s kann nicht entfernt werden\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Speicherzuordnungsfehler: %s:%s kann nicht entfernt werden." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "Arbeitsbereich kann nicht erstellt werden\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "Serialisierung von Profil %s nicht möglich\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Profileintrag kann nicht geschrieben werden\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" "%s: Schreiben des gesamten Profileintrags in den Puffer nicht möglich\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "»%s« konnte nicht geöffnet werden" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat fehlgeschlagen für »%s«" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir fehlgeschlagen für »%s«" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat fehlgeschlagen für »%s«" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "»%s« konnte nicht in »%s« geöffnet werden" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Unerwartetes Zeichen gefunden: »%s«" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "Variablendeklarationen dürfen nicht mit Kommata enden" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Unerwartetes Zeichen gefunden: »%s«" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Warnung aus %s (%s%sZeile %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Dem Einhängepunkt der Unterdomänenbasis konnte kein Speicher zugeordnet " "werden\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Achtung: Es konnte kein geeignetes Dateisystem in »%s« gefunden werden. Ist " "es eingehängt?\n" "Verwenden Sie --subdomainfs, um es außer Kraft zu setzen.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "»%s«: Sie benötigen Systemverwalterrechte zum Ausführen dieses Programms.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Achtung! Sie haben für dieses Programm »setuid root« festgelegt.\n" "Alle Personen, die dieses Programm ausführen, können Ihre AppArmor-Profile " "aktualisieren.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Fehler: Profil »%s« konnte nicht gelesen werden: »%s«.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Speicherzuordnungsfehler." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "Zwischengespeichertes Laden für »%s« erfolgreich.\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "Zwischengespeichertes Neuladen für »%s« erfolgreich.\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" "%s: In der Datei wurde ein Fehler gefunden. Der Vorgang wird abgebrochen.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Die groß geschriebenen Qualifier »RWLIMX« sind veraltet, bitte nutzen Sie " "klein geschriebene.\n" "Weitere Informationen auf der Handbuchseite apparmor.d(5).\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Die Parameter »a« und »w« schließen sich gegenseitig aus." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Ausführungskennzeichner »i« ist ungültig, ein Kennzeichner, mit dem ein " "Konflikt besteht, wurde bereits angegeben." #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Nicht angebundener exec-Qualifier (%c%c) ermöglicht es einigen gefährlichen " "Umgebungsvariablen, an den unangebundenen Prozess übergeben zu werden; " "Einzelheiten mit »man 5 apparmor.d«.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Ausführungskennzeichner »%c« ist ungültig, ein Kennzeichner, mit dem ein " "Konflikt besteht, wurde bereits angegeben." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Ausführungskennzeichner »%c%c« ist ungültig, ein Kennzeichner, mit dem ein " "Konflikt besteht, wurde bereits angegeben." #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Intern: Unerwartetes Moduszeichen »%c« in der Eingabe" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Interner Fehler erzeugte ungültige Zugriffsrechte 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor-Analysefehler: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" "Einträge konnten nicht zusammengeführt werden. Kein Speicher vorhanden\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" "Profil %s: enthält zusammengeführte Regel %s mit in Konflikt stehenden x-" "Modifizierern\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "Profilanhang muss mit einem »/« beginnen." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Profilnamen müssen mit einem »/«, Namensraum oder dem Schlüsselwort " "»profile« oder »hat« beginnen." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Alias %s → %s konnte nicht erstellt werden\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" "Profil-Marker chroot_relative steht in Konflikt mit namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "Profil-Marker mediate_deleted steht in Konflikt mit delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Profil-Marker attach_disconnected steht in Konflikt mit " "no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Profil-Marker chroot_attach steht in Konflikt mit chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Profil-Marker »debug« ist nicht mehr gültig." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Ungültiger Profil-Marker: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: Für »rule« wurde NULL zurückgegeben." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Ungültiger Modus, in den Verweigernregeln darf vor »x« keiner der " "Ausführungskennzeichner »i«, »p« oder »u« stehen" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Ungültiger Modus, in Verbotsregeln muss vor »x« einer der exec-Qualifier " "»i«, »p«, »c« oder »u« stehen" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Ungültiger Modus, in Verbotsregeln muss vor »x« einer der exec-Qualifier " "»i«, »p« oder »u« stehen" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert: Für »network_rule« wurde NULL zurückgegeben." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert: Für »change_profile« wurde NULL zurückgegeben." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: Für »hat rule« wurde NULL zurückgegeben." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: Für »local_profile rule« wurde NULL zurückgegeben." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "In Bedingungssatz verwendete Boolsche-Variable »%s« deaktivieren" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "Fehlende Ausführungsrechte bei unsicherer Regel" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subset kann nur mit Link-Regeln verwendet werden." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "Verknüpfungs- und Ausführungsberechtigungen stehen in Konflikt mit einer " "Dateiregel, in der »->« verwendet wird" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "Verknüpfungsberechtigungen sind bei einem benannten Profilübergang nicht " "erlaubt.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "Fehlt ein Zeilenumbruch? (Eintrag: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Ungültiger Netzwerkeintrag." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Ungültige Fähigkeit %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "AppArmor-Analysefehler für %s%s%s in Zeile %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "AppArmor-Analysefehler,%s%s Zeile %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: Öffnen mit { ungültig, verschachtelte Gruppierungen sind nicht zulässig\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Regex-Gruppierungsfehler: Ungültige Anzahl an Einträgen zwischen {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex-Gruppierungsfehler: Ungültiges schließendes Zeichen }, kein " "passendes öffnendes Zeichen { gefunden\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex-Gruppierungsfehler: Nicht abgeschlossene Gruppierung oder " "Zeichenklasse, abschließende } erwartet\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Interner Pufferüberlauf erkannt, %d Zeichen überschritten\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Eingabezeile »%s« kann nicht analysiert werden\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "%s: Ungültiger Profilname »%s« – Fehlerhafter regulärer Ausdruck\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "FEHLER Vereinigungsregeln für Profil »%s«, Laden gescheitert\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "FEHLER Das Profil %s enthält Richtlinienelemente, die mit diesem Kernel " "nicht verwendet werden können:\n" "\t»*«, »?«, Zeichenbereiche und alternierende Sprachsetzung sind nicht " "erlaubt.\n" "\t»**« kann am Ende einer Regel verwendet werden.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "FEHLER Verarbeitung der Regexs für Profil »%s«, Laden gescheitert\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "FEHLER beim Erweitern der Variablen für Profil »%s«, Laden gescheitert\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "FEHLER Hinzufügen von »hat«-Zugriffsregel für Profil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "FEHLER in Profil %s, konnte nicht geladen werden\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Fehler bei der Nachbearbeitung. Vorgang wird abgebrochen.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Während der Nachverarbeitung der regulären Ausdrücke sind Fehler " "aufgetreten. Vorgang wird abgebrochen.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Fehler bei der Nachbearbeitung. Vorgang wird abgebrochen.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Beim Kombinieren von Regeln in der Nachverarbeitung sind Fehler " "aufgetreten. Der Vorgang wird abgebrochen.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" "Das enthaltene Verzeichnis »%s« in »%s« kann nicht verarbeitet werden" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "Funktionspuffer ist voll." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Nicht genügend Speicher!" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Pufferverzeichnis kann nicht erstellt werden: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "Datei im Pufferverzeichnisort: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Pufferverzeichnis kann nicht aktualisiert werden: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "Intern: Unerwartetes D-Bus-Moduszeichen »%c« in der Eingabe" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "Interner Fehler hat ungültige D-Bus-Zugriffsrechte 0x%x erstellt\n" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "Verweigernpräfix nicht erlaubt" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "Eigentümerpräfix nicht erlaubt" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "Eigentümerpräfix nicht bei Einhängeregeln erlauben" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "Eigentümerpräfix nicht bei D-Bus-Regeln erlauben" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "Eigentümerpräfix nicht bei Fähigkeitsregeln erlauben" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "Ungültige Einhängebedingung %s%s" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "Ungültige Einhängeregel" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "Einhängepunktbedingungen werden derzeit nicht unterstützt" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "Ungültige pivotroot-Bedingung »%s«" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" "%s: Regex-Gruppierungsfehler: Ungültiges schließendes Zeichen ], kein " "passendes öffnendes Zeichen [ gefunden\n" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" "%s: Regex-Gruppierungsfehler: maximale Verschachtelung von {} überschritten\n" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" "FEHLER beim Verarbeiten der policydb-Regeln für das Profil %s. Das Laden ist " "fehlgeschlagen.\n" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" "FEHLER beim ersetzen der Aliasse für Profil %s. Das Laden ist " "fehlgeschlagen\n" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "%s: Nicht in der Lage %s zu schreiben\n" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" "Fehler: Binär- oder Zwischenspeicherdatei kann nicht gelesen werden %s: %s.\n" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" "Fehler: Pufferdatei kann nicht gelesen werden »%s« - es wird übersprungen …\n" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "Intern: Unerwartetes %s-Moduszeichen »%c« in der Eingabe" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "Interner Fehler hat ungültige %s-Zugriffsrechte 0x%x erstellt\n" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "Eigentümerpräfix ist nicht bei Einhängeregeln erlaubt" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "Eigentümerpräfix ist nicht bei D-Bus-Regeln erlaubt" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "Eigentümerpräfix ist nicht bei Signalregeln erlaubt" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "Eigentümerpräfix ist nicht bei ptrace-Regeln erlaubt" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "Eigentümerpräfix ist nicht bei UNIX-Regeln erlaubt" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "Eigentümerpräfix ist nicht bei Fähigkeitsregeln erlaubt" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "D-Bus-Regel: ungültige Bedingungsgruppe %s=()" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "UNIX-Regel: ungültige Bedingungsgruppe %s=()" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" "%s: Fehler im regulären Ausdruck: Schrägstrich »\\« ist ein " "Ausschlusszeichen\n" apparmor-3.0.4/parser/po/en_CA.po0000664000175000017500000005111614201060045014344 0ustar jjjj# English (Canada) translation for apparmor # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:00+0000\n" "Last-Translator: AppArmor list \n" "Language-Team: English (Canada) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: en_CA\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/sq.po0000664000175000017500000005115514201060045014025 0ustar jjjj# Albanian translation for apparmor # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 23:20+0000\n" "Last-Translator: Vilson Gjeci \n" "Language-Team: Albanian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: sq\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Leja u mohua\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Nuk ka më kujtesë\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Nuk mund të hapim '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/it.po0000664000175000017500000007160314201060045014016 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2014-10-26 18:14+0000\n" "Last-Translator: Claudio Arseni \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: it\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Errore: memoria esaurita.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Errore: la directory di base %s non è una directory, ignorata.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Errore: impossibile aggiungere la directory %s al percorso di ricerca.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Errore: impossibile allocare memoria.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Posizione di scrittura errata\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permesso negato\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Memoria esaurita\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Impossibile copiare il profilo: indirizzo di memoria errato\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Il profilo non è conforme al protocollo\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Il profilo non corrisponde alla firma\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Versione del profilo non supportata dal modulo Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profilo già esistente\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profilo inesistente\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" "Permesso non consentito: tentativo di caricare un profilo con i limiti " "applicati?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Errore sconosciuto (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Impossibile aggiungere \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Impossibile sostituire \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Impossibile rimuovere \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Impossibile scrivere su stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: impossibile scrivere sul file di output\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERZIONE: opzione non valida: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Aggiunta riuscita per \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Sostituzione riuscita per \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Rimozione riuscita per \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "ATTENZIONE buffer incremento errato %p pos %p est %p dimensione %d ris %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "regole di rete del profilo %s non applicate\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Tipo di modello sconosciuto\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Impossibile aprire %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Errore di allocazione memoria: impossibile rimuovere ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Errore di allocazione memoria: impossibile rimuovere %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "impossibile creare area di lavoro\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "impossibile serializzare profilo %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: impossibile scrivere l'intera voce del profilo\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: impossibile scrivere l'intero profilo nella cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Impossibile aprire \"%s\"" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat non riuscita per \"%s\"" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir non riuscita per \"%s\"" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat non riuscita per \"%s\"" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Impossibile aprire \"%s\" in \"%s\"" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Trovato carattere imprevisto: \"%s\"" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "La dichiarazione di variabile non accetta virgole terminanti" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Trovato carattere imprevisto: \"%s\"" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Avviso da %s (%s%sriga %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: impossibile allocare memoria per il punto di montaggio base " "sottodominio\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Avviso: impossibile trovare un fs adatto in %s. È effettivamente montato?\n" "Per ignorare, utilizzare -subdomainfs.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: errore. Sono richiesti privilegi di root per eseguire questo programma.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: attenzione. È stato impostato il root setuid di questo programma.\n" "Chiunque possa eseguire questo programma può aggiornare i profili di " "AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Errore: impossibile leggere il profilo %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Errore allocazione memoria." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "Caricamento cache eseguito con successo per \"%s\".\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "Ricaricamento cache eseguito con successo per \"%s\".\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: errori individuati nel file. Interruzione.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Qualificatori maiuscoli \"RWLIMX\" obsoleti, utilizzare caratteri " "minuscoli.\n" "Per dettagli, consultare la manpage di apparmor.d(5).\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Conflitto: i permessi \"a\" e \"w\" si escludono a vicenda." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Qualificatore Exec \"i\" non valido: qualificatore in conflitto già " "specificato" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Il qualificatore Exec senza limitazioni (%c%c) consente il passaggio di " "alcune variabili d'ambiente pericolose al processo senza limitazioni; " "consultare \"man 5 apparmor.d\" per dettagli.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Qualificatore Exec \"%c\" non valido: qualificatore in conflitto già " "specificato." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Il qualificatore exec \"%c%c\" non è valido: qualificatore in conflitto è " "già specificato" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Interno: carattere modalità imprevisto \"%c\" nell'input" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Un errore interno ha generato un permesso non valido 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Errore parser AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Impossibile unire le voci: memoria esaurita\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "profilo %s: ha regole unite %s con modificatori x in conflitto\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "L'allegato profilo deve iniziare con \"/\"." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "I nomi di profili devono iniziare con \"/\", namespace o le parole chiavi " "\"profile\" o \"hat\"." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Creazione dell'alias %s -> %s non riuscita\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" "La flag del profilo chroot_relative va in conflitto con namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" "La flag mediate_deleted del profilo va in conflitto con delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "La flag attach_disconnected del profilo va in conflitto con " "no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" "La flag chroot_attach del profilo va in conflitto con chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "La flag \"debug\" del profilo non è più valida." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Flag del profilo non valida: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Asserzione: \"rule\" ha restituito NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Modalità non valida. Nelle regole di divieto \"x\" non deve essere preceduto " "dal qualificatore exec \"i\", \"p\" o \"u\"" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Modalità non valida. \"x\" deve essere preceduto dal qualificatore exec " "\"i\", \"p\", \"c\" o \"u\"" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Modalità non valida. \"x\" deve essere preceduto dal qualificatore Exec " "\"i\", \"p\" o \"u\"." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Asserzione: \"network_rule\" ha restituito un protocollo non valido." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Asserzione: \"change_profile\" ha restituito NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Asserzione: \"hat rule\" ha restituito NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Asserzione: \"local_profile rule\" ha restituito NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Variabile booleana %s non impostata usata in espressione if." #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "autorizzazioni esecuzione mancanti per regola non sicura." #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" "sottoinsieme può essere usato solamente con le regole dei collegamenti." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "le autorizzazioni link ed exec sono in conflitto con le regole definite nel " "file che utilizza ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "non è possibile usare collegamenti permanenti nella transizione del profilo " "nominato.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "un carattere di fine riga mancante? (voce: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Voce di rete non valida." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Funzionalità non valida %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "Errore di analisi di AppArmor per %s%s%s alla riga %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "Errore di analisi di AppArmor, %s%s riga %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: parantesi {di apertura non valida, annidamento raggruppamenti non " "consentito\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: errore raggruppamento regex: numero di elementi non valido tra {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: errore raggruppamento regex: parentesi } di chiusura non valida, non è " "stata individuata alcuna { aperta\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: errore raggruppamento regex: raggruppamento non chiuso o classe " "caratteri, chiusura prevista }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: individuato overflow del buffer interno, superati %d caratteri\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: impossibile analizzare la riga input \"%s\"\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" "%s: nome \"%s\" del profilo non valido - espressione regolare non corretta\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "ERRORE nell'unione delle regole per il profilo %s, caricamento non riuscito\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ERRORE: il profilo %s contiene elementi di norme non utilizzabili con questo " "kernel:\n" "\t\"*\", \"?\", intervalli di caratteri e alternanze non consentiti.\n" "\t\"**\" utilizzabili solo alla fine di una regola.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "ERRORE nell'elaborazione di regex per il profilo %s, caricamento non " "riuscito\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "ERRORE nell'espansione delle variabili per il profilo %s, caricamento non " "riuscito\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" "ERRORE durante l'aggiunta di una regola di accesso hat per il profilo %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ERRORE nel profilo %s, caricamento non riuscito\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: rilevati errori durante la post-elaborazione. Interruzione.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: individuati errori durante la post-elaborazione regex. Interruzione.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: rilevati errori durante la post-elaborazione. Interruzione.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: individuati errori durante la post-elaborazione della combinazione delle " "regole. Interruzione.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Impossibile elaborare inclusione directory \"%s\" in \"%s\"" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "Buffer feature pieno." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Memoria esaurita" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Impossibile creare la directory di cache: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "File nel percorso della directory di cache: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Impossibile aggiornare la directory di cache: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "Interno: modalità caratteri DBus \"%c\" inaspettata in ingresso" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "Un errore interno ha generato un permesso DBus non valido 0x%x\n" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "prefisso di negazione non consentito" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "prefisso proprietario non consentito" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "prefisso proprietario non consentito nelle regole di montaggio" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "prefisso proprietario non consentito nelle regole dbus" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "prefisso proprietario non consentito nelle regole di funzionalità" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "montaggio condizionale non valido %s%s" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "regola di montaggio errata" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "condizioni punti di montaggio attualmente non supportati" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "condizionale pivotroot \"%s\" non valido" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" "%s: errore raggruppamento espressione regolare: parentesi ] di chiusura non " "valida, corrispondente apertura [ non trovata\n" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" "%s: errore raggruppamento espressione regolare: superata nidificazione " "massima di {}\n" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" "ERRORE elaborazione regole policydb per il profilo %s, caricamento non " "riuscito\n" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" "ERRORE sostituzione alias per il profilo %s, caricamento non riuscito\n" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "%s: impossibile scrivere %s\n" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" "Errore: impossibile leggere il profilo binario o il file cache %s: %s.\n" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "Errore: impossibile leggere il file di cache \"%s\", saltato...\n" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "Interno: carattere %s di modalità inatteso nell'input \"%c\"" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "Un errrore interno ha generato un permesso %s non valido 0x%x\n" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "prefisso proprietario non consentito nelle regole di montaggio" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "prefisso proprietario non consentito nele regole dbus" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "prefisso proprietario non consentito nelle regole di segnale" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "prefisso proprietario non consentito nelle regole ptrace" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "prefisso proprietario non consentito nelle regole unix" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "prefisso proprietario non consentito nelle regole di capacità" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "regola dbus: gruppo condizionale %s=() non valido" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "regola unix: gruppo condizionale %s=() non valido" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "%s: errore regex: carattere di escape \"\\\" terminante\n" apparmor-3.0.4/parser/po/lt.po0000664000175000017500000005301714201060045014020 0ustar jjjj# translation of apparmor-parser.po to Lietuvių # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2002 SuSE Linux AG. # Copyright (C) 2000, 2001 SuSE GmbH. # Jonas Gocentas , 2001. # Linas Spraunius , 2000. # Andrius Å tikonas , 2006. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:03+0000\n" "Last-Translator: Andrius Å tikonas \n" "Language-Team: Lietuvių \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: lt\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Klaida: nepakanka atminties.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Klaida: nepavyksta pridÄ—ti aplanko %s į paieÅ¡kos keliÄ….\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Klaida: nepavyksta paskirstyti atminies.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Bloga raÅ¡ymo pozicija\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "PriÄ—jimas uždraustas\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Nepakanka atminties\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profilis neatitinka paraÅ¡o\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Apparmor modulis nepalaiko profilio versijos\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profilis jau egzistuoja\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profilis neegzistuoja\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Nepavyksta pridÄ—ti \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Nepavyksta pakeisti \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Nepavyksta paÅ¡alinti \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Nepavyksta raÅ¡yti į stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Nepavyksta atverti %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Rastas netikÄ—tas simbolis: „%s“" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Apgailestaujame. Kad paleistumÄ—te Å¡iÄ… programÄ…, jums reikia root " "privilegijų.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Klaida: nepavyksta nuskaityti profilio %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Atminties iÅ¡skyrimo klaida." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Faile rasta klaidų. Nutraukiama.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Nepavyksta apjungti įrašų. Nepakanka atminties\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: nepavyksta iÅ¡nagrinÄ—ti įvesties eilutÄ—s „%s“\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "KLAIDA profilyje %s, nepavyko įkelti\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/km.po0000664000175000017500000007760514201060045014021 0ustar jjjj# translation of apparmor-parser.km.po to Khmer # Khoem Sokhem , 2006, 2007, 2008. # Auk Piseth , 2006, 2007. # translation of apparmor-parser.km.po to msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:34+0000\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: km\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "កំហុស ៖ អស់​សážáž·Â áŸ”\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "កំហុស  ៖ basedir %s មិនមែន​ážážâ€‹áž¡áž¾áž™â€‹ កំពុង​រំលង ។\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "កំហុស​ ៖ មិន​អាច​បន្ážáŸ‚ម​ážážâ€‹ %s ដើម្បី​ស្វែងរក​ផ្លូវ​បាន​ឡើយ​ ។\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "កំហុស​ ៖ មិន​អាច​បម្រុង​សážáž·â€‹áž‘ុក​​ ។\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "ទីážáž¶áŸ†áž„​សរសáŸážšâ€‹ážáž¼áž…\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "សិទ្ធិ​ážáŸ’រូវ​បាន​បដិសáŸáž’\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "អស់​សážáž·\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "ទម្រង់​មិន​អះអាង​ទៅ​ពិធីការ\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "ទម្រង់​មិន​ផ្គូផ្គង​ហážáŸ’ážáž›áŸážáž¶\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "ទម្រង់កំណែ​​មិន​ážáŸ’រូវ​បាន​គាំទ្រ​ដោ​យ​ម៉ូឌុល​ Apparmor ឡើយ\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "ទម្រង់​មាន​រួច​ហើយ\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "មិន​មាន​ទម្រង់​ឡើយ\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s ៖ មិន​អាច​បន្ážáŸ‚ម \"%s\" ។ " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s ៖ មិន​អាច​ជំនួស \"%s\" ។ " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s ៖ មិន​អាច​យក \"%s\" áž…áŸáž‰Â áŸ” " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s ៖ មិន​អាច​សរសáŸážšâ€‹áž‘ៅ stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s ៖ ASSERT ៖ ជម្រើស​មិន​ážáŸ’រឹមážáŸ’រូវ ៖ %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "ការ​បន្ážáŸ‚ម​បាន​ជោគជáŸáž™â€‹ážŸáž˜áŸ’រាប់ \"%s\" ។\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "ការ​ជំនួស​បាន​ជោគជáŸáž™â€‹ážŸáž˜áŸ’រាប់ \"%s\" ។\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "ការ​យក​ចáŸáž‰â€‹áž”ាន​ជោគជáŸáž™â€‹ážŸáž˜áŸ’រាប់ \"%s\" ។\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "មិន​អាច​បើក %s - %s បានឡើយ\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "កំហុស​ក្នុង​កា​របម្រុងទុក​សážáž·Â áŸ– មិន​អាច​យក ^%s áž…áŸáž‰\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "កំហុស​ក្នុង​កា​របម្រុង​ទុក​សážáž·Â áŸ– មិន​អាច​យក %s:%s ។" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "មិន​អាច​បង្កើážâ€‹ážáŸ†áž”ន់​ធ្វើការ\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "មិន​អាច​កំណážáŸ‹â€‹áž‘ម្រង់ %s ជា​ស៊áŸážšáž¸â€‹áž”ាន​ឡើយ\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s ៖ មិន​អាច​សរសáŸážšáž’áž¶ážáž»â€‹áž‘ម្រង់​ទាំង​មូល\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "រក​ឃើញ​ážáž½áž¢áž€áŸ’សរ​ដែល​មិន​រំពឹង ៖ '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) រក​ឃើញ​ážáž½áž¢áž€áŸ’សរ​ដែល​មិន​រំពឹង​ទុក ៖ '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s ៖ មិន​អាច​បម្រុង​ទុក​សážáž·â€‹ážŸáž˜áŸ’រាប់​ចំណុច​ម៉ោនមូលដ្ឋាន​ដែនរង\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "ការ​ព្រមាន ៖ មិន​អាច​រក​ fs ដែល​សមរម្យ​នៅ​ក្នុង %s " "ážáž¾â€‹ážœáž¶â€‹ážáŸ’រូវ​បាន​ម៉ោន​ហើយ​ឬនៅ ?\n" "ប្រើ --subdomainfs ដើម្បី​បដិសáŸáž’ ។\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s ៖ សូម​ទោស ។ អ្នក​ážáŸ’រូវ​ការ​សិទ្ធិ​ជា root ដើម្បី​រážáŸ‹â€‹áž€áž˜áŸ’មវិធី​នáŸáŸ‡Â áŸ”\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s ៖ ​ព្រមាន ! អ្នក​បាន​កំណážáŸ‹â€‹áž€áž˜áŸ’មវិធី​នáŸáŸ‡áž‡áž¶ setuid root ។\n" "អ្នក​ដែល​រážáŸ‹â€‹áž€áž˜áŸ’មវិធី​នáŸáŸ‡ អាច​ធ្វើ​ឲ្យ​ទម្រង់ AppArmor " "​របស់​អ្នក​ទាន់​សមáŸáž™Â áŸ”\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "កំហុស ៖ មិនអាច​អាន​ទម្រង់ %s: %s ។\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "កំហុស​បម្រុង​ទុក​សážáž·Â áŸ”" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s ៖ រក​ឃើញ​កំហុស​ក្នុង​ឯកសារ ។ បោះបង់ ។\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "ឧបករណáŸâ€‹â€‹áž”ញ្ជាក់​​គុណលក្ážážŽáŸˆáž¢áž€áŸ’សរ​​​ធំ​ \"RWLIMX\" ážáŸ’រូវ​បាន​បរិយាយ​ " "សូម​បម្លែង​វា​ទៅ​ជា​អក្សរ​ážáž¼áž…​វិញ​មើល​សáŸáž…ក្ដី​លម្អិážâ€‹â€‹áž€áŸ’នុងទំពáŸážšâ€‹áž˜áŸâ€‹ážšáž”ស់​​ " "apparmor.d (៥​)  ​។\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "ប៉ះទង្កិច 'a' និង 'w' ដក​ចáŸáž‰â€‹ážŠáŸ„យ​ដៃ ។" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec qualifier 'i' មិន​ážáŸ’រឹមážáŸ’រូវ​ឡើយ, qualifier " "ដែល​ប៉ះទង្គិច​ážáŸ’រូវ​បាន​បញ្ជាក់​រួច​ហើយ" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "មិន​បាន​​មានការ​បង្ážáŸ† exec ដែល​មាន​គុណភាព​ (%c%c) " "áž–áŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž¢áž“ុញ្ញាážâ€‹áž²áŸ’យមាន​​អážáŸážšáž”រិស្ážáž¶áž“​គ្រោះ​ážáŸ’នាក់​មួយ​ចំនួន​​ឆ្លង​កាáž" "់​ដំណើរការ​ដែល​គ្មាន​ការ​បង្ážáŸ†â€‹ážŠáŸ„យ​ 'man ៥ apparmor.d'  ។\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Exec qualifier '%c' មិន​ážáŸ’រឹមážáŸ’រុវ ការ​ប៉ះទង្គិច​ qualifier already specified" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Exec qualifier '%c%c' មិន​ážáŸ’រឹមážáŸ’រូវ កា​រប៉ះទង្គិច​បាន​បញ្ជាក់​រួច​ហើយ" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "ážáž¶áž„​ក្នុង ៖ ážáž½áž¢áž€áŸ’សរ​របៀប​ដែល​មិន​រំពឹង '%c' ក្នុង​ពáŸážáŸŒáž˜áž¶áž“​បញ្ចូល" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "កំហុស​ážáž¶áž„​ក្នុង​បាន​បង្កើážâ€‹ perm មិន​ážáŸ’រឹមážáŸ’រូវ 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "កំហុស​ឧបករណáŸâ€‹áž‰áŸ‚ក AppArmor ៖ %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "áž’áž¶ážáž»â€‹áž˜áž·áž“​អាច​បញ្ចូល​ចូល​គ្នា​បាន​ឡើយ​ ។ អស់​សážáž·\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​កា​របង្កើážâ€‹ážˆáŸ’មោះ​ក្លែងក្លាយ %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "ទង់​ážáž˜áŸ’រង់ 'បំបាážáŸ‹â€‹áž€áŸ†áž áž»ážŸ' មិន​ážáŸ’រឹមážáŸ’រូវ​ទៀážáž‘áŸÂ áŸ”" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "ទង់​ទម្រង់​មិន​ážáŸ’រឹមážáŸ’រូវ ៖ %s ។" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "អះអាង ៖ `ច្បាប់' បាន​ážáŸ’រឡប់ NULL ។" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "របៀប​មិន​ážáŸ’រឹមážáŸ’រូវ 'x' មិន​ážáŸ’រូវ​​បន្ážâ€‹ážŠáŸ„áž™ exec qualifier 'i' 'u' ឬ 'p'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "របៀប​មិន​ážáŸ’រឹមážáŸ’រូវ, 'x' ážáŸ’រូវ​ážáŸ‚​បន្ážâ€‹ážŠáŸ„áž™ exec qualifier 'i', 'u' ឬ 'p'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "របៀប​មិន​ážáŸ’រឹមážáŸ’រូវ, 'x' ážáŸ’រូវ​ážáŸ‚​បន្ážâ€‹ážŠáŸ„áž™ exec qualifier 'i', 'u' ឬ 'p'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "អះអាង ៖ `network_rule' ážáŸ’រឡប់​ពិធីការ​មិន​ážáŸ’រឹមážáŸ’រូវ ។" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "អះអាង ៖ `change_profile' ážáŸ’រឡប់ NULL ។" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "អះអាង ៖ 'ច្បាប់ hat' បាន​ážáŸ’រឡប់ NULL ។" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "អះអាង ៖ 'local_profile rule' returned NULL ។" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "អážáŸážšâ€‹áž”៊ូលីន​មិន​កំណážáŸ‹ %s បាន​ប្រើ​ក្នុង​កន្សោម if" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "unsafe rule missing exec permissions" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "សំណុំ​រង​អាច​ážáŸ’រូវ​បាន​ប្រើ​ážáŸ‚​ជា​មួយ​ច្បាប់​ážáŸ†ážŽâ€‹áž”៉ុណ្ណោះ ។" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "ážáŸ†ážŽ និង exec perms ប៉ះទង្គិច​​ច្បាប់​ឯកសារ ដោយ​ប្រើ ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "ážáŸ†ážŽ perms " "មិន​ážáŸ’រូវ​បាន​អនុញ្ញាážâ€‹áž“ៅ​លើ​​ដំណើរការ​ផ្លាស់ប្ដូរ​ទម្រង់​ដែល​មានឈ្មោះ ។\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "បាážáŸ‹â€‹ážáž½áž¢áž€áŸ’សរ​ចុង​បន្ទាážáŸ‹â€‹áž˜áž½áž™áž¬Â ? (áž’áž¶ážáž»Â áŸ– %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "áž’áž¶ážáž»â€‹áž”ណ្ដាញ​មិន​ážáŸ’រឹមážáŸ’រូវ ។" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "សមážáŸ’ážáž—ាព​មិន​ážáŸ’រឹមážáŸ’រូវ %s ។" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s ៖ ការ​បើក​មិន​ážáŸ’រឹមážáŸ’រូវ {, ការ​ដាក់​ជា​ក្រុម​ក្នុង​មិន​បាន​អនុញ្ញាáž\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s ៖ កំហុស​ការ​ដាក់​កន្សោម​ធម្មážáž¶â€‹áž‡áž¶â€‹áž€áŸ’រុម ៖ " "ចំនួន​ធាážáž»â€‹áž˜áž·áž“​ážáŸ’រឹមážáŸ’រូវ​ចន្លោះ {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s ៖ កំហុស​ការ​ដាក់​កន្សោម​ធម្មážáž¶â€‹áž‡áž¶áž€áŸ’រុម ៖ បិទ​មិន​ážáŸ’រឹមážáŸ’រូវ } " "មិន​ផ្គូផ្គង​នឹង​ការ​បើក { ដែល​បាន​រក​ឃើញ\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s ៖ Regex កំហុស​ការ​ដាក់​ជា​ក្រុម ៖ ការ​ដាក់​ជា​ក្រុម​ដែល​បាន​បិទ " "ឬ​ážáŸ’នាក់​ážáž½áž¢áž€áŸ’សរ រំពឹង​ážáž¶â€‹áž”áž·áž‘ }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s ៖ បាន​រកឃើញ​សážáž·â€‹áž”ណ្ដោះ​អាសន្ន​ážáž¶áž„​ក្នុង​លើស​ចំណុះ បាន​លើសážáž½áž¢áž€áŸ’សរ %d\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s ៖ មិន​អាច​ញែក​បន្ទាážáŸ‹â€‹áž”ញ្ចូល '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "កំហុស​ក្នុង​ការ​បញ្ចូល​ក្បួន​ចូល​គ្នា​សម្រាប់​ទម្រង់ %s " "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ផ្ទុក\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "កំហុស​ទម្រង់ %s មាន​ធាážáž»â€‹áž‚ោល​នយោបាយដែល​មិន​អាច​ប្រើ​ជា​មួយ​នឹង​ážážºážŽáŸ‚ល​នáŸáŸ‡Â áŸ–\n" "\t'*', '?', ជួរ​ážáž½áž¢áž€áŸ’សរ និង​ការ​ជំនួស​មិន​ážáŸ’រូវ​បាន​អនុញ្ញាážÂ áŸ”\n" "\t'**' អាច​ážáŸ’រូវ​បាន​ប្រើ​ážáŸ‚​នៅ​ចុង​ក្បួន​ážáŸ‚​ប៉ុណ្ណោះ ។\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "កំហុស​ក្នុង​ការ​ចូល​ដំណើរការ regexs សម្រាប់​ទម្រង់ %s " "បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ផ្ទុក\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "កំហុស ពង្រីក​អážáŸážšâ€‹ážŸáž˜áŸ’រាប់​ទម្រង់ %s បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​​​ការ​ផ្ទុក\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "កំហុស​ក្នុង​​បន្ážáŸ‚ម​ច្បាប់​​ចូលដំណើរការ hat សម្រាប់​ទម្រង់ %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "កំហុស​ក្នុង​ទម្រង់ %s បាន​បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ផ្ទុក\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s ៖ មាន​​កំហុស​កំឡុង​ពáŸáž›â€‹ážŠáŸ†ážŽáž¾ážšáž€áž¶ážšâ€‹áž”ន្ទាប់ ។ បោះបង់ ។\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s ៖ មាន​កំហុស​កំឡុង​ពáŸáž›â€‹ážŠáŸ†ážŽáž¾ážšâ€‹áž€áž¶ážš regex ជា​មុន ។ បោះបង់ ។\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s ៖ មាន​កំហុស​កំឡុង​ពáŸáž›â€‹ážŠáŸ†ážŽáž¾ážšáž€áž¶ážšâ€‹áž”ន្ទាប់ ។ បោះបង់ ។\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s ៖ រក​ឃើញ​កំហុស​ក្នុង​ច្បាប់​បន្សំ​ដំណើរការ​ជា​មុន ។ បោះបង់ ។\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ru.po0000664000175000017500000007601614201060045014033 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2016-03-29 14:53+0000\n" "Last-Translator: Eugene Roskin \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ru\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Ошибка: ÐедоÑтаточно памÑти.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Ошибка: базовый каталог %s не ÑвлÑетÑÑ ÐºÐ°Ñ‚Ð°Ð»Ð¾Ð³Ð¾Ð¼, пропуÑкаетÑÑ.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Ошибка: не удалоÑÑŒ добавить каталог %s в путь поиÑка.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Ошибка: не удалоÑÑŒ выделить памÑть\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Ðеверное положение запиÑи\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "ДоÑтуп запрещен\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "ÐедоÑтаточно памÑти\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Ðевозможно Ñкопировать профиль: ÐедопуÑтимый Ð°Ð´Ñ€ÐµÑ Ð¿Ð°Ð¼Ñти\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Профиль не ÑоответÑтвует протоколу\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Профиль не ÑоответÑтвует подпиÑи\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "ВерÑÐ¸Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð½Ðµ поддерживаетÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Профиль уже ÑущеÑтвует\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Профиль не ÑущеÑтвует\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "Ðет доÑтупа; попытатьÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¸Ñ‚ÑŒ профиль Ñ ÑƒÑ‡Ñ‘Ñ‚Ð¾Ð¼ ограничений?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Ðевозможно добавить \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Ðевозможно заменить \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Ðевозможно удалить \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Ðевозможно запиÑать в stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Ðевозможно запиÑать вывод в файл\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ПРЕДУПРЕЖДЕÐИЕ: ÐедопуÑтимый параметр: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Дополнение уÑпешно выполнено Ð´Ð»Ñ \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Замена Ð´Ð»Ñ \"%s\" выполнена.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Удаление Ð´Ð»Ñ \"%s\" выполнено.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "ТРЕВОГÐ! неправильный инкрементный буфер %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "Сетевые правила, указанные в профиле %s не применÑÑŽÑ‚ÑÑ\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "ÐедопуÑтимый тип шаблона\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Ðевозможно открыть %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти: невозможно удалить ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти: невозможно удалить %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "невозможно Ñоздать рабочую облаÑть\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "невозможно Ñеарилизировать профиль %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Ðевозможно запиÑать запиÑÑŒ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ñ†ÐµÐ»Ð¸ÐºÐ¾Ð¼\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Ðевозможно запиÑать во временные файлы вÑе запиÑи профилÑ\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Ðевозможно открыть '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat не выполнен Ð´Ð»Ñ '%s'" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir не выполнен Ð´Ð»Ñ '%s'" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat не выполнен Ð´Ð»Ñ '%s'" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Ðевозможно открыть '%s' в '%s'" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Ðайден непредвиденный знак: \"%s\"" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "Ð’ определении переменных недопуÑтимы завершающие точки" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Ðайден непредвиденный знак: \"%s\"" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Предупреждение от %s (%s%sÑтрока %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: невозможно выделить памÑть Ð´Ð»Ñ Ñ‚Ð¾Ñ‡ÐºÐ¸ Ð¼Ð¾Ð½Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ поддомена\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Предупреждение: не удалоÑÑŒ найти подходÑщий fs в %s; Ñмонтирован?\n" "Чтобы переопределить, иÑпользуйте поддомены.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Извините. Ð”Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Ñтой программы необходимы права админиÑтратора.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Предупреждение! Ð”Ð»Ñ Ñтой программы задан идентификатор Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ " "root.\n" "Любой пользователь, запуÑтивший Ñту программу, Ñможет обновить ваши профили " "AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Ошибка: не удалоÑÑŒ прочитать профиль %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Ошибка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼Ñти." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Обнаружены ошибки в файле. Прерываем.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Ключи в верхнем региÑтре \"RWLIMX\" иÑключены; выполните преобразование к " "нижнему региÑтру\n" "Подробнее Ñм. на Ñтр. руководÑтва apparmor.d(5).\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Конфликт взаимоиÑключающих разрешений \"a\" и \"w\"." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "ÐедопуÑтимый ключ запуÑка \"i\", уже задан конфликтующий ключ" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Ключ неограниченного Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ (%c%c) разрешает передавать опаÑные " "переменные Ñреды в неограниченный процеÑÑ. Подробнее Ñм. \"man 5 " "apparmor.d\".\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "ÐедопуÑтимый ключ запуÑка \"%c\", уже задан конфликтующий ключ" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "ÐедопуÑтимый Ñпецификатор запуÑка '%c%c', уже определён конфликтующий " "Ñпецификатор" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "ВнутреннÑÑ Ð¾ÑˆÐ¸Ð±ÐºÐ°: непредвиденный знак \"%c\" при вводе" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Ðеверное разрешение 0x%llx вызвало внутреннюю ошибку\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Ошибка анализатора AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Ðевозможно объединить запиÑи. Ðе хватает памÑти\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "Вложение Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ Ð´Ð¾Ð»Ð¶Ð½Ð¾ начинатьÑÑ Ñ '/'." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Имена профилей должны начинатьÑÑ Ñ a '/', проÑтранÑтва имён или ключевого " "Ñлова 'profile' или 'hat'." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Ðе удалоÑÑŒ Ñоздать пÑевдоним %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "Флаг Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ chroot_relative конфликтует Ñ namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "Флаг Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ mediate_deleted конфликтует Ñ delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Флаг Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ attach_disconnected конфликтует Ñ no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Флаг Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ chroot_attach conflicts Ñ chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Флаг Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ 'debug' больше не иÑпользуетÑÑ." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "ÐедопуÑтимый флаг профилÑ: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Предупреждение: \"rule\" возвращает NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "ÐедопуÑтимый режим, в правилах Ð·Ð°Ð¿Ñ€ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ´ 'x' не должен ÑтоÑть ключ " "запуÑка 'i', 'p' или 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "ÐедопуÑтимый режим, перед 'x' должен ÑтоÑть ключ запуÑка 'i', 'p', 'c' или " "'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "ÐедопуÑтимый режим, перед \"x\" должен находитьÑÑ ÐºÐ»ÑŽÑ‡ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ \"i\", " "\"p\" или \"u\"" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Предупреждение: \"network_rule\" возвращает недопуÑтимый протокол." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Предупреждение: \"change_profile\" возвращает NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Предупреждение: \"hat rule\" возвращает NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Предупреждение: 'local_profile rule' возвратило NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Ð’ выражении IF иÑпользуетÑÑ Ð½ÐµÐ·Ð°Ð´Ð°Ð½Ð½Ð°Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ %s" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "в правиле небезопаÑных отÑутÑтвуют Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° выполнениÑ" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "подмножеÑтво может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ð¼Ð¸ ÑвÑзи." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° выполнение и ÑвÑзь конфликтуют Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð¾Ð¼ файла, иÑпользующим -" ">" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° ÑвÑзь не допуÑкаютÑÑ Ð¿Ñ€Ð¸ перемещении именованного профилÑ.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "отÑутÑтвует знак конца Ñтроки? (запиÑÑŒ: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑÐµÑ‚ÐµÐ²Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñть %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "Ошибка анализатора AppArmor,%s%s в Ñтроке %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Ðеверное открытие {, Ð²Ð»Ð¾Ð¶ÐµÐ½Ð½Ð°Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¸Ñ€Ð¾Ð²ÐºÐ¸ не допуÑкаютÑÑ\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Ошибка группировки Regex: Ðеверное чиÑло объектов между {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Ошибка группировки Regex: Ðеверное закрытие }, обнаружено что нет " "ÑоответÑтвующего Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð¸Ñ {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: ошибка группировки Regex. Ðе закрыта группировка или клаÑÑ Ð·Ð½Ð°ÐºÐ¾Ð²; " "ожидаетÑÑ Ð·Ð°ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ñкобка }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Обнаружено переполнение внутреннего буфера, лишние %d знаков\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: невозможно обработать Ñтроку ввода \"%s\"\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" "%s: ÐедопуÑтимое Ð¸Ð¼Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ '%s' - неправильное регулÑрное выражение\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "ОШИБКРпри объединении правил Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ %s, не удалоÑÑŒ загрузить\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ОШИБКÐ: профиль %s Ñодержит Ñлементы политики, неподходÑщие Ð´Ð»Ñ Ñтого Ñдра:\n" "\t\"*\", \"?\", диапазоны знаков и Ñ‡ÐµÑ€ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ допуÑкаютÑÑ.\n" "\t\"**\" может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в конце правила.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "ОШИБКРпри обработке регулÑрных выражений Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ %s; не удалоÑÑŒ " "загрузить\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "Ошибка при развертывании переменных Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ %s; не удалоÑÑŒ загрузить\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "ОШИБКРпри добавлении правила доÑтупа к HAT Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ„Ð¸Ð»Ñ %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ОШИБКРв профиле %s, не удалоÑÑŒ загрузить\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Обнаружены ошибки во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñтобработки. Прекращение работы.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: обнаружены ошибки при заключительной обработке регулÑрного выражениÑ. " "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°ÐµÑ‚ÑÑ.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Обнаружены ошибки во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ñтобработки. Прекращение работы.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: обнаружены ошибки при заключительной обработке Ð¾Ð±ÑŠÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð». " "ÐžÐ¿ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÑ€Ñ‹Ð²Ð°ÐµÑ‚ÑÑ.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Ðевозможно выполнить включение каталога '%s' в '%s'" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "ÐедоÑтаточно памÑти" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Ðевозможно Ñоздать временный каталог: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "РаÑположение файла во временном каталоге: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Ðевозможно обновить временный каталог: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑŒÑ†Ð° не разрешён" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "%s: Ðевозможно запиÑать %s\n" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" "Ошибка: невозможно прочитать двоичный профиль или временный файл %s: %s.\n" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "Ошибка: невозможно прочитать временный файл '%s', пропуÑк...\n" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/bn.po0000664000175000017500000005735114201060045014005 0ustar jjjjmsgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 01:37+0000\n" "Last-Translator: Priyavert \n" "Language-Team: AgreeYa Solutions \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: bn\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "লেখার খারাপ অবসà§à¦¥à¦¾à¦¨\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "অনà§à¦®à¦¤à¦¿ অসà§à¦¬à§€à¦•ার করা হয়েছে\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "সà§à¦®à§ƒà¦¤à¦¿ পরিপূরà§à¦£\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "পà§à¦°à§‹à¦«à¦¾à¦‡à¦² পà§à¦°à§‹à¦Ÿà§‹à¦•ল মেনে চলে না\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "পà§à¦°à§‹à¦«à¦¾à¦‡à¦² সà§à¦¬à¦¾à¦•à§à¦·à¦°à§‡à¦° সাথে মেলে না\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "পà§à¦°à§‹à¦«à¦¾à¦‡à¦² ইতোমধà§à¦¯à§‡à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à§‡à¦° অসà§à¦¤à¦¿à¦¤à§à¦¬ নেই\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" যোগ করতে পারে নি। " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ করতে পারে নি। " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" অপসারণ করতে পারে নি। " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdout ঠলিখতে অকà§à¦·à¦®\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: অবৈধ বিকলà§à¦ª: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\" à¦à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡ যোগ করা সফল হয়েছে।\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\" à¦à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ সফল হয়েছে।\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\"à¦à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡ অপসারণ সফল হয়েছে।\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC খারাপ ইনকà§à¦°à¦¿à¦®à§‡à¦¨à§à¦Ÿ বাফার %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s খà§à¦²à¦¤à§‡ পারে নি - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "কাজের à¦à¦²à¦¾à¦•া তৈরি করতে পারে নি\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "%s পà§à¦°à§‹à¦«à¦¾à¦‡à¦² কà§à¦°à¦®à¦¿à¦• করতে পারে নি\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: সমগà§à¦° পà§à¦°à§‹à¦«à¦¾à¦‡à¦² à¦à¦¨à¦Ÿà§à¦°à¦¿ লিখতে অকà§à¦·à¦®\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "অপà§à¦°à¦¤à§à¦¯à¦¾à¦¶à¦¿à¦¤ অকà§à¦·à¦° পাওয়া গেছে: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: সাবডোমেনবেস মাউনà§à¦Ÿ পয়েনà§à¦Ÿà§‡à¦° জনà§à¦¯à§‡ সà§à¦®à§ƒà¦¤à¦¿ বনà§à¦Ÿà¦¨ করতে পারে নি\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "সà§à¦®à§ƒà¦¤à¦¿ বনà§à¦Ÿà¦¨à§‡ তà§à¦°à§à¦Ÿà¦¿à¥¤" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: ফাইলে তà§à¦°à§à¦Ÿà¦¿ পাওয়া গেছে। বাতিল করছে।\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "Exec কোয়ালিফায়ার 'i' অবৈধ, বিবাদমান কোয়ালিফায়ার ইতোমধà§à¦¯à§‡à¦‡ বিদà§à¦¯à¦®à¦¾à¦¨" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "à¦à¦¨à¦Ÿà§à¦°à¦¿à¦—à§à¦²à¦¿ à¦à¦•ীভূত করতে পারে নি।সà§à¦®à§ƒà¦¤à¦¿ পরিপূরà§à¦£\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "দৃৠঘোষণা: `rule' NULL ফেরত পাঠিয়েছে।" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "দৃৠঘোষণা: `hat rule' NULL ফেরত পাঠিয়েছে।" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "লাইন সমাপà§à¦¤à¦¿à¦° অকà§à¦·à¦° অনà§à¦ªà¦¸à§à¦¥à¦¿à¦¤? (à¦à¦¨à¦Ÿà§à¦°à¦¿: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: অবৈধ খোলা {, নেসà§à¦Ÿà¦¿à¦‚ গà§à¦°à§à¦ªà¦¿à¦‚য়ের অনà§à¦®à¦¤à¦¿ নেই\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex দলবদà§à¦§à¦•রণের তà§à¦°à§à¦Ÿà¦¿: {} à¦à¦° মধà§à¦¯à§‡ অবৈধ সংখà§à¦¯à¦• বসà§à¦¤à§\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex দলবদà§à¦§à¦•রণের তà§à¦°à§à¦Ÿà¦¿: অবৈধ বনà§à¦§ }, কোন মিলযà§à¦•à§à¦¤ খোলা{ পাওয়া যায় নি\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: অভà§à¦¯à¦¨à§à¦¤à¦°à§€à¦£ বাফার অতিপà§à¦°à¦¬à¦¾à¦¹à§‡à¦° সনà§à¦§à¦¾à¦¨ পাওয়া গেছে, %d গà§à¦²à¦¿ অকà§à¦·à¦° বেশি\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: ইনপà§à¦Ÿ ফাইল '%s' পারà§à¦¸ করতে অকà§à¦·à¦®\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "%s পà§à¦°à§‹à¦«à¦¾à¦‡à¦²à§‡ তà§à¦°à§à¦Ÿà¦¿ আছে, চালাতে বà§à¦¯à¦°à§à¦¥ হয়েছে\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: পোসà§à¦Ÿà¦ªà§à¦°à¦¸à§‡à¦¸à¦¿à¦‚ নিয়মাবলী à¦à¦•ীভূত করায় তà§à¦°à§à¦Ÿà¦¿ পাওয়া গেছে। বাতিল করছে।\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/sl.po0000664000175000017500000005074114201060045014020 0ustar jjjj# translation of sl_SI.po to SlovenÅ¡Äina # translation of sl_SI.po to SlovenÅ¡?ina # Janez Krek , 2005. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:00+0000\n" "Last-Translator: Janez Krek \n" "Language-Team: SlovenÅ¡Äina \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: sl\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ro.po0000664000175000017500000006620514201060045014024 0ustar jjjj# translation of apparmor-parser.ro.po to # Romanian message file for YaST2 (@memory@). # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2003 SuSE Linux AG. # # Stanciu-Lixandru Alec , 2007. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2020-02-21 19:30+0000\n" "Last-Translator: Daniel Slavu \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2020-02-22 05:41+0000\n" "X-Generator: Launchpad (build 19413b719a8df7423ab1390528edadce9e0e4aca)\n" "Language: ro\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Eroare: Memorie insuficientă.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Eroare: basedir %s nu este un director, trec peste.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Eroare: Nu pot adăuga directorul %s la calea de căutare.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Eroare: nu pot aloca memorie.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "PoziÈ›ie de scriere incorectă\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permisiune respinsă\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Memorie insuficientă\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Nu s-a putut copia profilul: Adresă de memorie necorespunzătoare\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profilul nu corespunde protocolului\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profilul nu corespunde cu semnătura\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Versiunea profilului nu este suportatp de modulul Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profilul există deja\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profilul nu există\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" "Acces refuzat; aÈ›i încercat să încărcaÈ›i un profil în timp ce sunteÈ›i " "limitat?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Eroare necunoscută (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Nu pot adăuga \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Nu pot înlocui \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Nu pot îndepărta \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Nu pot scrie la stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Imposibil de scris în fiÈ™ierul de ieÈ™ire\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: OpÈ›iune invalidă: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Adăugarea s-a efectuat pentru \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "ÃŽnlocuirea s-a efectuat pentru \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Ștergerea s-a efectuat pentru \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANICÄ‚ incrementare greÈ™ită buffer %p pos %p ext %p dimensiune %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "profilul %s regulile de reÈ›ea nu sunt aplicate\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Tip de model necunoscut\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Nu pot deschide %s -%s\n" # ############################################################################### # Old yast2-agents.po #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Eroare la alocarea memoriei: Nu pot È™terge ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Eroare la alocarea memoriei: Nu pot È™terge %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "nu pot crea spaÈ›iul de lucru\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "nu pot serializa profilul %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: No pot scrie intregul profil\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Nu se poate scrie intrarea întregului profil în memoria cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Nu poate fi deschis '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat a eÈ™uat pentru '%s'" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir a eÈ™uat '%s'" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat a eÈ™uat pentru '%s'" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Nu s-a putut deschide '%s' în '%s'" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Am găsit un caracter neaÈ™teptat: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "DeclaraÈ›iile variabile nu acceptă virgule" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Am găsit un caracter neaÈ™teptat: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Avertisment din %s (%s%slinie %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: Nu pot aloca memorie pentru punctul de montare subdomainbase\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "AtenÈ›ie: nu pot găsi un fs potrivit în %s, este montat?\n" "FolosiÈ›i -subdomainfs pentru a forÈ›a.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: ÃŽmi pare rău. AveÈ›i nevoie de privilegii root pentru a rula acest " "program.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: AtenÈ›ie! AÈ›i setat setuid root pentru acest program.\n" "Oricine poate rula acest program poate face update la profilul dvs. " "AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Eroare: Nu pot citi profilul %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Eroare la alocarea memoriei." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "ÃŽncărcarea în cache a reuÈ™it \"%s\".\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "Reîncărcarea în cache a reuÈ™it \"%s\".\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Am găsit erori în fiÈ™ier. Abandonez.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Specificatori cu litere mari \"RWLIMX\" sunt depășiÈ›i, vă rog convertiÈ›i la " "litere mici\n" "VedeÈ›i manpage apparmor.d(5) pentru amănunte.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Conflict 'a' È™i 'w' perms se exclud reciproc." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Specificatorul exec 'i' este invalid, specificatorul conflictual este deja " "definit" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Calificatorul de execuÈ›ie neconfigurat (%c%c) permite trecerea unor " "variabile de mediu periculoase la procesul neconfigurat; 'man 5 apparmor.d' " "pentru detalii.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Specificatorul exec '%c' este invalid, a fost deja declarat un asemenea " "specificator" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Specificatorul exec '%c%c' este invalid, a fost deja declarat un asemenea " "specificator" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Intern: '%c' este un caracter neaÈ™teptat la intrare" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "O eroare internă a generat permutarea invalidă 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Eroare în parser-ul AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Nu am putut uni intrările. Memorie insuficientă\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "profilul %s: a combinat regula %s cu modificatorii x în conflict\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "AtaÈ™amentul la profil trebuie să înceapă cu a '/'." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Numele profilului trebuie să înceapă cu un '/', spaÈ›iu de nume sau cuvinte " "cheie 'profile' sau 'hat'." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Nu am putut crea aliasul %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" "Indicatorul profilului chroot_relative intră în conflict cu " "relativul_spaÈ›iului de nume" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" "Indicatorul profilului mediază_È™tergerea conflictelor cu delegatul_È™ters" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Indicatorul profilului ataÈ™aÈ›i_deconectarea conflictelor cu " "nu_ataÈ™a_deconectat" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Indicatorul profilului chroot_attach în conflict cu chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Indicatorul 'debug' nu mai este valabil pentru profil." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Indicator de profil invalid: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "AserÈ›iune: `regula' a întors NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Mod invalid, în regulile de interzicere 'x' nu trebuie precedat de " "specificatorul exec 'i', 'p' sau 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Mod invalid, 'x' trebuie să fie precedat de specificatorul exec 'i', 'p', " "'c' sau 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Mod invalid, 'x' trebuie precedat de specificatorul exec 'i', 'p' sau 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Ase_rÈ›iune: `regula de reÈ›ea' a întors un protocol invalid." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "AseÈ›iune: `change_profile' a întors NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Afirma: 'hat rule' returnat NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "AserÈ›iune: `regulă _profil local' a întors NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" "Variabila booleană neiniÈ›ializată %s este folosită într-o instrucÈ›iune if" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "regulă nesigură fără permisiuni de execuÈ›ie" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subsetul poate fi utilizat doar cu reguli de legătură." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "conectează È™i execută conflictul de perms pe o regulă de fiÈ™ier folosind ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "legătura de perms nu sunt permise pe o tranziÈ›ie de profil numită.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "lipseÈ™te un caracter de sfârÈ™it de linie? (intrare: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Intrare de reÈ›ea nevalidă." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Capabilitate invalidă: %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "Eroare analizor AppArmor pentru %s%s%s la linie %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "Eroare analizor AppArmor,%s%s linia %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: Paranteză { ilegală, nu sunt permise mai multe nivele de grupare\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Eroare de grupare în expresia regulată: Număr invalid de intrări între " "{}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Eroare de grupare în expresia regulată: Paranteză închisă } invalidă, nu " "există nicio paranteză deschisă echivalentă\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Eroare de grupare în expresia regulată: Grupare sau clasă neterminată, " "mă aÈ™teptam la }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Am detectat o depășire a buffer-ului intern cu %d caractere\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Nu pot parsa linia '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "%s: Nume de profil nevalid '%s' - expresie regulată proastă\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "EROARE la unirea regulilor pentru profilul %s, nu am putut încărca\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "EROARE profilul %s conÈ›ine elemente de politică ce nu pot fi utilizate cu " "acest kernel:\n" "\t'*','?', intervale de caractere È™i alternări nu sunt permise.\n" "\t'**' poate fi folosit doar la sfârÈ™itul unei reguli.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "EROARE la procesarea expresiilor regulate pentru profilul %s, încărcarea a " "eÈ™uat\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "EROARE la citirea variabilelor pentru profilul %s, nu am putut încărca\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "EROARE adăugând pălărie la regula de acces pentru profil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "EROARE în profilul %s, încărcarea a eÈ™uat\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Au apărut erori în timpul post-procesării. Abandonez.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Au apărut erori în timpul post-procesării expresiei regulate. " "Abandonez.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Au apărut erori în timpul post-procesării. Abandonez.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Au apărut erori în combinarea regulilor de post-procesare. Abandonez.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Imposibil de procesat directorul inclus '%s' în '%s'" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "FuncÈ›ie tampon complet." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Memorie insuficienta" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Nu se poate crea directorul cache: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "FiÈ™ier în locaÈ›ia directorului cache: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Nu se poate actualiza directorul cache: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "Intern: caracterul neaÈ™teptat al modului DBus '%c' la intrare" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/id.po0000664000175000017500000006772714201060045014012 0ustar jjjj# Indonesian message file for YaST2 (@memory@). # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2002 SuSE Linux AG. # Copyright (C) 1999-2001 SuSE GmbH. # I Made Wiryana , 1999. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2016-03-29 14:06+0000\n" "Last-Translator: Ari Setyo Wibowo \n" "Language-Team: Indonesian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: id\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Kesalahan: Memori tidak cukup.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Kesalahan: basedir %s bukan sebuah direktori, lewati.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Kesalahan: Tidak dapat menambahkan direktori %s ke lokasi pencarian.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Kesalahan: Tidak dapat mengalokasikan memori.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Posisi tulis yang buruk\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Izin ditolak\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Kehabisan memori\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Tidak dapat menyalin profil: Alamat memori yang buruk\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil tidak sesuai dengan protokol\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil tidak cocok dengan signature\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Versi profil tidak didukung oleh Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil telah ada\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil tidak ada\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "Izin ditolak; coba memuat profil walaupun dibatasi?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Kesalahan tak diketahui (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Tak dapat menambahkan \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Tak dapat menggantikan \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Tak dapat menghapus \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Tak dapat menuliskan ke stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Tak dapat menuliskan ke berkas output\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Pilihan tidak benar: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Penambahan berhasil untuk \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Penggantian berhasil untuk \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Penghapusan berhasil untuk \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC buffer increment yang buruk %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "profil %s aturan jaringan tidak dilaksanakan\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Jenis pola tak diketahui\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Tak dapat membuka %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Kesalahan Alokasi Memori: Tak dapat menghapus ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Kesalahan Alokasi Memori: Tak dapat menghapus %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "tak dapat membuat wilayah kerja\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "tak dapat menyambungkan profil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Tak dapat menulis semua entri profil\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Tak dapat menulis semua entri profil untuk cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Tak dapat membuka '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat gagal untuk '%s'" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir gagal '%s'" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat gagal untuk '%s'" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Tak dapat membuka '%s' di '%s'" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Ditemukan karakter tak diharapkan: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "Deklarasi variabel tidak menerima beberapa koma berturutan" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Ditemukan karakter tak diharapkan: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Peringatan dari %s (%s%sline %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Tak dapat mengalokasikan memori untuk subdomainbase mount point\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Peringatan: tak dapat menemukan fs yang cocok di %s, apakah sudah di-mount?\n" "Gunakan --subdomainfs untuk override.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Maaf. Anda perlu izin root untuk menjalankan program ini.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Peringatan! Anda telah menentukan root untuk setuid program ini.\n" "Siapapun yang dapat menjalankan program ini dapat pula memutakhirkan profil " "AppArmor Anda.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Kesalahan: Tak dapat membaca prodil %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Kesalahan alokasi memori." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "Muatan cache berhasil untuk \"%s\".\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "Muat kembali cache berhasil untuk \"%s\".\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Kesalahan ditemukan di berkas. Membatalkan.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Kualifikasi huruf kapital \"RWLIMX\" telah usang, silakan ubah ke huruf " "kecil\n" "Lihat apparmor.d(5) manpage untuk rinciannya.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Konflik 'a' dan 'w' perms yang saling eksklusif." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Kualifikasi exec 'i' tidak benar, konflik dengan kualifikasi yang sudah " "ditentukan" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Kualifikasi exec tak dibatasi (%c%c) mengixinkan beberapa environment " "variables berbahaya untuk diteruskan ke proses yang tak dibatasi; 'man 5 " "apparmor.d' untuk rinciannya.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Kualifikasi exec '%c' tak benar, konflik dengan kualifikasi yang sudah " "ditentukan" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Kualifikasi exec '%c%c' tak benar, konflik dengan kualifikasi yang sudah " "ditentukan" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Internal: karakter mode tak diharapkan '%c' di input" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Kesalahan internal menghasilkan perm tak benar 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Kesalahan parser AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Tak dapat menggabungkan entri. Kehabisan Memori\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "profil %s: telah menggabungkan aturan %s dengan konflik modifier x\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "Lampiran profil harus dimulai dengan sebuah '/'." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Nama profil harus dimulai dengan sebuah '/', namespace atau kata kunci " "'profile' atau 'hat'." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Gagal membuat alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "Bendera profil chroot_relative konflik dengan namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "Bendera profil mediate_deleted konflik dengan delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Bendera prodil attach_disconnected konflik dengan no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Bendera profil chroot_attach konflik dengan chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Bendera profil 'debug' tak lagi benar." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Bendera profil tak benar: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: `rule' mengembalikan NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Mode tak benar, dalam menolak aturan 'x' harus tidak didahului dengan " "kualifikasi exec 'i', 'p', or 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Mode tak benar, 'x' harus didahului dengan kualifikasi exec 'i', 'p', 'c', " "or 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Mode tak benar, 'x' harus didahului dengan kualifikasi exec 'i', 'p', or 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert: `network_rule' mengembalikan protokol tak benar" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert: `change_profile' mengembalikan NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: 'hat rule' mengembalikan NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: 'local_profile rule' mengembalikan NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Unset variabel boolean %s digunakan dalam if-expression" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "aturan tak aman kehilangan izin exec" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subset hanya dapat digunakan dengan aturan link." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "link dan exec perms konflik dalam sebuah aturan berkas yang menggunakan ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "link perms tidak diizinkan dalam sebuah transisi profil bernama.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "kehilangan sebuah karakter end of line? (entry: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Entri jaringan tak benar." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Kemampuan tak benar %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "Kesalahan parser AppArmor untuk %s%s%s pada baris %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "Kesalahan parser AppArmor,%s%s baris %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: pembukaan ilegal {, pengelompokan bertumpuk tak diizinkan\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Kesalahan pengelompokan Regex: Angka tak benar dari item-item antara {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Kesalahan pengelompokan Regex: Penutupan tak benar }, tak ada pembukaan " "{ yang cocok terdeteksi\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Kesalahan pengelompokan Regex: Pengelompokan tak tertutup atau kelas " "karakter, mengharapkan penutupan }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Internal buffer overflow terdeteksi, %d karakter terlampaui\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Tak dapat parse baris input '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "%s: Nama profil tak benar '%s' - regular expression yang buruk\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "KESALAHAN menggabungkan aturan untuk profil %s, gagal memuat\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "KESALAHAN profil %s berisi kebijakan elemen yang tak dapat digunakan dengan " "kernel ini:\n" "\t'*', '?', jangkauan karakter, dan alternasi tak diizinkan.\n" "\t'**' hanya boleh digunakan pada akhir aturan.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "KESALAHAN memproses regexs untuk profil %s, gagal memuat\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "KESALAHAN mengembangkan variabel untuk profil %s, gagal memuat\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "KESALAHAN menambahkan aturan akses hat untuk profil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "KESALAHAN di profil %s, gagal memuat\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Kesalahan ditemukan saat postprocessing. Membatalkan.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: Kesalahan ditemukan saat regex postprocess. Membatalkan.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Kesalahan ditemukan saat postprocess. Membatalkan.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Kesalahan ditemukan saat menggabungkan aturan postprocessing. " "Membatalkan.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Tak dapat memproses termasuk direktori '%s' in '%s'" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "Buffer fitur telah penuh." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Kehabisan memori" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Tak dapat menciptakan direktori cache: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "Berkas di lokasi direktori cache: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Tak dapat memutakhirkan direktori cache: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "Internal: Karakter mode DBus tak diharapkan '%c' di input" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "Kesalahan internal menghasilkan DBus perm tak benar 0x%x\n" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "awalan menolak tak diizinkan" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "awalan pemilik tak diizinkan" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "awalan pemilik tak diizinkan pada aturan mount" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "awalan pemilik tak diizinkan pada aturan dbus" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "awalan pemilik tak diizinkan pada aturan kemampuan" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "Mount conditional tak benar %s%s" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "aturan mount yang buruk" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "kondisi mount point sedang tak didukung" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "Pivotroot conditional tak benar '%s'" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" "%s: Kesalahan pengelompokan Regex: Penutupan tak benar ], tak ada pembukaan " "[ terdeteksi\n" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "%s: Kesalahan pengelompokan Regex: Tumpukan {} melebihi maksimum\n" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "KESALAHAN memproses aturan policydb untuk profil %s, gagal memuat\n" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "KESALAHAN mengganti alias untuk profil %s, gagal memuat\n" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "%s: Gagal menuliskan %s\n" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" "Kesalahan: Tak dapat membaca profil binary atau berkas cache %s: %s.\n" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "Kesalahan: Tak dapat membaca berkas cache '%s', mengabaikan...\n" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "Internal: karakter mode %s tak diharapkan '%c' di input" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "Kesalahan internal menghasilkan %s perm 0x%x tak benar\n" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "awalan pemilik tak diizinkan pada aturan mount" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "awalan pemilik tak diizinkan pada aturan dbus" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "awalan pemilik tak diizinkan pada aturan signal" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "awalan pemilik tak diizinkan pada aturan ptrace" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "awalan pemilik tak diizinkan pada aturan unix" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "awalan pemilik tak diizinkan pada aturan kemampuan" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "aturan dbus: Kelompok conditional tak benar %s=()" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "aturan unix: Kelompok conditional tak benar %s=()" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "%s: Kesalahan Regex: membuntuti karakter escape '\\'\n" apparmor-3.0.4/parser/po/apparmor-parser.pot0000664000175000017500000006622414201060045016704 0ustar jjjj# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR Canonical Ltd # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: apparmor@lists.ubuntu.com\n" "POT-Creation-Date: 2020-10-14 04:04-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../parser_include.c:113 ../parser_include.c:111 ../parser_include.c:96 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 ../parser_include.c:106 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 ../parser_include.c:122 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 ../parser_include.c:136 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 #: ../parser_interface.c:52 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 #: ../parser_interface.c:55 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 #: ../parser_interface.c:58 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 #: ../parser_interface.c:61 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 #: ../parser_interface.c:64 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 #: ../parser_interface.c:67 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 #: ../parser_interface.c:70 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 #: ../parser_interface.c:73 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 #: ../parser_interface.c:76 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 #: ../parser_interface.c:79 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #: ../parser_interface.c:82 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 ../parser_interface.c:96 #: ../parser_interface.c:100 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 ../parser_interface.c:105 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 ../parser_interface.c:110 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 ../parser_interface.c:119 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #: ../parser_interface.c:123 ../parser_interface.c:147 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 ../parser_interface.c:132 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 ../parser_interface.c:136 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 ../parser_interface.c:140 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 ../parser_interface.c:476 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 ../parser_interface.c:579 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 parser_lex.l:174 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 parser_lex.l:474 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #: ../parser_main.c:1444 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #: ../parser_main.c:822 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #: ../parser_main.c:828 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 ../parser_main.c:1038 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 ../parser_misc.c:215 ../parser_misc.c:939 #: parser_yacc.y:343 parser_yacc.y:367 parser_yacc.y:533 parser_yacc.y:543 #: parser_yacc.y:660 parser_yacc.y:741 parser_yacc.y:750 parser_yacc.y:1171 #: parser_yacc.y:1219 parser_yacc.y:1255 parser_yacc.y:1264 parser_yacc.y:1268 #: parser_yacc.y:1278 parser_yacc.y:1288 parser_yacc.y:1382 parser_yacc.y:1460 #: parser_yacc.y:1592 parser_yacc.y:1597 parser_yacc.y:1674 parser_yacc.y:1692 #: parser_yacc.y:1699 parser_yacc.y:1748 ../network.c:315 ../af_unix.cc:194 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #: ../parser_main.c:975 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #: ../parser_main.c:979 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #: ../parser_main.c:1132 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 #: ../parser_misc.c:532 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 #: ../parser_misc.c:573 ../parser_misc.c:580 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 #: ../parser_misc.c:597 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #: ../parser_misc.c:608 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #: ../parser_misc.c:616 ../parser_misc.c:657 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #: ../parser_misc.c:643 ../parser_misc.c:651 #, c-format msgid "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #: ../parser_misc.c:699 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #: ../parser_misc.c:721 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 #: ../parser_merge.c:71 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #: ../parser_merge.c:93 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 parser_yacc.y:407 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 parser_yacc.y:449 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 parser_yacc.y:581 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 parser_yacc.y:585 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 parser_yacc.y:588 msgid "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 parser_yacc.y:591 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 parser_yacc.y:607 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 parser_yacc.y:629 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 #: parser_yacc.y:673 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 parser_yacc.y:677 parser_yacc.y:709 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 parser_yacc.y:681 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 parser_yacc.y:712 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 #: parser_yacc.y:739 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 parser_yacc.y:867 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 parser_yacc.y:905 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 parser_yacc.y:914 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 parser_yacc.y:1077 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 parser_yacc.y:1181 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 parser_yacc.y:1148 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 parser_yacc.y:1150 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 parser_yacc.y:1152 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 parser_yacc.y:1198 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 parser_yacc.y:1234 parser_yacc.y:1244 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #: parser_yacc.y:1617 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 parser_yacc.y:1637 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #: ../parser_regex.c:306 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #: ../parser_regex.c:312 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #: ../parser_regex.c:403 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #: ../parser_regex.c:419 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #: ../parser_regex.c:487 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #: ../parser_policy.c:383 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #: ../parser_policy.c:340 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #: ../parser_policy.c:370 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #: ../parser_policy.c:363 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 parser_lex.l:187 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 ../parser_main.c:1332 ../parser_main.c:1354 #: ../parser_misc.c:280 ../parser_misc.c:299 ../parser_misc.c:308 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 parser_yacc.y:700 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 parser_yacc.y:737 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 parser_yacc.y:1722 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 parser_yacc.y:1737 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 parser_yacc.y:1744 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 parser_yacc.y:1759 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 ../parser_regex.c:264 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 ../parser_regex.c:284 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 ../parser_policy.c:347 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 ../parser_policy.c:377 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 ../parser_misc.c:768 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 ../parser_misc.c:792 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 parser_yacc.y:784 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 parser_yacc.y:801 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 parser_yacc.y:817 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 parser_yacc.y:833 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 parser_yacc.y:849 parser_yacc.y:869 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 parser_yacc.y:885 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 parser_yacc.y:1377 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 parser_yacc.y:1455 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 ../parser_regex.c:410 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" #: ../parser_common.c:112 #, c-format msgid "%s from %s (%s%sline %d): %s" msgstr "" #: ../parser_common.c:113 msgid "Warning converted to Error" msgstr "" #: ../parser_common.c:113 msgid "Warning" msgstr "" #: ../parser_interface.c:524 #, c-format msgid "Unable to open stdout - %s\n" msgstr "" #: ../parser_interface.c:533 #, c-format msgid "Unable to open output file - %s\n" msgstr "" #: parser_lex.l:326 msgid "Failed to process filename\n" msgstr "" #: parser_lex.l:720 #, c-format msgid "Lexer found unexpected character: '%s' (0x%x) in state: %s" msgstr "" #: ../parser_main.c:915 #, c-format msgid "Unable to print the cache directory: %m\n" msgstr "" #: ../parser_main.c:951 #, c-format msgid "Error: Could not load profile %s: %s\n" msgstr "" #: ../parser_main.c:961 #, c-format msgid "Error: Could not replace profile %s: %s\n" msgstr "" #: ../parser_main.c:966 #, c-format msgid "Error: Invalid load option specified: %d\n" msgstr "" #: ../parser_main.c:1077 #, c-format msgid "Could not get cachename for '%s'\n" msgstr "" #: ../parser_main.c:1434 msgid "Kernel features abi not found" msgstr "" #: ../parser_main.c:1438 msgid "Failed to add kernel capabilities to known capabilities set" msgstr "" #: ../parser_main.c:1465 #, c-format msgid "Failed to clear cache files (%s): %s\n" msgstr "" #: ../parser_main.c:1474 msgid "" "The --create-cache-dir option is deprecated. Please use --write-cache.\n" msgstr "" #: ../parser_main.c:1479 #, c-format msgid "Failed setting up policy cache (%s): %s\n" msgstr "" #: ../parser_misc.c:904 #, c-format msgid "Namespace not terminated: %s\n" msgstr "" #: ../parser_misc.c:906 #, c-format msgid "Empty namespace: %s\n" msgstr "" #: ../parser_misc.c:908 #, c-format msgid "Empty named transition profile name: %s\n" msgstr "" #: ../parser_misc.c:910 #, c-format msgid "Unknown error while parsing label: %s\n" msgstr "" #: parser_yacc.y:306 msgid "Failed to setup default policy feature abi" msgstr "" #: parser_yacc.y:308 #, c-format msgid "" "%s: File '%s' missing feature abi, falling back to default policy feature " "abi\n" msgstr "" #: parser_yacc.y:313 msgid "Failed to add policy capabilities to known capabilities set" msgstr "" #: parser_yacc.y:350 msgid "Profile names must begin with a '/' or a namespace" msgstr "" #: parser_yacc.y:372 msgid "Profile attachment must begin with a '/' or variable." msgstr "" #: parser_yacc.y:375 #, c-format msgid "profile id: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:404 msgid "" "The use of file paths as profile names is deprecated. See man apparmor.d for " "more information\n" msgstr "" #: parser_yacc.y:573 #, c-format msgid "Profile flag '%s' conflicts with '%s'" msgstr "" #: parser_yacc.y:954 msgid "RLIMIT 'cpu' no units specified using default units of seconds\n" msgstr "" #: parser_yacc.y:966 msgid "" "RLIMIT 'rttime' no units specified using default units of microseconds\n" msgstr "" #: parser_yacc.y:1582 msgid "Exec condition is required when unsafe or safe keywords are present" msgstr "" #: parser_yacc.y:1584 msgid "Exec condition must begin with '/'." msgstr "" #: parser_yacc.y:1643 #, c-format msgid "AppArmor parser error at line %d: %s\n" msgstr "" #: parser_yacc.y:1790 #, c-format msgid "Could not open '%s': %m" msgstr "" #: parser_yacc.y:1795 #, c-format msgid "fstat failed for '%s': %m" msgstr "" #: parser_yacc.y:1809 #, c-format msgid "failed to find features abi '%s': %m" msgstr "" #: parser_yacc.y:1813 #, c-format msgid "" "%s: %s features abi '%s' differs from policy declared feature abi, using the " "features abi declared in policy\n" msgstr "" #: ../parser_regex.c:98 ../parser_regex.c:238 #, c-format msgid "%s: Invalid glob type %d\n" msgstr "" #: ../parser_regex.c:693 #, c-format msgid "The current kernel does not support stacking of named transitions: %s\n" msgstr "" apparmor-3.0.4/parser/po/mr.po0000664000175000017500000005704014201060045014017 0ustar jjjjmsgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:17+0000\n" "Last-Translator: Priyavert \n" "Language-Team: AgreeYa Solutions \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: mr\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "लिहिणà¥à¤¯à¤¾à¤šà¥€ वाईट सà¥à¤¥à¤¿à¤¤à¥€\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "परवानगी नाकारली\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "सà¥à¤®à¥ƒà¤¤à¥€ संपली\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² पà¥à¤°à¥‹à¤Ÿà¥‹à¤•ॉलशी सà¥à¤¸à¤‚गत नाही\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤ˆà¤² सà¥à¤µà¤¾à¤•à¥à¤·à¤°à¥€à¤¶à¥€ जà¥à¤³à¤¤ नाही\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤ˆà¤² आधीच असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ आहे\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤ˆà¤² असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ नाही\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" घालणे अशकà¥à¤¯. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\"बदलणे अशकà¥à¤¯. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\"काढून टाकणे अशकà¥à¤¯. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdoutला लिहिणे अशकà¥à¤¯\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: अवैध परà¥à¤¯à¤¾à¤¯: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\"साठी अडिशन यशसà¥à¤µà¥€.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\"साठी बदली यशसà¥à¤µà¥€.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\"काढून टाकणà¥à¤¯à¤¾à¤šà¥€ कà¥à¤°à¤¿à¤¯à¤¾ यशसà¥à¤µà¥€.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC बॅड इनà¥à¤•à¥à¤°à¤¿à¤®à¥‡à¤‚ट बफर %p pos %p ext %p साईठ%d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s - %s उघडणे अशकà¥à¤¯\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "कामाचे कà¥à¤·à¥‡à¤¤à¥à¤° निरà¥à¤®à¤¾à¤£ करणे अशकà¥à¤¯\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤ˆà¤² %s ची कà¥à¤°à¤®à¤µà¤¾à¤°à¥€ लावणे अशकà¥à¤¯\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: संपूरà¥à¤£ पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥€ लिहिणे अशकà¥à¤¯\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "अनपेकà¥à¤·à¤¿à¤¤ वरà¥à¤£: '%s' आढळला" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: सबडोमेन माऊंट पॉईंटसाठी सà¥à¤®à¥ƒà¤¤à¥€ वाटून देता आली नाही\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "सà¥à¤®à¥ƒà¤¤à¥€ वाटून देणà¥à¤¯à¤¾à¤¤ चूक." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: फाईलमधे चà¥à¤•ा आढळलà¥à¤¯à¤¾. सोडून देत आहे.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "Exec कà¥à¤µà¤¾à¤²à¤¿à¤«à¤¾à¤¯à¤° 'i' अवैध, विवादासà¥à¤ªà¤¦ कà¥à¤µà¤¾à¤²à¤¿à¤«à¤¾à¤¯à¤° आधीच नमूद केलेला आहे" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥€ विलीन करता आलà¥à¤¯à¤¾ नाहीत. सà¥à¤®à¥ƒà¤¤à¥€ संपली\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "असरà¥à¤Ÿ: `रà¥à¤²' NULL परत आला." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "असरà¥à¤Ÿ: 'हेट रà¥à¤²' NULL परत आला." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "ओळीचà¥à¤¯à¤¾ अखेरचा वरà¥à¤£ गायब? (पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥€: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: {, बेकायदेशीररितà¥à¤¯à¤¾ उघडला, नेसà¥à¤Ÿà¥€à¤‚ग समà¥à¤¹ करणà¥à¤¯à¤¾à¤¸ अनà¥à¤®à¤¤à¥€ नाही\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex समà¥à¤¹ करणà¥à¤¯à¤¾à¤¤ चूक: अवैधपणे {} दरमà¥à¤¯à¤¾à¤¨ अनेक अवैध आयटेमà¥à¤¸.\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex समà¥à¤¹ करणà¥à¤¯à¤¾à¤¤ चूक: अवैधपणे }, बंद, कोणताही जà¥à¤³à¤£à¤¾à¤°à¤¾{ आढळला नाही\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: अंतरà¥à¤—त बफर भरà¥à¤¨ वाहू लागलà¥à¤¯à¤¾à¤šà¥‡ आढळले, %d पारà¥à¤¸à¥‡ करणे अशकà¥à¤¯\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: इनपà¥à¤Ÿ लाईन '%s' पारà¥à¤¸à¥‡ करणे अशकà¥à¤¯\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤ˆà¤² %s मधे चà¥à¤•, लोड करणà¥à¤¯à¤¾à¤¤ अपयश\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: नियमांचे पोसà¥à¤Ÿ पà¥à¤°à¥‹à¤¸à¥‡à¤¸à¤¿à¤‚ग à¤à¤•तà¥à¤° करणà¥à¤¯à¤¾à¤¤ चूक आढळली. सोडून देत आहे.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/vi.po0000664000175000017500000005114614201060045014020 0ustar jjjj# Vietnamese translation for YaST2 (@memory@). # Copyright © 2006 SUSE Linux Products GmbH. # Copyright © 2005, 2006 Gnome i18n Project for Vietnamese. # Phan VÄ©nh Thịnh , 2006. # Clytie Siddall , 2005, 2006. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:32+0000\n" "Last-Translator: Phan VÄ©nh Thịnh \n" "Language-Team: Vietnamese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: vi\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/Makefile0000664000175000017500000000132714201060045014476 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 2004, 2005 NOVELL (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # ---------------------------------------------------------------------- all: # As translations get added, they will automatically be included, unless # the lang is explicitly added to DISABLED_LANGS; e.g. DISABLED_LANGS=en es DISABLED_LANGS= COMMONDIR=../../common include $(COMMONDIR)/Make-po.rules XGETTEXT_ARGS+=--language=C --keyword=_ $(shell if [ -f ${NAME}.pot ] ; then echo -n -j ; fi) apparmor-3.0.4/parser/po/sk.po0000664000175000017500000005076614201060045014026 0ustar jjjj# translation of CheckHardware.po to Slovak # Copyright (C) 2003 Free Software Foundation, Inc. # Stanislav Visnovsky , 2003. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:30+0000\n" "Last-Translator: Stanislav Visnovsky \n" "Language-Team: Slovak \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: sk\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/he.po0000664000175000017500000005071614201060045014000 0ustar jjjj# Hebrew message file for YaST2 (@memory@). # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2004 SuSE Linux AG. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:22+0000\n" "Last-Translator: xxx \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: he\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/fr.po0000664000175000017500000006615714201060045014021 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2016-04-28 10:19+0000\n" "Last-Translator: Sylvie Gallet \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: fr\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Erreur : mémoire saturée.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Erreur : basedir %s n'est pas un répertoire, ignoré.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" "Erreur : impossible d'ajouter le répertoire %s au chemin de recherche.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Erreur : impossible d'allouer de la mémoire\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Mauvaise position d'écriture\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permission refusée\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Mémoire saturée\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Impossible de copier le profil : adresse mémoire incorrecte\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil non conforme au protocole\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Le profil ne correspond pas à la signature\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Version de profil non prise en charge par le module Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil déjà existant\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil inexistant\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Erreur inconnue (%d) : %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s : impossible d'ajouter « %s ». " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s : impossible de remplacer « %s ». " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s : impossible de supprimer « %s ». " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s : impossible d'écrire vers la sortie standard (stdout)\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s : impossible d'écrire vers le fichier de sortie\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s : ASSERT : option incorrecte : %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Ajout réussi pour « %s ».\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Remplacement réussi pour « %s ».\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Suppression réussie pour « %s ».\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "ALARME tampon d'incrément incorrect %p pos %p ext %p taille %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Type de motif inconnu\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Impossible d'ouvrir %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Erreur d'allocation mémoire : impossible de supprimer ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Erreur d'allocation mémoire : impossible de supprimer %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "impossible de créer une zone de travail\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "impossible de sérialiser le profil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s : impossible d'écrire l'entrée de profil complète\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s : impossible d'écrire l'entrée de profil complète dans le cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Impossible d'ouvrir « %s »" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "Échec de fstat pour « %s »" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Impossible d'ouvrir « %s » dans « %s »" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Caractère inattendu trouvé : « %s »" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "Les déclarations de variables n'acceptent pas les virgules finales" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Caractère inattendu trouvé : '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Avertissement de %s (%s%sligne %d) : %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s : impossible d'allouer de la mémoire pour point de montage de base de " "sous-domaine\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Avertissement : impossible de trouver un système de fichiers approprié dans " "%s, est-il monté ?\n" "Utilisez --subdomainfs pour remplacer.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s : désolé. Les privilèges root sont nécessaires pour exécuter ce " "programme.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s : avertissement ! Vous avez défini le setuid de ce programme comme root.\n" "Toute personne capable d'exécuter ce programme peut mettre à jour vos " "profils AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Erreur : impossible de lire le profil %s : %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Erreur d'allocation mémoire." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s : erreurs trouvées dans un fichier. Annulation.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Les qualificatifs en majuscules « RWLIMX » sont déconseillés. Remplacez-les " "par des minuscules\n" "Reportez-vous à la page de manuel apparmor.d(5) pour plus de détails.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Les autorisations « a » et « w » en conflit s'excluent mutuellement." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Qualificatif d'exécution « i » incorrect, en conflit avec un qualificatif " "déjà défini" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Le qualificatif d'exécution non confiné (%c%c) permet à certaines variables " "d'environnement dangereuses d'être transmises vers le processus non " "confiné ; « man 5 apparmor.d » pour plus de détails.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Qualificatif d'exécution « %c » non valide, qualificatif déjà indiqué" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Qualificatif d'exécution « %c%c » incorrect, en conflit avec un qualificatif " "déjà défini" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Interne« : caractère de mode « %c » inattendu en entrée" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Erreur interne générée par une autorisation invalide 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Erreur de l'analyseur AppArmor : %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Impossible de fusionner les entrées. Mémoire saturée\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "L'ajout à un profil doit commencer par un « / »" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Les noms de profils doivent commencer par un « / », un espace de noms ou un " "des mots-clés « profile » ou « hat »." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Impossible de créer l'alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" "Le drapeau de profil chroot_relative est en conflit avec namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" "Le drapeau de profil mediate_deleted est en conflit avec delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Le drapeau de profil attach_disconnected est en conflit avec " "no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" "Le drapeau de profil chroot_attach est en conflit avec chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Le drapeau de profil « debug » n'est plus valide." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Drapeau de profil non valide : %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert : « rule » a retourné NULL" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Mode incorrect : dans les règles de refus, « x » ne doit pas être précédé du " "qualificatif d'exécution « i », « p » ou « u »." #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Mode incorrect : « x » doit être précédé du qualificatif d'exécution « i », " "« p », « c » ou « u »." #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Mode incorrect : « x » doit être précédé du qualificatif d'exécution « i », " "« p » ou « u »." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert : « network_rule » retourne un protocole non valide." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert : « change_profile » a retourné NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert : « hat rule » a retourné NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert : « local_profile rule » a retourné NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Annuler la variable booléenne %s utilisée dans l'expression if" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "autorisations d'exécution manquant de règle, non sûres" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "le sous-ensemble ne peut être utilisé qu'avec des règles de liaison." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "les autorisations de liaison et d'exécution sont en conflit avec une règle " "de fichier qui utilise ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "les autorisations de liaison ne sont pas autorisées sur une transition de " "profil nommée.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "caractère de fin de ligne manquant ? (entrée : %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Entrée réseau non valide." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Capacité %s invalide." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "Erreur de l'analyseur AppArmor pour %s%s%s à la ligne %d : %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "Erreur de l'analyseur AppArmor, %s%s ligne %d : %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s : { ouvrante incorrecte, regroupements imbriqués non autorisés\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s : erreur de regroupement Regex : nombre incorrect d'éléments entre {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s : erreur de regroupement Regex : } fermante incorrecte, aucune { ouvrante " "détectée\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s : erreur de regroupement Regex : regroupement ou classe de caractères non " "fermé, fermante attendue }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s : dépassement de tampon interne détecté, %d caractères en dépassement\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s : impossible d'analyser la ligne en entrée « %s »\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" "%s : Nom de profil non valide « %s » - expression régulière incorrecte\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "ERREUR de fusion des règles pour le profil %s, le chargement a échoué\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ERREUR le profil %s contient des éléments de stratégie non utilisables avec " "ce noyau :\n" "\t« * », « ? », les plages de caractères et les permutations ne sont pas " "autorisées.\n" "\t« ** » peut uniquement être utilisé à la fin d'une règle.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "ERREUR lors du traitement Regex du profil %s, le chargement a échoué\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "ERREUR lors de l'extension de variables pour le profil %s, le chargement a " "échoué\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" "Une ERREUR s'est produite lors de l'ajout de la règle d'accès hat pour le " "profil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ERREUR dans le profil %s, échec du chargement\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s : erreurs trouvées lors du post-traitement. Abandon.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s : erreurs trouvées lors du post-traitement Regex. Annulation.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s : erreurs trouvées lors du post-traitement. Abandon.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s : erreurs trouvées lors de la combinaison des règles de post-traitement. " "Annulation.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Mémoire saturée" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/tr.po0000664000175000017500000005727114201060045014034 0ustar jjjj# Turkish message file for YaST2 (@memory@). # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2002 SuSE Linux AG. # Copyright (C) 1999, 2000, 2001 SuSE GmbH. # Görkem Çetin , 1999, 2000. # Mehmet Mıdık , 2000. # Metin Oral , 2001. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:41+0000\n" "Last-Translator: Ömer Kehri \n" "Language-Team: turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: tr\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Hata: Yetersiz bellek.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Hata: %s temel dizini bir dizin deÄŸil, atlanıyor.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Hata: %s dizini arama yollarına eklenemedi.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Hata: Bellek tahsis edilemedi.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Hatalı yazma pozisyonu\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "İzin verilmedi\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Yetersiz bellek\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil protokole uymuyor\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil imzası tutmuyor\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profil sürümü Apparmor modülü tarafından desteklenmiyor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil zaten mevcut\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil mevcut deÄŸil\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" eklenemedi. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" deÄŸiÅŸtirilemedi. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" silinemedi. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdout'a yazılamadı.\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Geçersiz seçenek: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\" için ekleme baÅŸarılı oldu.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\" için deÄŸiÅŸtirme baÅŸarılı oldu.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\" için silme baÅŸarılı oldu.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANİK hatalı arttırma arabelleÄŸi %p pozisyon %p ext %p boyut %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s açılamadı - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "çalışma alanı oluÅŸturulamadı\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "%s profili seri hale getirilemedi\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Profil girdisinin tamamı yazılamadı\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Beklenmeyen karakter bulundu: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: subdomainbase baÄŸlantı noktası için bellek ayrılamadı\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Bu programı çalıştırabilmek için root yetkilerine ihtiyacınız var.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Uyarı! Bu programın setuid deÄŸeri root olarak ayarlanmış.\n" "Bu programı çalıştıracak herkes AppArmor profillerinizi deÄŸiÅŸtirebilir.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Hata: %s profili okunamadı: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Bellek ayırma hatası." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Dosyada hatalar bulundu. Durduruluyor.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Büyük harfli niteleyiciler \"RWLIMX\" yakında eskiyecektir, bunları küçük " "harfe çevirin\n" "Ayrıntılar için apparmor.d(5) manual sayfasına bakın.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Çalıştırma niteleyicisi 'i' geçersiz, çakışan niteleyici zaten belirtilmiÅŸ" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Çalıştırma niteleyicisi '%c' geçersiz, çakışan niteleyici zaten belirtilmiÅŸ" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Dahili: girdide beklenmeyen mod karakteri '%c'" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor inceleyici hatası: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Girdiler birleÅŸtirilemiyor. Yetersiz bellek\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: `rule' NULL döndürdü." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Geçersiz mod; 'x', çalıştırma deÄŸiÅŸkenleri 'i', 'p' ya da 'u'dan sonra " "gelmelidir." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: `hat rule' NULL döndürdü." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "If deyimi içinde ayarlanmamış boolean deÄŸiÅŸkeni %s" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "eksik satır sonu karakteri? (girdi: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Kural dışı açık {, iç içe konan gruplamalara izin verilmez\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex gruplama hatası: {} içinde geçersiz öğe sayısı\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex gruplama hatası: Geçersiz kapama }, karşılığı olan bir { " "bulunamadı\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex gruplama hatası: Kapatılmamış gruplama ya da karakter sınıfı, " "kapama karakteri } bekleniyor\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Dahili ara bellek taÅŸması saptandı, %d karakter aşıldı\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: GiriÅŸ satırı '%s' incelenemedi\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "HATA: %s profilinin kuralları birleÅŸtirilemedi, yükleme baÅŸarısız oldu\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "HATA: %s profili bu kernel ile kullanılamayacak bazı ilke öğeleri içeriyor:\n" "\t'*', '?', karakter aralıkları ve sırayla birbirini izlemelere izin " "verilmiyor.\n" "\t'**' sadece bir kuralın sonunda kullanılabilir.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "HATA: %s profilinin regex'leri iÅŸlenemedi, yükleme baÅŸarısız oldu\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "HATA: %s profili için deÄŸiÅŸkenler geniÅŸletilemedi, yükleme baÅŸarısız oldu\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "HATA: %s profili, yükleme baÅŸarısız oldu\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: Regex sonrası iÅŸlemlerde hata bulundu. Durduruluyor.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Kural birleÅŸtirme sonrası iÅŸlemlerde hata bulundu. Durduruluyor.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ja.po0000664000175000017500000006555414201060045014004 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:52+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ja\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "エラー:メモリä¸è¶³\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "エラー:ベースディレクトリ %s ã¯ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã§ã¯ã‚りã¾ã›ã‚“。スキップã—ã¦ã„ã¾ã™\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "エラー:ディレクトリ %s を検索パスã«è¿½åŠ ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "エラー:メモリを割り当ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "䏿­£æ›¸ãè¾¼ã¿ä½ç½®\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "æ‹’å¦ã•れãŸãƒ‘ーミッション\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "メモリä¸è¶³\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "プロファイルãŒãƒ—ãƒ­ãƒˆã‚³ãƒ«ã«æº–æ‹ ã—ã¦ã„ã¾ã›ã‚“\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "プロファイルãŒç½²åã«ä¸€è‡´ã—ã¦ã„ã¾ã›ã‚“\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "プロファイルãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒApparmorモジュールã§ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "プロファイルã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "プロファイルãŒå­˜åœ¨ã—ã¾ã›ã‚“\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: 「%sã€ã‚’追加ã§ãã¾ã›ã‚“。 " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: 「%sã€ã‚’ç½®æ›ã§ãã¾ã›ã‚“。 " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: 「%sã€ã‚’削除ã§ãã¾ã›ã‚“。 " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdoutã«æ›¸ãè¾¼ã‚ã¾ã›ã‚“\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT:無効ãªã‚ªãƒ—ション: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "「%sã€ã«ç¶šã追加。\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "「%sã€ã«ç¶šãç½®æ›ã€‚\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "「%sã€ã«ç¶šã削除。\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC 䏿­£å¢—分ãƒãƒƒãƒ•ã‚¡ %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "é–‹ã‘ã¾ã›ã‚“ %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "メモリ割り当ã¦ã‚¨ãƒ©ãƒ¼: ^%s を削除ã§ãã¾ã›ã‚“\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "メモリ割り当ã¦ã‚¨ãƒ©ãƒ¼: %s:%s を削除ã§ãã¾ã›ã‚“。" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "作業領域を作æˆã§ãã¾ã›ã‚“\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "プロファイル%sを順番ã«ä¸¦ã¹ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: プロファイルエントリ全体を書ã込むã“ã¨ãŒã§ãã¾ã›ã‚“\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "予期ã—ãªã„文字を検出ã—ã¾ã—ãŸ: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) 予期ã—ãªã„文字ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸ:「%sã€" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: サブドメインベースマウントãƒã‚¤ãƒ³ãƒˆã«å¯¾ã—ã¦ãƒ¡ãƒ¢ãƒªã‚’割り当ã¦ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "警告:é©åˆ‡ãªfs㌠%s ã«è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。マウントã•れã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。\n" "--subdomainfsを使用ã—ã¦ä¸Šæ›¸ãã—ã¦ãã ã•ã„。\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: ã“ã®ãƒ—ログラムを実行ã™ã‚‹ã«ã¯ã€ãƒ«ãƒ¼ãƒˆç‰¹æ¨©ãŒå¿…è¦ã§ã™ã€‚\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: 警告! ã“ã®ãƒ—ログラムã®setuidをルートã«è¨­å®šã—ã¾ã—ãŸã€‚\n" "ã“ã®ãƒ—ログラムを実行ã§ãるユーザã¯ã™ã¹ã¦ã€AppArmorプロファイルを更新ã§ãã¾ã™ã€‚\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "エラー:プロファイル %s: %s を読ã¿è¾¼ã‚ã¾ã›ã‚“ã§ã—ãŸã€‚\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "メモリ割り当ã¦ã‚¨ãƒ©ãƒ¼ã€‚" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: ファイルã«ã‚¨ãƒ©ãƒ¼ãŒæ¤œå‡ºã•れã¾ã—ãŸã€‚中止ã—ã¦ã„ã¾ã™ã€‚\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "大文字ã®ã‚¯ã‚©ãƒªãƒ•ァイア「RWLIMXã€ã¯æŽ¨å¥¨ã•れã¦ã„ã¾ã›ã‚“ã€‚å°æ–‡å­—ã«å¤‰æ›ã—ã¦ãã ã•ã„。\n" "詳細ã¯ã€apparmor.d(5)ã®ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãƒšãƒ¼ã‚¸ã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "ç«¶åˆ:パーミッション「aã€ã¨ã€Œwã€ã¯äº’ã„ã«æŽ’ä»–çš„ã§ã™ã€‚" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "Execクォリファイア「iã€ã¯ç„¡åйã§ã™ã€ç›¸åã™ã‚‹ã‚¯ã‚©ãƒªãƒ•ァイアãŒã™ã§ã«æŒ‡å®šã•れã¦ã„ã¾ã™" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "制é™ã•れã¦ã„ãªã„execクォリファイア(%c%c)ã«ã‚ˆã£ã¦ã€å±é™ºãªç’°å¢ƒå¤‰æ•°ãŒåˆ¶é™ã•れã¦ã„ãªã„ãƒ—ãƒ­ã‚»ã‚¹ã«æ¸¡ã•れã¾ã™ã€‚詳細ã¯ã€ã€Œman 5 " "apparmor.dã€ã‚’å‚ç…§ã—ã¦ãã ã•ã„。\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "Execクォリファイア「%cã€ã¯ç„¡åйã§ã™ã€‚ç«¶åˆã™ã‚‹ã‚¯ã‚©ãƒªãƒ•ァイアãŒã™ã§æŒ‡å®šã•れã¦ã„ã¾ã™" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "Execクォリファイア'%c%c' ã¯ç„¡åйã§ã™ã€‚ç«¶åˆã™ã‚‹ã‚¯ã‚©ãƒªãƒ•ァイアãŒã™ã§ã«æŒ‡å®šã•れã¦ã„ã¾ã™" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "内部:予期ã—ãªã„モード文字「%cã€ãŒå…¥åŠ›ã•れã¦ã„ã¾ã™" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "内部エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ãƒ‘ãƒ¼ãƒŸãƒƒã‚·ã‚ªãƒ³ãŒæ­£ã—ãã‚りã¾ã›ã‚“ 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmorパーサエラー: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "エントリをマージã§ãã¾ã›ã‚“ã§ã—ãŸã€‚メモリä¸è¶³\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "別å %s -> %s を作æˆã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "プロファイルフラグ'debug'ã¯ç¾åœ¨ã¯åˆ©ç”¨ã§ãã¾ã›ã‚“。" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "ãƒ—ãƒ­ãƒ•ã‚¡ã‚¤ãƒ«ãƒ•ãƒ©ã‚°ãŒæ­£ã—ãã‚りã¾ã›ã‚“: %s" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert:「ruleã€ã¯NULLã‚’è¿”ã—ã¦ã„ã¾ã™ã€‚" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "無効ãªãƒ¢ãƒ¼ãƒ‰ã§ã™ã€‚æ‹’å¦ãƒ«ãƒ¼ãƒ«å†…ã§ã¯ã€Œxã€ã®å‰ã«Execクォリファイア「iã€ã€ã€Œpã€ã€ã¾ãŸã¯ã€Œuã€ã‚’付ã‘ã¦ã¯ã„ã‘ã¾ã›ã‚“。" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "無効ãªãƒ¢ãƒ¼ãƒ‰ã§ã™ã€‚「xã€ã®å‰ã«ã¯å®Ÿè¡Œä¿®é£¾å­ã€Œiã€ã€ã€Œpã€ã€ã€Œcã€ã¾ãŸã¯ã€Œuã€ãŒå¿…è¦ã§ã™ã€‚" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "無効ãªãƒ¢ãƒ¼ãƒ‰ã§ã™ã€‚「xã€ã®å‰ã«ã‚¯ã‚©ãƒªãƒ•ァイア「iã€ã€ã€Œpã€ã€ã¾ãŸã¯ã€Œuã€ãŒå¿…è¦ã§ã™" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert:「network_ruleã€ã¯ç„¡åйãªãƒ—ロトコルを返ã—ã¦ã„ã¾ã™ã€‚" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert:「change_profileã€ã¯NULLã‚’è¿”ã—ã¦ã„ã¾ã™ã€‚" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert:「hat ruleã€ã¯NULLã‚’è¿”ã—ã¦ã„ã¾ã™ã€‚" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: 「local_profile ruleã€ã¯ NULL ã‚’è¿”ã—ã¦ã„ã¾ã™ã€‚" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "未設定ã®ãƒ–ール値変数%sãŒifå¼ã«ä½¿ç”¨ã•れã¦ã„ã¾ã™" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "ルールãŒå®‰å…¨ã§ã¯ã‚りã¾ã›ã‚“。execパーミッションãŒã‚りã¾ã›ã‚“" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "サブセットã¯ãƒªãƒ³ã‚¯ãƒ«ãƒ¼ãƒ«ã¨å…±ã«ã®ã¿ä½¿ç”¨ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "以下ã®ãƒ•ァイルルール内ã§ãƒªãƒ³ã‚¯ã¨execパーミッションãŒçŸ›ç›¾ã—ã¦ã„ã¾ã™ ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "リンクパーミッションã¯åå‰ä»˜ãプロファイルã®å¤‰æ›´ã§ä½¿ç”¨ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "è¡Œæœ«æ–‡å­—ãŒæ¬ ã‘ã¦ã„ã¾ã™ã‹?(entry: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "無効ãªãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã‚¨ãƒ³ãƒˆãƒª" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "ç„¡åŠ¹ãªæ©Ÿèƒ½ã§ã™ %s" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: 䏿­£ã‚ªãƒ¼ãƒ—ン{ã€å…¥ã‚Œå­ã‚°ãƒ«ãƒ¼ãƒ—分ã‘ã¯è¨±å¯ã•れã¦ã„ã¾ã›ã‚“\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regexグループ分ã‘エラー:{}ã®é–“ã«ã‚ã‚‹é …ç›®ã®ç„¡åŠ¹æ•°\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "%s: Regexグループ分ã‘エラー:無効ãªã‚¯ãƒ­ãƒ¼ã‚º}ã€ä¸€è‡´ã™ã‚‹ã‚ªãƒ¼ãƒ—ンãŒã‚りã¾ã›ã‚“{ detected\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "%s: Regexグループ分ã‘エラー:グループ分ã‘ã¾ãŸã¯æ–‡å­—クラスãŒé–‰ã˜ã¦ã„ã¾ã›ã‚“。クローズ}ãŒå¿…è¦ã§ã™\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: 内部ãƒãƒƒãƒ•ァオーãƒãƒ¼ãƒ•ãƒ­ãƒ¼ãŒæ¤œå‡ºã•れã¾ã—ãŸã€%d文字超ãˆã¦ã„ã¾ã™\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: 入力行「%sã€ã‚’è§£æžã§ãã¾ã›ã‚“\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "プロファイル %s ã®ãƒ«ãƒ¼ãƒ«ã‚’マージ中ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ロードã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "エラー:プロファイル %s ã«ã“ã®ã‚«ãƒ¼ãƒãƒ«ã§ä½¿ç”¨ã§ããªã„ãƒãƒªã‚·ãƒ¼è¦ç´ ãŒã‚りã¾ã™:\n" "\t「*ã€ã€ã€Œ?ã€ã€æ–‡å­—範囲ã€äº¤ä»£ã¯è¨±å¯ã•れã¾ã›ã‚“。\n" "\t「**ã€ã¯ãƒ«ãƒ¼ãƒ«ã®æœ«å°¾ã«ã®ã¿ä½¿ç”¨ã§ãã¾ã™ã€‚\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "プロファイル %s ã®regex処ç†ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ロードã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "プロファイル %s ã®å¤‰æ•°ã®æ‹¡å¼µä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚ロードã§ãã¾ã›ã‚“ã§ã—ãŸ\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "プロファイル %s ã«ãƒãƒƒãƒˆã‚¢ã‚¯ã‚»ã‚¹ãƒ«ãƒ¼ãƒ«ã‚’追加ã™ã‚‹éš›ã«ã‚¨ãƒ©ãƒ¼ã«ãªã‚Šã¾ã—ãŸ\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "プロファイル%sã®ã‚¨ãƒ©ãƒ¼ã€ãƒ­ãƒ¼ãƒ‰ã«å¤±æ•—ã—ã¾ã—ãŸ\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: 後処ç†ã®éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚中止ã—ã¦ã„ã¾ã™ã€‚\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: regex後処ç†ã®é–“ã«ã‚¨ãƒ©ãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚中止ã—ã¦ã„ã¾ã™ã€‚\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: 後処ç†ã®éš›ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚中止ã—ã¦ã„ã¾ã™ã€‚\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s: è¦å‰‡å¾Œå‡¦ç†ã®çµåˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚中断ã—ã¦ã„ã¾ã™ã€‚\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/wa.po0000664000175000017500000005102414201060045014004 0ustar jjjj# Translation into the walloon language. # Copyright (C) 2007 SUSE Linux Products GmbH. # Pablo Saratxaga , 2001, 2004. # Jean Cayron , 2007. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:32+0000\n" "Last-Translator: Jean Cayron \n" "Language-Team: Walloon \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: wa\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/oc.po0000664000175000017500000005225314201060045014003 0ustar jjjj# Occitan (post 1500) translation for apparmor # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2016-03-10 21:29+0000\n" "Last-Translator: Cédric VALMARY (Tot en òc) \n" "Language-Team: Occitan (post 1500) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: oc\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Error : memòria insufisenta.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Marrida posicion d'escritura\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Autorizacion refusada\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Pas pro de memòria\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Perfil inexistent\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s : impossible d'apondre « %s ». " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s : impossible de remplaçar « %s ». " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s : impossible de suprimir « %s ». " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Apondon capitat per « %s ».\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Supression capitada per « %s ».\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Impossible de dobrir %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "impossible de crear una zòna de trabalh\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "impossible de serializar lo perfil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s : impossible d'escriure l'entrada de perfil completa\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Impossible de dobrir « %s »" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert : « rule » a tornat NULL" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert : « hat rule » a tornat NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ms.po0000664000175000017500000006744714201060045014034 0ustar jjjj# Malay translation for apparmor # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2014-09-21 05:21+0000\n" "Last-Translator: abuyop \n" "Language-Team: Malay \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ms\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Ralat: Kehabisan ingatan.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Ralat: basedir %s bukanlah direktori, melangkau.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Ralat: Tidak dapat tambah direktori %s untuk gelintar laluan.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Ralat: Tidak dapat peruntuk ingatan.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Kedudukan tulis teruk\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Keizinan dinafikan\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Kehabisan ingatan\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Tidak dapat salin profil. Alamat ingatan teruk\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil tidak menyebentuk ke protokol\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil tidak sepadan dengan tandatangan\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Versi profil tidak disokong oleh modul Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil sudah wujud\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil tidak wujud\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "Keizinan dinafikan; cuba untuk muatkan profil semasa dikurung?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Ralat tidak diketahui (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Tidak boleh tambah \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Tidak boleh ganti \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Tidak boleh buang \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Tidak boleh tulis ke stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Tidak boleh tulis ke fail output\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Pilihan tidak sah: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Penambahan berjaya untuk \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Penggantian berjaya bagi \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Pembuangan berjaya bagi \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "penimbal tokokan teruk PANIC %p pos %p ext %p saiz %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "peraturan rangkaian profil %s tidak dikuat kuasakan\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Jenis corak tidak diketahui\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Tidak boleh buka %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Ralat Peruntukan Ingatan: Tidak boleh buang ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Ralat Peruntukan Ingatan: Tidak boleh buang %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "tidak boleh cipta kawasan kerja\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "tidak boleh serialkan profil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Tidak boleh tulis keseluruhan masukan profil\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Tidak boleh tulis keseluruhan masukan profil ke cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Tidak dapat buka '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat gagal bagi '%s'" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir gagalkan '%s'" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat gagal bagi '%s'" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Tidak dapat buka '%s' dalam '%s'" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Temui aksara tidak jangka: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "Deklarasi pembolehubah tidak menerima koma bertitik" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Temui aksara tidak jangka: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Amaran dari %s (%s%sbaris %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: Tidak dapat peruntuk ingatan untuk titik lekap subdomainbase\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Amaran: tidak boleh cari fs yang sesuai dalam %s, adakah ia dilekap?\n" "Guna --subdomainfs untuk batalkan.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Maaf. Anda perlukan kelayakan root untuk jalankan program ini.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Amaran! Anda telah tetapkan root setuid program ini.\n" "Sesiapa sahaja boleh jalankan program ini boleh kemaskin profil AppArmor " "anda.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Ralat: Tidak dapat baca profil %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Ralat peruntukan ingatan." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "Berjaya muatkan cache untuk \"%s\".\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "Berjaya muatkan semula cache untuk \"%s\".\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Ralat ditemui dalam fail. Menghenti paksa.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Penerang huruf besar \"RWLIMX\" sudah lapok, sila tukar ia kepada huruf " "kecil\n" "Lihat halaman panduan apparmor.d(5) untuk perincian.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Konflik kekal 'a' dan 'w' adalah ekslusif secara bersama." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "Penerang exec 'i' tidak sah, penerang berkonflik sudah dinyatakan" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Penerang exec tidak terkurung (%c%c) membolehkan beberapa pembolehubah " "persekitaran merbahaya melepasi ke proses tidak terkurung; 'man 5 " "apparmor.d' untuk perincian.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "Penerang exec '%c' tidak sah, penerang berkonflik sudah dinyatakan" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "Penerang exec '%c%c' tidak sah, penerang berkonflik sudah dinyatakan" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Dalaman: Mod aksara '%c' tidak dijangka dalam input" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Ralat dalaman menjana perm 0x%llx tidak sah\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Ralat penghurai AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Tidak dapat gabungkan masukan. Kehabisan Ingatan\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" "profil %s: mempunyai peraturan tergabung %s dengan penerang x yang " "berkonflik\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "Lampiran profil mesti bermula dengan tanda '/'." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Nama profil mesti bermula dengan tanda '/', ruang nama atau kata kunci " "'profile' atau 'hat'." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Gagal cipta alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "Bendera profil chroot_relative berkonflik dengan namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "Bendera profil mediate_deleted berkonflik dengan delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Bendera profil attach_disconnected berkonflik dengan no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Bendera profil chroot_attach berkonflik dengan chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Bendera profil 'nyahpepijat' tidak lagi sah." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Bendera profil tidak sah: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Terap:'rule' kembalikan NOL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Mod tidak sah, semasa menafikan peraturan 'x' tidak boleh didahului oleh " "penerang exec 'i', 'p', atau 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Mod tidak sah, 'x' mesti didahului oleh penerang exec 'i', 'p', 'c', atau 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Mod tidak sah, 'x' mesti didahului oleh penerang exec 'i', 'p', atau 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Terap: 'network_rule' kembalikan protokol tidak sah." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Terap: 'change_profile' kembalikan NOL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Terap: 'hat rule' kembalikan NOL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Terap: 'local_profile rule' kembalikan NOL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Pembolehubah boolean %s tidak ditetap digunakan dalam ungkapan-if" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "peraturan tidak selamat kehilangan keizinan exec" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subset hanya boleh digunakan dengan peraturan pautan." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "konflik kekal pautan dan exec pada peraturan fail menggunakan ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "perms pautan tidak dibenarkan pada peralihan profil bernama.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "hilang penghujung baris aksara? (masukan: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Masukan rangkaian tidak sah." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Keupayaan %s tidak sah." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "Ralat penghurai AppArmor untuk %s%s%s pada baris %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "Ralat penghurai AppArmor, %s%s pada baris %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: Pembuka { tidak dibolehkan, pengumpulan bersarang tidak dibenarkan\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Ralat pengumpulan ungkapan nalar: Bilangan item tidak sah diantara {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Ralat pengumpulan ungkapan nalar: Penutup } tidak sah, tiada pembuka { " "yang sepadan dikesan\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Ralat pengumpulan ungkapan nalar: Pengumpulan atau kelas aksara tidak " "ditutup, menjangkakan penutup }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Penimbal dalaman melimpah dikesan, %d aksara terlebih\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Tidak boleh hurai baris input '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "%s: Nama profil '%s' tidak sah - ungkapan nalar teruk\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "RALAT menggabung peraturan untuk profil %s, gagal dimuatkan\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "RALAT profil %s mengandungi unsur polisi yang tidak boleh diguna oleh kernel " "ini:\n" "\tjulat aksara '*', '?', dan penyelangan tidak dibenarkan.\n" "\t'**' hanya boleh digunakan dihujung peraturan.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "RALAT memproses ungkapan nalar untuk profil %s, gagal dimuatkan\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "RALAT mengembangkan pembolehubah untuk profil %s, gagal dimuatkan\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "RALAT menambah peraturan capaian hat untuk profil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "RALAT dalam profil %s, gagal dimuatkan\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Ralat ditemui semasa pos-pemprosesan. Menghenti paksa.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Ralat ditemui semasa pos-proses ungkapan nalar. Menghenti paksa.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Ralat ditemui semasa pos-proses. Menghenti paksa.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Ralat ditemui semasa menggabungkan pos-pemprosesan peraturan. Menghenti " "paksa.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Tidak dapat proses direktori include '%s' dalam '%s'" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "Penimbal fitur penuh." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Kehabisan ingatan" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Tidak dapat cipta direktori cache: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "Fail dalam lokasi direktori cache: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Tidak dapat kemaskini direktori cache: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "Dalaman: aksara mod DBus '%c' tidak dijangka dalam input" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "Ralat dalaman dijana menjana DBus perm 0x%x tidak sah\n" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "nafi awalan tidak dibenarkan" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "awalan pemilik tidak dibenarkan" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan lekap" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan dbus" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan keupayaan" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "syarat lekap %s%s tidak sah" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "peraturan lekap teruk" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "syarat titik lekap buat masa ini tidak disokong" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "syarat pivotroot '%s' tidak sah" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" "%s: ralat pengumpulan ungkapan nalar: simbol ] tidak sah, tiada simbol [ " "dikesan\n" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" "%s: ralat pengumpulan ungkapan nalar: Penyarangan maksimum {} dicapai\n" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "RALAT memproses peraturan policydb bagi profil %s, gagal dimuatkan\n" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "RALAT menggantikan alias untuk profil %s, gagal dimuatkan\n" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "%s: Tidak boleh tulis %s\n" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "Ralat: Tidak dapat baca profil binari atau fail cache %s: %s.\n" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "Ralat: Tidak dapat baca fail cache '%s', melangkau...\n" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "Dalaman: mod %s aksara '%c' tidak dijangka dalam input" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "Ralat dalaman terjana %s tidak sah perm 0x%x\n" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan lekap" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan dbus" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan isyarat" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan ptrace" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan unix" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "awalan pemilik tidak dibenarkan pada peraturan keupayaan" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "peraturan dbus: kumpulan bersyarat %s=() tidak sah" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "peraturan unix: kumpulan bersyarat %s=() tidak sah" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "%s: Ralat ungkapan nalar: aksara '\\' escape\n" apparmor-3.0.4/parser/po/zh_CN.po0000664000175000017500000006073214201060045014404 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 04:12+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: zh_CN\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "错误:内存ä¸è¶³ã€‚\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "错误:basedir %s 䏿˜¯ç›®å½•,正在跳过。\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "错误:无法将目录 %s 添加到æœç´¢è·¯å¾„。\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "错误:无法分é…内存。\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "写入ä½ç½®æ— æ•ˆ\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "æ‹’ç»è®¸å¯æƒé™\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "内存ä¸è¶³\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "é…置文件未éµå®ˆåè®®\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "é…置文件和签åä¸åŒ¹é…\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "é…置文件版本ä¸å— Apparmor æ¨¡å—æ”¯æŒ\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "é…置文件已存在\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "é…置文件ä¸å­˜åœ¨\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: 无法添加\"%s\"。 " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: 无法替æ¢\"%s\"。 " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: 无法去除\"%s\"。 " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: 无法写入 stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: 声明:无效选项: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "添加\"%s\"æˆåŠŸã€‚\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "替æ¢\"%s\"æˆåŠŸã€‚\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "去除\"%s\"æˆåŠŸã€‚\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC 无效的递增缓冲区:%p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "无法打开 %s ï¼ %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "内存分é…错误:无法去除 ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "内存分é…错误:无法去除 %s:%s。" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "无法创建工作区域\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "无法åºåˆ—化é…置文件 %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: 无法写入整个é…置文件项\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "å‘现æ„外字符: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) å‘现æ„外字符:“%sâ€" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: 无法为å­åŸŸåŸºåº•装入点分é…内存\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "警告:无法在 %s 中找到åˆé€‚çš„ fs,是å¦å·²è£…入?\n" "使用 --subdomainfs 覆盖。\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s:对ä¸èµ·ã€‚æ‚¨éœ€è¦ root ç‰¹æƒæ‰èƒ½è¿è¡Œæ­¤ç¨‹åºã€‚\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%sï¼šè­¦å‘Šï¼æ‚¨å·²å°†æ­¤ç¨‹åºè®¾ç½®ä¸º setuid root。\n" "任何å¯ä»¥è¿è¡Œæ­¤ç¨‹åºçš„人都å¯ä»¥æ›´æ–° AppArmor é…置文件。\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "错误:无法读å–é…置文件 %s: %s。\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "内存分é…错误。" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: 文件中å‘现错误。正在中止。\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "ä¸å…许使用大写é™å®šç¬¦ “RWLIMXâ€ï¼Œè¯·è½¬æ¢ä¸ºå°å†™\n" "有关细节,请å‚è§ apparmor.d(5) 手册页。\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "冲çªçš„“aâ€å’Œâ€œwâ€è®¸å¯æƒé™äº’相排斥。" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "Exec é™å®šç¬¦'i'无效,已指定了和其冲çªçš„é™å®šç¬¦" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "æ— é™åˆ¶ exec é™å®šç¬¦ (%c%c) å…许将一些å±é™©çš„环境å˜é‡ä¼ é€’到无é™åˆ¶çš„进程;有关细节,请å‚è§â€œman 5 apparmor.dâ€ã€‚\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "Exec é™å®šç¬¦â€œ%câ€æ— æ•ˆï¼Œå·²æŒ‡å®šäº†ä¸Žå…¶å†²çªçš„é™å®šç¬¦" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "执行é™å®šç¬¦â€œ%c%câ€æ— æ•ˆï¼Œä¸Žå·²ç»æŒ‡å®šçš„é™å®šç¬¦å†²çª" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "内部:输入中有æ„外方å¼å­—符“%câ€" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "内部错误产生无效的æƒé™ 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor 语法分æžå™¨é”™è¯¯ï¼š%s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "无法åˆå¹¶é¡¹ã€‚内存ä¸è¶³\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "无法创建别å %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "é…置文件标志“debugâ€ä¸å†æœ‰æ•ˆã€‚" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "无效的é…置文件标志:%s。" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "声明:`rule'返回 NULL。" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "æ¨¡å¼æ— æ•ˆï¼Œåœ¨æ‹’ç»è§„则中,“xâ€ä¸èƒ½åœ¨æ‰§è¡Œé™å®šç¬¦â€œiâ€ã€â€œpâ€æˆ–“uâ€ä¹‹åŽ" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "æ¨¡å¼æ— æ•ˆï¼Œâ€œxâ€å¿…须在执行é™å®šç¬¦â€œiâ€ã€â€œpâ€ã€â€œcâ€æˆ–“uâ€ä¹‹åŽ" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "æ–¹å¼æ— æ•ˆï¼Œâ€œxâ€å‰é¢å¿…须带有 exec é™å®šç¬¦â€œiâ€ã€â€œpâ€æˆ–“uâ€" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "声明:“network_ruleâ€è¿”回无效å议。" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "声明:“change_profileâ€è¿”回 NULL。" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "声明:'hat rule'返回 NULL。" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "声明:“local_profile ruleâ€è¿”回 NULL。" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "å–æ¶ˆè®¾ç½® if 表达å¼ä¸­ä½¿ç”¨çš„布尔å˜é‡ %s" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "ä¸å®‰å…¨è§„则缺少 exec è®¸å¯æƒé™" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "å­é›†åªèƒ½ä½¿ç”¨é“¾æŽ¥è§„则。" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "链接和执行æƒé™å†²çªï¼Œç”±äºŽä¸€ä¸ªæ–‡ä»¶è§„则使用 ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "在命åçš„é…置文件转æ¢ä¸­ï¼Œé“¾æŽ¥æƒé™ä¸å—å…许。\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "是å¦ç¼ºå°‘行结æŸå­—符?(项:%s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "无效网络项。" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "功能 %s 无效。" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: ä¸åˆæ³•çš„å·¦ä¾§å¤§æ‹¬å· {,ä¸å…许嵌套分组\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex 分组错误:{} 内的项目数无效\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "%s: Regex 分组错误:无效的å³ä¾§èŠ±æ‹¬å· },未检测到匹é…çš„å·¦ä¾§èŠ±æ‹¬å· {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "%s: Regex 分组错误:组或字符类未关闭,需è¦å³ä¾§èŠ±æ‹¬å· }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: 检测到内部缓冲区溢出,超过 %d 个字符\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: 无法对输入行'%s'进行语法分æž\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "åˆå¹¶é…置文件 %s 的规则时出错,无法装载\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "错误 é…置文件 %s 包å«ä¸èƒ½ä¸Žæ­¤å†…核一起使用的策略元素:\n" "\tä¸å…许“*â€ã€â€œ?â€ã€å­—符范围,也ä¸å…è®¸â€œæˆ–â€æ“作。\n" "\t“**â€åªèƒ½åœ¨è§„则结尾处使用。\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "处ç†é…置文件 %s çš„ regex 时出错,无法装载\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "扩展é…置文件 %s çš„å˜é‡æ—¶å‡ºé”™ï¼Œæ— æ³•装载\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "为é…置文件 %s 添加 hat 访问规则时出错\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "é…置文件 %s 中存在错误,未能装载\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s:在åŽå¤„ç†ä¸­å‘现错误。正在中止。\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s:在 Regex åŽå¤„ç†ä¸­å‘现错误。正在中止。\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s:在åŽå¤„ç†ä¸­å‘现错误。正在中止。\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s: 在组åˆè§„则åŽå¤„ç†ä¸­å‘现错误。正在中止。\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/nb.po0000664000175000017500000006152114201060045013777 0ustar jjjj# translation of apparmor-parser.po to norsk bokmÃ¥l # translation of apparmor-parser.po to # translation of subdomain-parser.po to # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR Immunix, Inc. # # Olav Pettershagen , 2005, 2007. # Rune Nordbøe Skillingstad , 2007. # Olav P. , 2008. # Olav Pettershagen , 2008. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:17+0000\n" "Last-Translator: Olav Pettershagen \n" "Language-Team: norsk bokmÃ¥l\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: nb\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Feil: For lite minne.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Feil: basedir %s er ikke en katalog, hopper over.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Feil: Kan ikke legge katalogen %s til søkesti\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Feil: Kunne ikke tilordne minne\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Ugyldig lagringsposisjon\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Manglende rettigheter\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "For lite minne\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profilen samsvarer ikke med protokollen\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profilen samsvarer ikke med signaturen\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profilversjonen støttes ikke av Apparmor-modulen\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profilen finnes allerede\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profilen finnes ikke\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Kan ikke legge til \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Kan ikke erstatte \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Kan ikke slette \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Kan ikke skrive til stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Ugyldig valg: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Lagt til for \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Erstattet for \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Slettet for \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC ugyldig inkrementbuffer %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Kan ikke Ã¥pne %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Minnetilordningsfeil: Kan ikke fjerne ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Minnetilordningsfeil: Kan ikke fjerne %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "Kan ikke opprette arbeidsomrÃ¥de\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "kan ikke serietilordne profilen %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Kan ikke lagre hele profiloppføringen\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Fant uventet tegn: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(nettwork_mode) Fant uventet tegn: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: Kunne ikke tilordne minne for subdomenebasens monteringspunkt\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Advarsel: Kunne ikke finne en egnet fs i %s, er den montert?\n" "Bruk --subdomainfs for Ã¥ overstyre.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Beklager. Dette programmet mÃ¥ kjøres som rot.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Advarsel! Du har definert 'setuid root' for dette programmet.\n" "Alle som kan kjøre dette programmet, kan oppdatere dine AppArmor-profiler.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Feil: Kunne ikke lese profil %s:%s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Minnetilordningsfeil." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Feil funnet i filen. Avbryter.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Valg med store bokstaver \"RWLIMX\" brukes ikke lenger. Konverter til smÃ¥ " "bokstaver.\n" "Se manualsiden apparmor.d(5).\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Conflikt 'a'- and 'w'-tillatelser kan ikke brukes samtidig." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec-valget 'i' er ugyldig. Et annen valg som er i konflikt med dette, er " "allerede spesifisert" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Et ubegrenset exec-argument (%c%c) kan medføre at farlige miljøvariabler " "sendes til den ubegrensede prosessen. Se 'man 5 apparmor.d'.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "Exec-valget '%c' er ugyldig. Et annen valg er allerede spesifisert" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "Kjørevalget '%c%c' er ugyldig. Et annet valg er allerede spesifisert" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Intern feil: Uventet modustegn '%c' angitt" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Intern feil genererte ugyldig rettighet 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Feil under AppArmor-analyse: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Kan ikke samordne oppføringer. For lite minne\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Kunne ikke opprette aliaset %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "valget er ikke lenger gyldig" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Ugyldig profilvalg: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: 'rule' returnerte NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Ugyldig modus, i avvisingsregler mÃ¥ ikke kjørevalgene eller " "komme foran 'x'." #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "Ugyldig modus, 'x' mÃ¥ komme etter kjørevalgt 'i', 'p' eller 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "Ugyldig modus. 'x' mÃ¥ komme etter exec-valget 'i', 'p' eller 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert: 'network_rule' returnerte NULL." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert: 'change_profile' returnerte NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: 'hat rule' returnerte NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: 'local_profile' returnerte NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Udefinert boolsk variabel %s brukt i if-uttrykk" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "usikker regel uten exec-tillatelser" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "kan bare brukes med lenkeregler" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "Lenke- og kjørerettigheter er i konflikt med en regelfil som bruker" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "Lenkerettigheter er ikke tillatt for en navngitt profiloverføring.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "tegn for linjelslutt mangler? (oppføring: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Ugyldig nettverksoppføring." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Ugyldig egenskap %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Ã…pen { ikke tillatt, nesting-gruppering ikke tillatt\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Regex-grupperingsfeil: Ugyldig antall oppføringer mellom { og }\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex-grupperingsfeil: Ugyldig avsluttende }, ingen initial { funnet\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex-grupperingsfeil: Ã…pen grupperings- eller tegnklasse, lukket " "forventet }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Intern bufferlekkasje registrert, %d tegn overskredet\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Kan ikke analysere kommandolinje '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "FEIL under aktivering av regler for profil %s, kunne ikke laste\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "FEIL Profilen %s inneholder strategielementer som ikke kan brukes med denne " "kjernen:\n" "\t'*', '?', og alternerende elementer er ikke tillatt.\n" "\t'**' kan bare brukes pÃ¥ slutten av en regel.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "FEIL under behandling av regexs for profil %s, kunne ikke laste\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "FEIL under utvidelse av variabler for profil %s, kunne ikke laste\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "FEIL ved oppretting av hat-tilgangsregel for profilen %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "FEIL i profil %s, kunne ikke laste\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Feil funnet under etterbehandling. Avbryter.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: Feil funnet under etterbehandling av regex. Avbryter.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Feil funnet under etterbehandling. Avbryter.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Feil funnet under etterbehandling av kombinasjonsregler. Avbryter.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/xh.po0000664000175000017500000005523314201060045014022 0ustar jjjj# English translations for subdomain_parser package. # Copyright (C) 2005 Immunix, Inc. # This file is distributed under the same license as the subdomain_parser package. # Steve Beattie , 2005. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 04:04+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: xh\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Indawo yokubhala engalunganga\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Imvume yaliwe\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Siphelile isithuba kuvimba wolwazi\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Inkangeleko yecala ayiyithobeli inkqubo elandelwayo\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Inkangeleko yecala ayingqinelani nomtyibelo\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Inkangeleko yecala seyikhona\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Inkangeleko yecala ayikho kwayona\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Akukwazeki ukufakela i-\"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Akukwazeki ukubeka okunye endaweni ye-\"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Akukwazeki ukushenxisa i-\"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Akukwazeki ukubhalela kwi-stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: BANGA UBUNYANI: Isikhethwa esingasebenzisekiyo: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Ukufakela kuphumelele ukwenzela i-\"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Ukubeka okunye endaweni yokunye kuphumelele ukwenzela i-\"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Ukushenxisa kuphumelele ukwenzela i-\"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Ayikwazanga kuvuleka i-%s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "akukwazekanga ukudala indawo yomsebenzi\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "akukwazekanga ukulandelelanisa inkangeleko yecala ye-%s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" "%s: Akukwazekanga ukubhala ungeniso olupheleleyo lwenkangeleko yecala\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Kufunyenwe uphawu oluthatha isithuba olungalindelekanga: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Uvimba wolwazi akakwazanga kwabelwa indawo yogxumeko kwisiseko sommandla " "wolawulo owonganyelweyo\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Imposiso yokwabela okuthile uvimba wolwazi" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Kufunyenwe iimposiso kwifayili. Kulahliwe.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Isichazi esiqhutywayo esingu-'i' asisebenziseki, isichazi esingquzulanayo " "sesixeliwe" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" "Amangeniso awakwazanga kumanyaniswa. Siphelile Isithuba Kuvimba Wolwazi\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Banga ubunyani: `umthetho' ubuyise OKUNGEYONTO." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Banga ubunyani: `umthetho we-hat' ubuyise OKUNGEYONTO." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" "ulahlekelwe sisiphelo somgca wophawu oluthatha isithuba? (ungeniso: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: Ukuvula okungekho mthethweni {, amaqela azinziswe kokunye awavunyelwa\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Imposiso yokubekwa ngokwamaqela kwe-regex: Inani lamanqaku " "elingasebenzisekiyo phakathi kwe-{}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Imposiso yokubekwa ngokwamaqela kwe-regex: ukuvala okungasebenzisekiyo " "}, akukho ngqinelwano luvulekileyo { luchongiweyo\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: Kuchongwe ukuphuphuma kwangaphakathi kwesigcini sethutyana, %d " "zigqithisile iimpawu ezithatha izithuba\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" "%s: Akukwazekanga ukwahlukanisa umgca wokungxalwa njengesiqalo '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "IMPOSISO kwinkangeleko yecala %s, isilele ukulayisha\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Kufunyenwe imposiso xa kudityaniswa imithetho ngethuba lakamva " "lokuqhubela phambili. Kulahliwe.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ko.po0000664000175000017500000006457114201060045014021 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-20 22:27+0000\n" "Last-Translator: Litty \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ko\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "오류: 메모리가 부족합니다.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "오류: basedir %sì€(는) 디렉토리가 아니므로 건너ëœë‹ˆë‹¤.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "오류: %s 디렉토리를 검색 ê²½ë¡œì— ì¶”ê°€í•  수 없습니다.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "오류: 메모리를 할당할 수 없습니다.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "쓰기 위치가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤.\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "사용 ê¶Œí•œì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤.\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "메모리 부족\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "í”„ë¡œí•„ì„ ë³µì‚¬í•  수 없습니다: ìž˜ëª»ëœ ë©”ëª¨ë¦¬ 주소\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "프로파ì¼ì´ 프로토콜과 ë§žì§€ 않습니다.\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "프로필과 ì„œëª…ì´ ì¼ì¹˜í•˜ì§€ 않ìŒ\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "í”„ë¡œíŒŒì¼ ë²„ì „ì´ Apparmor 모듈ì—서 ì§€ì›ë˜ì§€ 않습니다.\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "프로파ì¼ì´ ì´ë¯¸ 있습니다.\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "프로파ì¼ì´ 없습니다.\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\"ì„(를) 추가할 수 없습니다. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\"ì„(를) 바꿀 수 없습니다. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\"ì„(를) 제거할 수 없습니다. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdoutì— ì“¸ 수 없습니다.\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: ìž˜ëª»ëœ ì˜µì…˜: - %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\"ì— ì„±ê³µì ìœ¼ë¡œ 추가했습니다.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\"ì˜ ë°”ê¾¸ê¸° ìž‘ì—…ì´ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\"ì˜ ì œê±° ìž‘ì—…ì´ ì„±ê³µí–ˆìŠµë‹ˆë‹¤.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC ìž˜ëª»ëœ ì¦ë¶„ ë²„í¼ %p 위치 %p 확장 %p í¬ê¸° %d ê²°ê³¼ %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%sì„(를) ì—´ 수 ì—†ìŒ - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "메모리 할당 오류: ^%sì„(를) 제거할 수 없습니다.\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "메모리 할당 오류: %s:%sì„(를) 제거할 수 없습니다." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "작업 ì˜ì—­ì„ ìƒì„±í•  수 없습니다.\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "í”„ë¡œíŒŒì¼ %sì„(를) ì¼ë ¨ë²ˆí˜¸í™”í•  수 없습니다.\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: ì „ì²´ í”„ë¡œíŒŒì¼ í•­ëª©ì— ì“¸ 수 없습니다.\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "ìž˜ëª»ëœ ë¬¸ìžê°€ 있ìŒ: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) ìž˜ëª»ëœ ë¬¸ìžê°€ 있ìŒ: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: 서브ë„ë©”ì¸ë² ì´ìФ 마운트 í¬ì¸íŠ¸ì— ëŒ€í•´ 메모리를 할당할 수 없습니다.\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "경고: %sì— ì í•©í•œ fsê°€ 없습니다. 마운트ë˜ì–´ 있습니까?\n" "--subdomainfs를 사용하여 무시할 수 있습니다.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: ì´ í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•˜ë ¤ë©´ 루트 ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: 경고! ì´ í”„ë¡œê·¸ëž¨ì„ setuid 루트로 설정했습니다.\n" "ë”°ë¼ì„œ ì´ í”„ë¡œê·¸ëž¨ì„ ì‹¤í–‰í•  수 있는 모든 사용ìžê°€ AppArmor 프로파ì¼ì„ ì—…ë°ì´íŠ¸í•  수 있습니다.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "오류: í”„ë¡œíŒŒì¼ %sì„(를) ì½ì„ 수 ì—†ìŒ: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "메모리 할당 오류입니다." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: 파ì¼ì— 오류가 발견ë˜ì–´ 중단합니다.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "ëŒ€ë¬¸ìž í•œì •ìž \"RWLIMX\"는 ë” ì´ìƒ 사용ë˜ì§€ 않습니다. 소문ìžë¡œ 변경하십시오.\n" "ìžì„¸í•œ ë‚´ìš©ì€ apparmor.d(5) 맨페ì´ì§€ë¥¼ 참조하십시오.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "'a' ë° 'w' ì‚¬ìš©ê¶Œí•œì„ ë™ì‹œì— 설정할 수 없습니다." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "실행 í•œì •ìž 'i'는 ì¶©ëŒì„ ì¼ìœ¼ì¼œ 사용할 수 없습니다. ê°™ì€ í•œì •ìžê°€ ì´ë¯¸ 지정ë˜ì–´ 있습니다." #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "제한ë˜ì§€ ì•Šì€ ì‹¤í–‰ 한정ìž(%c%c)를 사용하면 위험한 환경 변수가 제한ë˜ì§€ ì•Šì€ í”„ë¡œì„¸ìŠ¤ë¡œ ì „ë‹¬ë  ìˆ˜ 있습니다. ìžì„¸í•œ ë‚´ìš©ì€ 'man " "5 apparmor.d'를 참조하십시오.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "실행 í•œì •ìž '%c'ì€(는) ì¶©ëŒì„ ì¼ìœ¼í‚¤ë¯€ë¡œ 사용할 수 없습니다. ê°™ì€ í•œì •ìžê°€ ì´ë¯¸ 지정ë˜ì–´ 있습니다." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "실행 수ì‹ìž '%c%c'ì´(ê°€) 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. ì´ë¯¸ ì§€ì •ëœ ìˆ˜ì‹ìžì™€ ì¶©ëŒí•©ë‹ˆë‹¤." #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "ë‚´ë¶€ 오류: ìž˜ëª»ëœ ëª¨ë“œ ë¬¸ìž '%c'ì´(ê°€) ìž…ë ¥ë˜ì—ˆìŠµë‹ˆë‹¤." #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "ë‚´ë¶€ 오류 ë°œìƒ. ìž˜ëª»ëœ ê¶Œí•œ 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor 구문 ë¶„ì„ ì˜¤ë¥˜: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "í•­ëª©ì„ ë³‘í•©í•  수 없습니다. 메모리가 부족합니다.\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "별칭 %sì„(를) 만들지 못했습니다. -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "'debug' í”„ë¡œíŒŒì¼ í”Œëž˜ê·¸ê°€ ë” ì´ìƒ 유효하지 않습니다." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "ìž˜ëª»ëœ í”„ë¡œíŒŒì¼ í”Œëž˜ê·¸: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "어설션: `rule'ì´ NULLì„ ë°˜í™˜í–ˆìŠµë‹ˆë‹¤." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "ìž˜ëª»ëœ ëª¨ë“œ. ê±°ë¶€ 규칙ì—서 'x' ì•žì— ì‹¤í–‰ 수ì‹ìž 'i', 'p' ë˜ëŠ” 'u'ê°€ ì„ í–‰ë˜ì–´ì„œëŠ” 안ë©ë‹ˆë‹¤." #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "ìž˜ëª»ëœ ëª¨ë“œ. 'x' ì•žì— ì‹¤í–‰ 수ì‹ìž 'i', 'p', 'c' ë˜ëŠ” 'u'ê°€ ì„ í–‰ë˜ì–´ì•¼ 합니다." #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "ìž˜ëª»ëœ ëª¨ë“œìž…ë‹ˆë‹¤. 'x'는 실행 í•œì •ìž 'i', 'p' ë˜ëŠ” 'u' ë’¤ì— ì™€ì•¼ 합니다." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "어설션: `network_rule'ì´ ìž˜ëª»ëœ í”„ë¡œí† ì½œì„ ë°˜í™˜í•©ë‹ˆë‹¤." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "어설션: `change_profile'ì´ NULLì„ ë°˜í™˜í–ˆìŠµë‹ˆë‹¤." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "어설션: 'hat rule'ì´ NULLì„ ë°˜í™˜í–ˆìŠµë‹ˆë‹¤." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "í‰ê°€: 'local_profile rule'ì´ NULLì„ ë°˜í™˜í–ˆìŠµë‹ˆë‹¤." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "if ì‹ì— ì‚¬ìš©ëœ ë¶€ìš¸ 변수 %sì˜ ì„¤ì •ì´ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤." #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "실행 ê¶Œí•œì´ ëˆ„ë½ë˜ì–´ ê·œì¹™ì´ ì•ˆì „í•˜ì§€ 않습니다." #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "하위 ì§‘í•©ì€ ë§í¬ 규칙ì—ë§Œ 사용할 수 있습니다." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "다ìŒì„ 사용하는 íŒŒì¼ ê·œì¹™ì—서 ë§í¬ ë° ì‹¤í–‰ 권한 ì¶©ëŒ ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "ë§í¬ ê¶Œí•œì´ ëª…ëª…ëœ í”„ë¡œíŒŒì¼ ì „í™˜ì—서 허용ë˜ì§€ 않습니다.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "í–‰ì˜ ë 문ìžê°€ 누ë½ë˜ì—ˆìŠµë‹ˆê¹Œ? (항목: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "ìž˜ëª»ëœ ë„¤íŠ¸ì›Œí¬ í•­ëª©ìž…ë‹ˆë‹¤." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "성능 %sì´(ê°€) 잘못ë˜ì—ˆìŠµë‹ˆë‹¤." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: 여는 괄호 {ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤. 중첩 ê·¸ë£¹ì€ í—ˆìš©ë˜ì§€ 않습니다.\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: ì •ê·œì‹ ê·¸ë£¹í™” 오류: {} 사ì´ì˜ 항목 수가 잘못ë¨\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "%s: ì •ê·œì‹ ê·¸ë£¹í™” 오류: 닫는 괄호 }ì— í•´ë‹¹í•˜ëŠ” 여는 괄호 {ê°€ 없습니다.\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "%s: ì •ê·œì‹ ê·¸ë£¹í™” 오류: 닫히지 ì•Šì€ ê·¸ë£¹í™” ë˜ëŠ” ë¬¸ìž í´ëž˜ìŠ¤ê°€ 있습니다. 닫는 괄호 }ê°€ 필요합니다.\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: ë‚´ë¶€ ë²„í¼ ì˜¤ë²„í”Œë¡œ íƒì§€, %dìžê°€ 초과ë˜ì—ˆìŠµë‹ˆë‹¤.\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: ìž…ë ¥ í–‰ '%s'ì˜ êµ¬ë¬¸ì„ ë¶„ì„í•  수 없습니다.\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "%s 프로파ì¼ì˜ ê·œì¹™ì„ ë³‘í•©í•˜ëŠ” ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì—¬ 로드하지 못했습니다.\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "오류: %s 프로파ì¼ì€ ì´ ì»¤ë„로 사용할 수 없는 ì •ì±…ì„ í¬í•¨í•©ë‹ˆë‹¤:\n" "\t'*', '?', ë¬¸ìž ë²”ìœ„ ë° ë³€ê²½ì€ í—ˆìš©ë˜ì§€ 않습니다.\n" "\t'**'는 ê·œì¹™ì˜ ë§ˆì§€ë§‰ 부분ì—ë§Œ 사용할 수 있습니다.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "%s 프로파ì¼ì˜ ì •ê·œì‹ì„ 처리하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì—¬ 로드하지 못했습니다.\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "%s 프로파ì¼ì˜ 변수를 확장하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì—¬ 로드하지 못했습니다.\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "프로파ì¼ì— 대한 hat 액세스 규칙 추가 중 오류 %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "í”„ë¡œíŒŒì¼ %sì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ì—¬ 로드하지 못했습니다.\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: 후처리 ë„중 오류가 발견ë˜ì—ˆìŠµë‹ˆë‹¤. 중단 중입니다.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: ì •ê·œì‹ í›„ì²˜ë¦¬ 시 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤. 프로세스를 중단합니다.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: 후처리 ë„중 오류가 발견ë˜ì—ˆìŠµë‹ˆë‹¤. 중단 중입니다.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s: 규칙 후처리를 결합하는 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí–ˆìŠµë‹ˆë‹¤. 프로세스를 중단합니다.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ar.po0000664000175000017500000006610714201060045014007 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 01:29+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ar\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "خطأ: Ù†ÙØ¯Øª الذاكرة.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "خطأ: basedir %s ليس دليلاً، يتم الآن التخطي.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "خطأ: تعذرت Ø¥Ø¶Ø§ÙØ© الدليل %s إلى مسار البحث.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "خطأ: تعذر تخصيص الذاكرة.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "موضع كتابة غير صالح\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "الإذن مرÙوض\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Ù†ÙØ¯Øª الذاكرة\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "مل٠التعري٠غير متواÙÙ‚ مع البروتوكول\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "مل٠التعري٠غير متواÙÙ‚ مع التوقيع\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "لا تدعم الوحدة النمطية Apparmor إصدار مل٠التعريÙ\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "مل٠التعري٠موجود Ø¨Ø§Ù„ÙØ¹Ù„\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "مل٠التعري٠غير موجود\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: تعذرت Ø¥Ø¶Ø§ÙØ© \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: تعذر استبدال \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: تعذرت إزالة \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: تعذرت الكتابة إلى stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: تأكيد: خيار غير صالح: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "نجحت Ø§Ù„Ø¥Ø¶Ø§ÙØ© لـ \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "نجح الاستبدال لـ \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "نجحت الإزالة لـ \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "PANIC ذاكرة وسيطة للزيادة غير صالحة %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "تعذر ÙØªØ­ %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "خطأ ÙÙŠ تخصيص الذاكرة: تعذرت إزالة ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "خطأ ÙÙŠ تخصيص الذاكرة: تعذرت إزالة %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "تعذر إنشاء منطقة عمل\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "تعذر تعيين تسلسل مل٠التعري٠%s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: تعذرت كتابة إدخال مل٠التعري٠بالكامل\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "تم العثور على حر٠غير متوقع: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) تم العثور على حر٠غير متوقع: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: تعذر تخصيص ذاكرة لنقطة توصيل قاعدة المجال Ø§Ù„ÙØ±Ø¹ÙŠ\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "تحذير: تعذر العثور على نظام Ù…Ù„ÙØ§Øª مناسب ÙÙŠ %sØŒ هل تم توصيله؟\n" "استخدم --subdomainfs لتجاوزه.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: عذرًا. يجب أن ØªØªÙˆÙØ± لديك امتيازات المسؤول لكي تتمكن من تشغيل هذا " "البرنامج.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: تحذير!لقد قمت بتعيين جذر setuid لهذا البرنامج.\n" "يمكن لأي شخص يستطيع تشغيل هذا البرنامج القيام بتحديث Ù…Ù„ÙØ§Øª تعري٠AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "خطأ: تعذرت قراءة مل٠التعري٠%s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "خطأ ÙÙŠ تخصيص الذاكرة." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: تم العثور على أخطاء ÙÙŠ الملÙ. يتم الآن الإيقاÙ.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "يتم إهمال المؤهلات بأحر٠كبيرة \"RWLIMX\"ØŒ الرجاء تحويلها إلى أحر٠صغيرة\n" "راجع ØµÙØ­Ø© الدليل apparmor.d(5) للحصول على Ø§Ù„ØªÙØ§ØµÙŠÙ„.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "لا يمكن استخدام الإذنين 'a' Ùˆ'w' المتعارضين معًا." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "المؤهل التنÙيذي 'i' غير صالح، تم تحديد مؤهل متعارض Ø¨Ø§Ù„ÙØ¹Ù„" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "يسمح المؤهل التنÙيذي غير المقيد (%c%c) بتمرير بعض متغيرات البيئة الخطيرة إلى " "العملية غير المقيدة؛ راجع 'man 5 apparmor.d' للحصول على Ø§Ù„ØªÙØ§ØµÙŠÙ„.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "المؤهل التنÙيذي '%c' غير صالح، تم تحديد المؤهل المتعارض Ø¨Ø§Ù„ÙØ¹Ù„" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "المؤهل التنÙيذي '%c%c' غير صالح، تم تحديد مؤهل متعارض Ø¨Ø§Ù„ÙØ¹Ù„" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "داخلي: حر٠وضع غير متوقع '%c' ÙÙŠ الإدخال" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "تسبب خطأ داخلي ÙÙŠ إنشاء إذن غير صالح 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "خطأ ÙÙŠ محلل AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "تعذر دمج الإدخالات. Ù†ÙØ¯Øª الذاكرة\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "ÙØ´Ù„ إنشاء الاسم المستعار %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "لم تعد علامة مل٠التعري٠'تصحيح الأخطاء' صالحة." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "علامة مل٠تعري٠غير صالحة: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "تأكيد: أرجعت \"القاعدة\" قيمة خالية." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "وضع غير صالح، ÙÙŠ قواعد Ø§Ù„Ø±ÙØ¶ يجب وضع 'x' قبل المؤهل التنÙيذي 'i' أو 'p' أو " "'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "وضع غير صالح، يجب وضع 'x' بعد المؤهل التنÙيذي 'i' أو 'p' أو 'c' أو 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "وضع غير صالح، يجب وضع المؤهل التنÙيذي 'i' أو 'p' أو 'u' قبل 'x'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "تأكيد: أرجعت `network_rule' بروتوكولاً غير صالح." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "تأكيد: أرجع `change_profile' قيمة خالية." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "تأكيد: أرجعت \"hat rule\" قيمة خالية." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "تأكيد: أرجعت `local_profile rule' قيمة خالية." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "إلغاء تعيين المتغير المنطقي %s المستخدم ÙÙŠ تعبير if" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "قاعدة غير آمنة بدون أذونات تنÙيذ" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "لا يمكن استخدام المجموعة Ø§Ù„ÙØ±Ø¹ÙŠØ© إلا مع قواعد الارتباط." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "تعارض بين الارتباط والأذونات التنÙيذية ÙÙŠ قاعدة مل٠عند استخدام ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" "لا ÙŠÙØ³Ù…Ø­ باستخدام أذونات الارتباط ÙÙŠ عملية انتقال Ù…Ù„Ù ØªØ¹Ø±ÙŠÙ Ù…Ø¹Ø±ÙˆÙØ©.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "حر٠نهاية سطر Ù…Ùقود؟ (إدخال: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "إدخال الشبكة غير صالح." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "إمكانية غير صالحة %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: ÙØªØ­ غير شرعي (ØŒ غير مسموح بتجميعات متداخلة\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: خطأ ÙÙŠ تجميع Regex: عدد غير صالح للبنود بين {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: خطأ ÙÙŠ تجميع Regex: إغلاق غير صالح }ØŒ لا يوجد ÙØªØ­ متواÙÙ‚ ( تم اكتشاÙÙ‡\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: خطأ ÙÙŠ تجميع Regex: تجميع غير مغلق أو ÙØ¦Ø© أحر٠غير مغلقة، الإغلاق " "المتوقع }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: تم اكتشا٠تجاوز سعة الذاكرة الوسيطة الداخلية، %d تم تجاوز الأحرÙ\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: تعذر تحليل سطر الإدخال '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "خطأ أثناء دمج القواعد لمل٠التعري٠%sØŒ ÙØ´Ù„ التحميل\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "خطأ ÙÙŠ مل٠التعري٠%s الذي يحتوي على عناصر سياسة غير قابلة للاستخدام مع " "kernel:\n" "\tغير مسموح باستخدام '*' Ùˆ'?' ونطاقات الأحر٠والتبديلات.\n" "\tلا يمكن استخدام '**' إلا ÙÙŠ نهاية القاعدة.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "خطأ أثناء معالجة تعبيرات regex لمل٠التعري٠%sØŒ ÙØ´Ù„ التحميل\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "خطأ أثناء توسيع متغيرات مل٠التعري٠%sØŒ ÙØ´Ù„ التحميل\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "خطأ أثناء Ø¥Ø¶Ø§ÙØ© قاعدة وصول hat لمل٠التعري٠%s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "خطأ ÙÙŠ مل٠التعري٠%sØŒ ÙØ´Ù„ التحميل\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: تم العثور على أخطاء أثناء المعالجة اللاحقة. يتم الآن الإيقاÙ.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: تم العثور على أخطاء أثناء المعالجة اللاحقة لـ regex. يتم الآن الإيقاÙ.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: تم العثور على أخطاء أثناء المعالجة اللاحقة. يتم الآن الإيقاÙ.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: تم العثور على أخطاء أثناء المعالجة اللاحقة لقواعد الدمج. يتم الآن " "الإيقاÙ.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/en_AU.po0000664000175000017500000005112414201060045014365 0ustar jjjj# English (Australia) translation for apparmor # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:00+0000\n" "Last-Translator: AppArmor list \n" "Language-Team: English (Australia) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: en_AU\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/hi.po0000664000175000017500000006073414201060045014005 0ustar jjjj# translation of apparmor-parser.hi.po to Hindi # Sangeeta Kumari , 2007. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:49+0000\n" "Last-Translator: Sangeeta Kumari \n" "Language-Team: Hindi \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: hi\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "तà¥à¤°à¥à¤Ÿà¤¿: याददाशà¥à¤¤ के बाहर.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "तà¥à¤°à¥à¤Ÿà¤¿: basedir %s à¤à¤• निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा नहीं है, छोड़ रहा है.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "%s तà¥à¤°à¥à¤Ÿà¤¿:खोज पथ के निरà¥à¤¦à¥‡à¤¶à¤¿à¤•ा में नहीं जोड़ सका .\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "तà¥à¤°à¥à¤Ÿà¤¿: याददाशà¥à¤¤ नहीं बांट सका.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "बà¥à¤°à¥€ लेखन सà¥à¤¥à¤¿à¤¤à¤¿\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "अनà¥à¤®à¤¤à¤¿ देने से इंकार किया\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "सà¥à¤®à¥ƒà¤¤à¤¿ में नहीं है\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² पà¥à¤°à¥‹à¤Ÿà¥‹à¤•ॉल की पà¥à¤·à¥à¤Ÿà¤¿ नहीं करता\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² हसà¥à¤¤à¤¾à¤•à¥à¤·à¤° से मेल नहीं खाता\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² पहले से मौजूद है\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² मौजूद नहीं है\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" को जोड़ने में अकà¥à¤·à¤®à¥¤ " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" को पà¥à¤°à¤¤à¤¿à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ करने में अकà¥à¤·à¤®à¥¤ " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" को हटाने में अकà¥à¤·à¤®à¥¤ " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdout पर लिखने में अकà¥à¤·à¤®\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: अमानà¥à¤¯ विकलà¥à¤ª : %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\" के लिठजोड़ना सफल रहा।\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\" के लिठपà¥à¤°à¤¤à¤¿à¤¸à¥à¤¥à¤¾à¤ªà¤¨ सफल रहा।\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\" के लिठहटाना सफल रहा।\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "पैनिक बैड इंकà¥à¤°à¥€à¤®à¥‡à¤‚ट बफर %p pos %p ext %p आकार %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s - %s को खोलने में अकà¥à¤·à¤®\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "कारà¥à¤¯ कà¥à¤·à¥‡à¤¤à¥à¤° सृजित करने में अकà¥à¤·à¤®\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² %s को कà¥à¤°à¤®à¤¾à¤‚कित करने में अकà¥à¤·à¤®\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: संपूरà¥à¤£ पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ को लिखने में अकà¥à¤·à¤®\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "अपà¥à¤°à¤¤à¥à¤¯à¤¾à¤¶à¤¿à¤¤ वरà¥à¤£ मिला : '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: सबडोमेनबेस माउंट बिंदॠके लिठसà¥à¤®à¥ƒà¤¤à¤¿ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ नहीं कर सका\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "तà¥à¤°à¥à¤Ÿà¤¿: पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² नहीं पढ़ सका %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "सà¥à¤®à¥ƒà¤¤à¤¿ निरà¥à¤§à¤¾à¤°à¤£ तà¥à¤°à¥à¤Ÿà¤¿à¥¤" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: फाइल में तà¥à¤°à¥à¤Ÿà¤¿à¤¯à¤¾à¤‚ पà¥à¤°à¤¾à¤ªà¥à¤¤ हà¥à¤ˆà¤‚। रदà¥à¤¦ कर रहा है।\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec कà¥à¤µà¤¾à¤²à¥€à¤«à¤¾à¤¯à¤° 'i' अमानà¥à¤¯ है, टकरावकारी कà¥à¤µà¤¾à¤²à¥€à¤«à¤¾à¤¯à¤° को पहले ही निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ कर " "दिया गया है" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¥‹à¤‚ को à¤à¤• में नहीं मिला सकता। सà¥à¤®à¥ƒà¤¤à¤¿ में नहीं है\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: `rule' NULL पर लौट आया।" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: 'hat rule' NULL पर लौट आया।" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "लाइन के अंत का à¤à¤• वरà¥à¤£ छूटा है? (पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ : %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: गैर-कानूनन खोलना {, नेसà¥à¤Ÿà¤¿à¤‚ग गà¥à¤°à¥à¤ªà¤¿à¤‚गà¥à¤¸ की अनà¥à¤®à¤¤à¤¿ नहीं है\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex गà¥à¤°à¥à¤ªà¤¿à¤‚ग तà¥à¤°à¥à¤Ÿà¤¿ : {} के बीच मदों की अमानà¥à¤¯ संखà¥à¤¯à¤¾\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex गà¥à¤°à¥à¤ªà¤¿à¤‚ग तà¥à¤°à¥à¤Ÿà¤¿ : बंद अमानà¥à¤¯ }, किसी मेल खाने वाले खोलने का { पता " "नहीं लगा\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: आंतरिक बफर के ओवरफà¥à¤²à¥‹ होने का पता लगा, %d वरà¥à¤£ अधिक हैं\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: इनपà¥à¤Ÿ लाइन '%s' को पारà¥à¤¸ करने में अकà¥à¤·à¤®\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤² %s में तà¥à¤°à¥à¤Ÿà¤¿ है, लोड करने में असफल रहा\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: संयोगकारी नियमों के पà¥à¤°à¤¸à¤‚सà¥à¤•रण-पशà¥à¤šà¤¾à¤¤ में तà¥à¤°à¥à¤Ÿà¤¿à¤¯à¤¾à¤‚ पà¥à¤°à¤¾à¤ªà¥à¤¤ हà¥à¤ˆà¤‚। रदà¥à¤¦ " "कर रहा है।\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/si.po0000664000175000017500000005064314201060045014016 0ustar jjjj# Sinhala message file for YaST2 (@memory@). # Copyright (C) 2007 SUSE Linux Products GmbH. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:30+0000\n" "Last-Translator: i18n@suse.de\n" "Language-Team: Sinhala \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: si\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/en_GB.po0000664000175000017500000006605114201060045014355 0ustar jjjj# English (United Kingdom) translation for apparmor # Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2013. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2014-10-22 19:10+0000\n" "Last-Translator: Andi Chandler \n" "Language-Team: English (United Kingdom) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: en_GB\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Error: Out of memory.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Error: basedir %s is not a directory, skipping.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Error: Could not add directory %s to search path.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Error: Could not allocate memory.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Bad write position\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permission denied\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Out of memory\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Could not copy profile: Bad memory address\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profile does not conform to protocol\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profile does not match signature\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profile version not supported by Apparmor module\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profile already exists\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profile doesn't exist\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "Permission denied; attempted to load a profile while confined?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Unknown error (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Unable to add \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Unable to replace \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Unable to remove \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Unable to write to stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Unable to write to output file\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Invalid option: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Addition succeeded for \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Replacement succeeded for \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Removal succeeded for \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "profile %s network rules not enforced\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Unknown pattern type\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Unable to open %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Memory Allocation Error: Unable to remove ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Memory Allocation Error: Unable to remove %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "unable to create work area\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "unable to serialise profile %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Unable to write entire profile entry\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Unable to write entire profile entry to cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Could not open '%s'" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat failed for '%s'" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir failed '%s'" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat failed for '%s'" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Could not open '%s' in '%s'" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Found unexpected character: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "Variable declarations do not accept trailing commas" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(network_mode) Found unexpected character: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Warning from %s (%s%sline %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: Could not allocate memory for subdomainbase mount point\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Sorry. You need root privileges to run this programme.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Warning! You've set this programme setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Error: Could not read profile %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Memory allocation error." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "Cached load succeeded for \"%s\".\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "Cached reload succeeded for \"%s\".\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Errors found in file. Aborting.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to " "lowercase.\n" "See the apparmor.d(5) manpage for details.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Conflict 'a' and 'w' perms are mutually exclusive." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "Exec qualifier 'i' invalid, conflicting qualifier already specified." #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Exec qualifier '%c' invalid, conflicting qualifier already specified." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified." #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Internal: unexpected mode character '%c' in input" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Internal error generated invalid perm 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor parser error: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Couldn't merge entries. Out of Memory.\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "profile %s: has merged rule %s with conflicting x modifiers.\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "Profile attachment must begin with a '/'." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Failed to create alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "Profile flag chroot_relative conflicts with namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "Profile flag mediate_deleted conflicts with delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Profile flag chroot_attach conflicts with chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Profile flag 'debug' is no longer valid." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Invalid profile flag: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: `rule' returned NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Invalid mode, in deny rules, 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'." #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'." #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert: `network_rule' return invalid protocol." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert: `change_profile' returned NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: 'hat rule' returned NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: 'local_profile rule' returned NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Unset boolean variable %s used in if-expression" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "unsafe rule missing exec permissions" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subset can only be used with link rules." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "link and exec perms conflict on a file rule using ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "link perms are not allowed on a named profile transition.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "missing an end of line character? (entry: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Invalid network entry." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Invalid capability %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "AppArmor parser error for %s%s%s at line %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "AppArmor parser error, %s%s line %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Illegal open {, nesting groupings not allowed\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex grouping error: Invalid number of items between {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Internal buffer overflow detected, %d characters exceeded\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Unable to parse input line '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "%s: Invalid profile name '%s' - bad regular expression\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "ERROR merging rules for profile %s, failed to load\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "ERROR processing regexs for profile %s, failed to load\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "ERROR expanding variables for profile %s, failed to load\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "ERROR adding hat access rule for profile %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ERROR in profile %s, failed to load\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Errors found during postprocessing. Aborting.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: Errors found during regex postprocess. Aborting.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Errors found during postprocess. Aborting.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s: Errors found in combining rules postprocessing. Aborting.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Could not process include directory '%s' in '%s'" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "Feature buffer full." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Out of memory" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Cannot create cache directory: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "File in cache directory location: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Cannot update cache directory: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "Internal: unexpected DBus mode character '%c' in input" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "Internal error generated invalid DBus perm 0x%x\n" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "deny prefix not allowed" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "owner prefix not allowed" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "owner prefix not allow on mount rules" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "owner prefix not allow on dbus rules" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "owner prefix not allow on capability rules" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "invalid mount conditional %s%s" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "bad mount rule" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "mount point conditions not currently supported" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "invalid pivotroot conditional '%s'" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "%s: Regex grouping error: Exceeded maximum nesting of {}\n" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "ERROR processing policydb rules for profile %s, failed to load\n" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "ERROR replacing aliases for profile %s, failed to load\n" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "%s: Unable to write %s\n" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "Error: Could not read binary profile or cache file %s: %s.\n" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "Error: Could not read cache file '%s', skipping...\n" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "Internal: unexpected %s mode character '%c' in input" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "Internal error generated invalid %s perm 0x%x\n" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "owner prefix not allowed on mount rules" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "owner prefix not allowed on dbus rules" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "owner prefix not allowed on signal rules" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "owner prefix not allowed on ptrace rules" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "owner prefix not allowed on unix rules" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "owner prefix not allowed on capability rules" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "dbus rule: invalid conditional group %s=()" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "unix rule: invalid conditional group %s=()" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "%s: Regex error: trailing '\\' escape character\n" apparmor-3.0.4/parser/po/mk.po0000664000175000017500000005101214201060045014001 0ustar jjjj# Macedonian message file for YaST2 (@memory@). # Copyright (C) 2006 SUSE Linux Products GmbH. # Зоран ДимовÑки # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:27+0000\n" "Last-Translator: Зоран ДимовÑки \n" "Language-Team: Macedonian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: mk\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/el.po0000664000175000017500000006354314201060045014006 0ustar jjjj# translation of apparmor-parser.el.po to Ελληνικά # @TITLE@ # Copyright (C) 2006, SUSE Linux GmbH, Nuremberg # # This file is distributed under the same license as @PACKAGE@ package. FIRST # # Vasileios Giannakopoulos , 2007. # Kostas Boukouvalas , 2007. # Vasileios Giannakopoulos , 2008. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 01:42+0000\n" "Last-Translator: Vasileios Giannakopoulos \n" "Language-Team: Ελληνικά \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: el\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Σφάλμα: Μνήμη πλήÏης.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Σφάλμα: Το basedir %s δεν είναι κατάλογος, παÏαβλέπεται.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Σφάλμα: Αδυναμία Ï€Ïοσθήκης καταλόγου %s στη διαδÏομή έÏευνας.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Σφάλμα: Αδυναμία Ï€ÏοσδιοÏÎ¹ÏƒÎ¼Î¿Ï Î¼Î½Î®Î¼Î·Ï‚.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Λάθος θέση εγγÏαφής\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "ΑπαγοÏεÏεται η Ï€Ïόσβαση\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Μνήμη πλήÏης\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Το Ï€Ïοφίλ δεν εναÏμονίζεται με το Ï€Ïωτόκολλο\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Το Ï€Ïοφίλ δεν ταιÏάζει με την υπογÏαφή\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Η έκδοση Ï€Ïοφίλ δεν υποστηÏίζεται από την μονάδα Apparmor\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Το Ï€Ïοφίλ υπάÏχει ήδη\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Το Ï€Ïοφίλ δεν υπάÏχει\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Αδυναμία Ï€Ïοσθήκης \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Αδυναμία αντικατάστασης \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s Αδυναμία αφαίÏεσης \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Αδυναμία εγγÏαφής στο stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s ΠΑΡΕΜΒΑΣΗ: Λανθασμένη επιλογή: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Η Ï€Ïοσθήκη υπεÏβαίνει για \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Η αντικατάσταση υπεÏβαίνει για \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Removal succeeded for \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIC κακή ζώνη ποσοτήτων %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Αδυναμία ανοίγματος %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "αδυναμία δημιουÏγίας χώÏου εÏγασίας\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "αδυναμία σειÏιοποίησης Ï€Ïοφίλ %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Αδυναμία εγγÏαφής ολόκληÏου του Ï€Ïοφίλ\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Î’Ïέθηκε μη αναμενόμενος χαÏακτήÏας: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Αδυναμία Ï€ÏοσδιοÏÎ¹ÏƒÎ¼Î¿Ï Î¼Î½Î®Î¼Î·Ï‚ για subdomainbase σημείο Ï€ÏοσάÏτησης\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Συγγνώμη. Δεν έχετε δικαιώματα υπεÏχÏήστη για να Ï„Ïέξετε αυτό το " "Ï€ÏόγÏαμμα.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: ΠÏοειδοποίηση! Έχετε οÏίσει αυτό το Ï€ÏόγÏαμμα setuid root.\n" "Οποιοσδήποτε μποÏεί να Ï„Ïέξει αυτό το Ï€ÏόγÏαμμα, μποÏεί να ενημεÏώσει τα " "Ï€Ïοφίλ AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Σφάλμα: Αδυναμία ανάγνωσης profile %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Σφάλμα Ï€ÏοσδιοÏÎ¹ÏƒÎ¼Î¿Ï Î¼Î½Î®Î¼Î·Ï‚." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Î’Ïέθηκαν σφάλματα στο αÏχείο. ΑποχώÏηση.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Κεφαλαίοι χαÏακτήÏες \"RWLIMX\" αποφεÏγονται, παÏακαλώ αλλάξτε σε μικÏά\n" "Δείτε το apparmor.d(5) για λεπτομέÏειες.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "ΧαÏακτήÏας exec 'i' λάθος, συμπλέκεται με ήδη υπάÏχων χαÏακτήÏα" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "ΧαÏακτήÏας exc '%c' λανθασμένος, συμπλέκεται με ήδη καθοÏισμένο χαÏακτήÏα" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "ΕσωτεÏικό: μη αναμενόμενη λειτουÏγία χαÏακτήÏα '%c' στην είσοδο" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Σφάλμα αναλυτή AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Αδυναμία συγχώνευσης εγγÏαφών. Μνήμη ΠλήÏης\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "ΠαÏέμβαση: 'rule' επέστÏεψε ΜΗΔΕÎ." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Σφάλμα λειτουÏγίας, το 'x' θα Ï€Ïέπει να Ï€Ïοηγείται του χαÏακτήÏα exec 'i', " "'p' ή 'u'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "ΠαÏέμβαση: 'hat rule' επέστÏεψε ΜΗΔΕÎ." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Η μη οÏισμένη μεταβλητή boolean %s χÏησιμοποιήθηκε στην if-έκφÏαση" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "λείπει ένα τέλος στη γÏαμή χαÏακτήÏα; (εγγÏαφή: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: ΠαÏάνομο άνοιγμα {, δεν επιτÏέπονται ομαδοποιήσεις\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Σφάλμα ομαδοποίησης Regex: Λάθος αÏιθμός αντικειμένων Î¼ÎµÏ„Î±Î¾Ï {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Σφάλμα ομαδοποίησης Regex: Λάθος κλείσιμο }, δεν βÏέθηκε ταιÏιαστό " "άνοιγμα {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Σφάλμα ομαδοποίησης Regex: Ανοιχτή ομαδοποίηση ή κλάσση χαÏακτήÏα, " "αναμένεται κλείσιμο }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: ΕσωτεÏική διαÏÏοή ζώνης ανιχνεÏθηκε, υπέÏβαση %d χαÏακτήÏων\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Αδυναμία ανάλυσης γÏαμμής εισόδου '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "ΣΦΑΛΜΑ συγχώνευσης κανόνων για το Ï€Ïοφίλ %s, αδυναμία φόÏτωσης\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "ΣΦΑΛΜΑ Ï€Ïοφίλ %s πεÏιέχει αντικείμενα πολιτικής που δε χÏησιμοποιοÏνται από " "αυτόν τον πυÏήνα:\n" "\t'*', '?', πεδία χαÏακτήÏων και αλλαγές δεν επιτÏέπονται.\n" "\t'**' μποÏεί να χÏησιμοποιηθεί μόνο στο τέλος.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "ΣΦΑΛΜΑ επεξεÏγασίας regexs για το Ï€Ïοφίλ %s, αδυναμία φόÏτωσης\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "ΣΦΑΛΜΑ επέκτασης μεταβλητών για Ï€Ïοφίλ %s, αδυναμία φόÏτωσης\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ΣΦΑΛΜΑ το Ï€Ïοφίλ %s, αδυναμία φόÏτωσης\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Î’Ïέθηκαν σφάλματα κατα τη διάÏκεια της μετεπεξεÏγασίας regex. " "ΑποχώÏηση.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Î’Ïέθηκαν σφάλματα στους συνδυαστικοÏÏ‚ κανόνες μετεπεξεÏγασίας. " "ΑποχώÏηση.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/gl.po0000664000175000017500000005131514201060045014002 0ustar jjjj# Galician message file for YaST2 (@memory@). # Copyright (C) 2005 SUSE Linux Products GmbH. # Copyright (C) 2000, 2001 SuSE GmbH. # Copyright (C) 2002 SuSE Linux AG. # Jesús Bravo Ãlvarez , 2000. # # Proxecto Trasno - Adaptación do software libre á lingua galega: Se desexas # colaborar connosco, podes atopar máis información en http://trasno.gpul.org # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:24+0000\n" "Last-Translator: Christian Boltz \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: gl\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ca.po0000664000175000017500000005456614201060045013776 0ustar jjjj# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 01:59+0000\n" "Last-Translator: Christian Boltz \n" "Language-Team: Catalan\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ca\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Posició d'escriptura incorrecta\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Permís denegat\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Sense memòria\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "El perfil no és compatible amb el protocol\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "El perfil no coincideix amb la signatura\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "El perfil ja existeix\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "El perfil no existeix\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: no es pot afegir \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: no es pot reemplaçar \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: no es pot eliminar \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: no es pot escriure a l'stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: confirmació: l'opció no vàlida: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\" s'ha afegit correctament.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\" s'ha reemplaçat correctament.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\" s'ha eliminat correctament.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "EMERGÈNCIA: increment incorrecte de la memòria intermèdia %p pos. %p ext. %p " "mida %d res. %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "No es pot obrir %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "no es pot crear l'àrea de treball\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "no es pot serialitzar el perfil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: no es pot escriure tota l'entrada del perfil\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "S'ha trobat un caràcter inesperat: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: no s'ha pogut assignar memòria per al punt de muntatge de la base de " "subdomini\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "S'ha produït un error d'assignació de memòria." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: s'han detectat errors al fitxer. S'avortarà l'operació.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "El qualificador d'execució 'i' no és vàlid; entra en conflicte amb un " "qualificador ja especificat" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "No s'han pogut fusionar les entrades. Sense memòria\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Confirmació: `rule' ha retornat NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Confirmació: 'hat rule' ha retornat NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "falta un caràcter de final de línia? (entrada: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" "%s: l'obertura { no és vàlida, no es permet la imbricació d'agrupaments\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: s'ha produït un error d'agrupament d'expressions regulars: el nombre " "d'elements entre {} no és vàlid\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: s'ha produït un error d'agrupament d'expressions regulars: el tancament " "} no és vàlid; no s'ha detectat cap obertura { coincident\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: s'ha detectat un desbordament de la memòria intermèdia interna, s'han " "excedit %d caràcters\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: no es pot analitzar la línia d'entrada '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "ERROR al perfil %s, no s'ha pogut carregar\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: s'han detectat errors en combinar el postprocessament de regles. " "S'avortarà l'operació.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/lo.po0000664000175000017500000005063314201060045014014 0ustar jjjj# Lao message file for YaST2 (@memory@). # Copyright (C) 2006 SUSE Linux Products GmbH. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:25+0000\n" "Last-Translator: i18n@suse.de\n" "Language-Team: Lao \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: lo\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/th.po0000664000175000017500000005063514201060045014017 0ustar jjjj# Thai message file for YaST2 (@memory@). # Copyright (C) 2008 SUSE Linux Products GmbH. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-14 22:31+0000\n" "Last-Translator: i18n@suse.de\n" "Language-Team: Thai \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: th\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/cs.po0000664000175000017500000006215414201060045014010 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:07+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: cs\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Chyba: Nedostatek pamÄ›ti\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Chyba: Základní adresář %s není adresář, pÅ™eskakuje se.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Chyba: Adresář %s nelze pÅ™idat ke hledané cestÄ›.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Chyba: Nelze pÅ™idÄ›lit paměť\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Å patná pozice zápisu\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "OprávnÄ›ní odepÅ™eno\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Nedostatek pamÄ›ti\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil neodpovídá protokolu\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil neodpovídá podpisu\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Modul Apparmor nepodporuje verzi profilu.\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil již existuje\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil neexistuje\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Nelze pÅ™idat \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Nelze nahradit \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Nelze odstranit \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: nelze zapisovat na standardní výstup\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: neplatná volba: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "PÅ™idání uspÄ›lo pro \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Nahrazení uspÄ›lo pro \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "OdstranÄ›ní uspÄ›lo pro \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIKA: chybný přírůstkový buffer %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Nelze otevřít %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Chyba alokace pamÄ›ti: není možné odebrat ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Chyba alokace pamÄ›ti: není možné odebrat %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "nelze vytvoÅ™it pracovní oblast\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "nelze serializovat profil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Nelze zapsat celý záznam profilu\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Nalezen neoÄekávaný znak: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(režim_sítÄ›) Nalezen neplatný znak: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: Nelze alokovat paměť pro bod pÅ™ipojení subdomainbase\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "UpozornÄ›ní: Nelze nalézt vhodný souborový systém v %s, je pÅ™ipojen?\n" "Možnost lze pÅ™epsat pomocí možnosti --subdomainfs.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Ke spuÅ¡tÄ›ní tohoto programu jsou tÅ™eba práva správce.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: UpozornÄ›ní: Hodnota setuid tohoto programu byla nastavena na uživatele " "root.\n" "Kdokoliv může spustit tento program, může aktualizovat profily modulu " "AppArmor.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Chyba: Nelze Äíst profil %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Chyba alokace pamÄ›ti." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Chyby v souboru. UkonÄuji.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Kvalifikátory velkými písmeny \"RWLIMX\" jsou zastaralé, pÅ™eveÄte je na malá " "písmena.\n" "Podrobnosti naleznete v manuálové stránce apparmor.d(5).\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "OprávnÄ›ní 'a' a 'w' se vzájemnÄ› vyluÄují." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec kvalifikátor 'i' je neplatný, byl již specifikován konfliktní " "kvalifikátor" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Neomezený kvalifikátor spuÅ¡tÄ›ní (%c%c) umožňuje, že jsou neomezenému procesu " "pÅ™edány nÄ›které nebezpeÄné promÄ›nné prostÅ™edí. Podrobnosti uvádí manuálová " "stránka 'man 5 apparmor.d'.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Kvalifikátor spuÅ¡tÄ›ní '%c' je neplatný, již byl zadán konfliktní " "kvalifikátor." #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Exec kvalifikátor '%c%c' je neplatný, byl již specifikován konfliktní " "kvalifikátor" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "VnitÅ™ní: Neznámý znak režimu '%c' na vstupu." #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "VnitÅ™ní chyba způsobila neplatné perm 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "Chyba parseru AppArmor: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Nelze slouÄit záznamy. Nedostatek pamÄ›ti\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Nelze vytvoÅ™it alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Příznak profilu 'debug' již není platný." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Neplatný příznak profilu: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: `rule' vrátil NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Neplatný režim, pÅ™ed 'x' musí být exec kvalifikátor 'i', 'p' nebo 'u'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Neplatný režim, pÅ™ed 'x' musí být exec kvalifikátor 'i', 'p', 'c' nebo 'u'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "Neplatný režim, pÅ™ed 'x' musí být kvalifikátor 'i', 'p' nebo 'u'." #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Assert: `pravidlo_sítÄ›' vrací neplatný protokol." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Assert: `zmÄ›na_profilu' vrátila hodnotu NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: 'hat rule' vrátil NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Assert: 'local_profile rule' vrátil NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Ve výrazu 'if' byla použita nenastavená booleovská promÄ›nná %s." #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "nebezpeÄné pravidlo nemá oprávnÄ›ní ke spuÅ¡tÄ›ní" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "podskupina může být použita pouze s pravidly odkazů." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "link a exec perms konflikt souboru pravidel používajícím ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "link perms nejsou povoleny na pÅ™echodu pojmenovaného profilu.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "chybí znak konce řádku? (záznam: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Neplatná položka sítÄ›." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Neplatná schopnost %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: nepovolená otvírací {, vnoÅ™ené seskupování není povoleno\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Chyba seskupování regex: neplatný poÄet položek mezi {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Chyba seskupování regex: neplatná uzavírací }, nenalezena odpovídající " "otevírací {\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Chyba seskupování regulárního výrazu: NeuzavÅ™ené seskupování nebo třída " "znaků, oÄekává se koncová závorka }.\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Detekováno vnitÅ™ní pÅ™eteÄení zásobníku, pÅ™esáhlo %d znaků\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Nelze analyzovat vstupní řádku '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "CHYBA pÅ™i sluÄování pravidel profilu %s, doÅ¡lo k chybÄ› pÅ™i naÄítání.\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "CHYBOVà profil %s obsahuje prvky zásad, které nelze použít s tímto jádrem:\n" "\t'*', '?', rozsahy znaků a střídání nejsou povoleny.\n" "\t'**' lze použít pouze na konci pravidla.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "CHYBA pÅ™i zpracování regulárních výrazů pro profil %s, doÅ¡lo k chybÄ› pÅ™i " "naÄítání.\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "CHYBA pÅ™i rozšíření promÄ›nných pro profil %s, doÅ¡lo k chybÄ› pÅ™i naÄítání.\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "Chyba pÅ™i pÅ™idání pravidla pro přístup k hat pro profil %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "CHYBA v profilu %s, selhalo naÄítání\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Nalezeny chyby bÄ›hem postprocesingu. UkonÄuji.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" "%s: Nalezeny chyby bÄ›hem postprocesingu regulárního výrazu. UkonÄuje se.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Nalezeny chyby bÄ›hem postprocesingu. UkonÄuji.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Nalezeny chyby pÅ™i postprocesingu kombinaÄních pravidel. UkonÄuji.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ce.po0000664000175000017500000005107514201060045013772 0ustar jjjj# Chechen translation for apparmor # Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2014. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: AppArmor list \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2014-08-13 08:08+0000\n" "Last-Translator: AppArmor list \n" "Language-Team: Chechen \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ce\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/fa.po0000664000175000017500000005142214201060045013765 0ustar jjjj# Persian translation for apparmor # Copyright (c) 2019 Rosetta Contributors and Canonical Ltd 2019 # This file is distributed under the same license as the apparmor package. # FIRST AUTHOR , 2019. # msgid "" msgstr "" "Project-Id-Version: apparmor\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2019-12-27 08:23+0000\n" "Last-Translator: VahidNameni \n" "Language-Team: Persian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-12-28 05:38+0000\n" "X-Generator: Launchpad (build bceb5ef013b87ef7aafe0755545ceb689ca7ac60)\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "خطا: خارج از Ø­Ø§ÙØ¸Ù‡.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "خطا: امکان اضاÙÙ‡ کردن پوشه %s به مسیر جستجو نیست.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "مجوز صادر نگردید\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "خارج از Ø­Ø§ÙØ¸Ù‡\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "نمایه با امضا مطابقت ندارد\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "" #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "" #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "" #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "" #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "" #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "" #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/sv.po0000664000175000017500000006773014201060045014040 0ustar jjjj# Copyright (C) 2006 SuSE Linux Products GmbH, Nuernberg # This file is distributed under the same license as the package. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2019-06-26 17:08+0000\n" "Last-Translator: Jonatan Nyberg \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-06-27 04:33+0000\n" "X-Generator: Launchpad (build 18991)\n" "Language: sv\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Fel: Slut pÃ¥ minne.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Fel: baskatalogen %s är inte en katalog. Hoppar över.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Fel: Det gick inte att lägga till katalogen %s i sökvägen.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Fel: Det gick inte att tilldela minne\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Fel skrivposition\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Ã…tkomst nekas\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Slut pÃ¥ minne\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "Gick inte att kopiera profil: DÃ¥lig minnesadress\n" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profilen följer inte protokollet\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profilen matchar inte signaturen\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Det finns inte stöd för profilversionen i AppArmor-modulen\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profilen finns redan\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profilen finns inte\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "Ã…tkomst nekad; försökte ladda en profil medan den är begränsad?\n" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "Okänt fel (%d): %s\n" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Det gÃ¥r inte att lägga till %s. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Det gÃ¥r inte att ersätta %s. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Det gÃ¥r inte att ta bort %s. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Det gÃ¥r inte att skriva till stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "%s: Kan inte skriva till utdatafil\n" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Felaktigt alternativ: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Tillägg lyckades för %s.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Ersättning lyckades för %s.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Borttagning lyckades för %s.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "VARNING! Felaktig stegbuffert %p pos %p tillägg %p storlek %d upplösn %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "profil %s nätverksregler ej verkställda\n" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "Okänd mönstertyp\n" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Kunde inte öppna %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Minnestilldelningsfel: Det gick inte att ta bort ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Minnestilldelningsfel: Det gick inte att ta bort %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "det gick inte att skapa arbetsyta\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "det gick inte att serialisera profilen %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Det gick inte att skriva hela profilposten\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "%s: Kunde inte skriva hela profilposten till cache\n" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "Kunde inte öppna \"%s\"" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "fstat misslyckades för \"%s\"" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "opendir misslyckades '%s'" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "stat misslyckades för '%s'" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "Kunde inte öppna '%s' i '%s'" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Oväntat tecken hittades: %s" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "Variabel deklarationer tillÃ¥ter inte släpande kommatecken" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "[network_mode] Ett oväntat tecken hittades: %s" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "Varning frÃ¥n %s (%s%sline %d): %s" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Det gick inte att tilldela minne för underdomänbasens monteringspunkt\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Varning: Det gick inte att hitta en lämplig fs i %s. Den kanske inte har " "monterats.\n" "Ã…sidosätt med -subdomainfs.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s: Du mÃ¥ste ha rotbehörigheter om du vill köra det här programmet.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Varning! Du har angett det här programmet som setuid root.\n" "Alla som kan köra det här programmet kan uppdatera dina AppArmor-profiler.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Fel: Det gick inte att läsa profilen %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Minnestilldelningsfel." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "Cachad laddning lyckades för \"%s\".\n" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "Cachad Ã¥terladdning lyckades för \"%s\".\n" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Fel i filen. Avbryter.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Kvalificerarna med versalerna \"RWLIMX\" har tagits bort. Ändra dem till " "gemener.\n" "Se man-sidan för apparmor.d(5) om du vill ha mer information.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" "En konflikt har uppstÃ¥tt. Behörigheterna a och w kan inte förekomma " "samtidigt." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Exec-kvalificeraren 'i' felaktig, kvalificerare i konflikt med denna har " "angetts" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Med den obegränsade exec-kvalificeraren (%c%c) tillÃ¥ts det att vissa farliga " "miljövariabler skickas till den obegränsade processen. Se 'man 5 apparmor.d' " "om du vill ha mer information.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Exec-kvalificeraren %c är ogiltig. En kvalificerare som stÃ¥r i konflikt med " "den har redan angetts" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Exec-kvalificeraren %c%c är ogiltig. En kvalificerare som stÃ¥r i konflikt " "med den har redan angetts." #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Internt: lägestecknet %c i indata var oväntat" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Ett internt fel genererade en ogiltig behörighet 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor-behandlarfel: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Det gick inte att koppla posterna. Slut pÃ¥ minne\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "profil %s har sammanfogat regel %s med motstridiga x modifierare\n" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "profilbifogning mÃ¥ste börja med ett '/'." #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" "Profilnamn mÃ¥ste börja med ett '/', namnplats eller nyckelord 'profile' " "eller 'hat'." #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Det gick inte att skapa aliaset %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "Profilflagga chroot_relative skapar konflikt med namespace_relative" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "Profilflagga mediate_deleted skapar konflikt med delegate_deleted" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" "Profilflagga attach_disconnected skapar konflikt med no_attach_disconnected" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "Profilflagga chroot_attach skapar konflikt med chroot_no_attach" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Profilflaggan debug är inte längre giltig." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Ogiltig profilflagga: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Förutsättning: `rule' returnerade NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Ogiltigt läge. I nekanderegler mÃ¥ste x föregÃ¥s av nÃ¥gon av exec-" "kvalificerarna i, p eller u" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" "Ogiltigt läge. x mÃ¥ste föregÃ¥s av nÃ¥gon av exec-kvalificerarna i, p, c eller " "u" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" "Ogiltigt läge. x mÃ¥ste föregÃ¥s av nÃ¥gon av exec-kvalificerarna i, p eller u" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "Förutsättning: 'network_rule_' returnerade ett ogiltigt protokoll." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "Förutsättning: `change_profile' returnerade NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Förutsättning: `hat rule' returnerade NULL." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "Förutsättning: local_profile rule returnerade NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" "Den booleska variabeln %s, som inte har ställts in, används i ett if-uttryck" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "osäker regel saknar exec-behörigheter" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "deluppsättning kan bara användas med länkregler." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" "link- och exec-behörigheter är i konflikt med en filregel som använder ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "link-behörigheter är inte tillÃ¥tna i en namngiven profilövergÃ¥ng.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "radslutstecken saknas? (post: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Ogiltig nätverkspost." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Ogiltig kapacitet %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "AppArmor tolkar fel för %s%s%s pÃ¥ rad %d: %s\n" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "AppArmor tolkar fel,%s%s pÃ¥ rad %d: %s\n" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: OtillÃ¥ten inledande {, nästling av grupper tillÃ¥ts inte\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "%s: Regex-grupperingsfel: Ogiltigt antal objekt inom {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Regex-grupperingsfel: Ogiltig avslutande }, ingen inledande { hittades\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s: Regex-grupperingsfel: Oavslutad gruppering eller teckenklass, " "avslutande } förväntas\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Internt buffertspill upptäcktes, %d tecken överskreds\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Det gÃ¥r inte att analysera indataraden %s\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "%s: Ogiltigt profilnamn '%s' - dÃ¥ligt reguljärt uttryck\n" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" "FEL vid sammanfogning av regler för profilen %s. Det gick inte att läsa in\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "FEL: Profilen %s innehÃ¥ller principelement som inte kan användas tillsammans " "med den här kerneln:\n" "\t'*', '?', teckenintervall och alterneringar är inte tillÃ¥tna.\n" "\t'**' fÃ¥r endast användas i slutet av en regel.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" "FEL vid behandling av reguljära uttryck för profilen %s, det gick inte att " "läsa in\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" "FEL vid expandering av variabler för profilen %s, det gick inte att läsa in\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" "Ett fel inträffade när Ã¥tkomstregeln hat skulle läggas till för profilen %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "FEL i profilen %s, det gick inte att läsa in\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Det inträffade fel vid efterbearbetningen. Avbryter.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: Fel vid efterbearbetning av regex. Avbryter.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Det inträffade fel vid efterbearbetningen. Avbryter.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s: Fel i efterbearbetning av regelkombination. Avbryter.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "Det gick inte att bearbeta inkludera katalogen \"%s\" i \"%s\"" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "Funktionsbuffert full." #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "Slut pÃ¥ minne" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "Kan inte skapa cachekatalog: %s\n" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "Fil i cachekatalogsplats: %s\n" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "Kan inte uppdatera cachekatalog: %s\n" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "Internt: oväntat DBus-lägestecken \"%c\" i inmatning" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "Internt fel genererat ogiltigt DBus perm 0x%x\n" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "neka prefixet inte tillÃ¥tet" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "ägarprefix inte tillÃ¥tet" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "ägarprefix tillÃ¥ter inte pÃ¥ monteraregler" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "ägarprefix tillÃ¥ter inte dbus-regler" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "ägarprefix tillÃ¥ter inte pÃ¥ kapacitetsregler" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "ogiltigt monteringsvillkorlig %s%s" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "dÃ¥lig monteringsregel" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "monteringspunktsförhÃ¥llanden stöds för närvarande inte" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "ogiltigt pivotroot-villkorlig \"%s\"" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" "%s: Regex-grupperingsfel: ogiltig stäng ], ingen matchning öppen [ upptäckt\n" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "%s: Regex-grupperingsfel: Överskred maximal kapsling av {}\n" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" "FEL vid behandling av policydb_regler för profil %s, misslyckades med att " "läsa in\n" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "FEL vid byte av alias för profil %s, kunde inte läsa in\n" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "%s: Det gÃ¥r inte att skriva %s\n" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "Fel: det gick inte att läsa binär profil eller cachefilen %s: %s.\n" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "Fel: Det gick inte att läsa cachefilen %s, hoppar över...\n" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "Internt: oväntat %s-lägetecken \"%c\" i inmatning" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "Internt fel genererat ogiltigt %s perm 0x%x\n" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "ägarprefix inte tillÃ¥tet pÃ¥ monteringsregler" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "ägarprefix inte tillÃ¥tet pÃ¥ dbus-regler" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "ägarprefix inte tillÃ¥tet pÃ¥ signalregler" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "ägarprefix inte tillÃ¥tet pÃ¥ ptrace-regler" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "ägarprefix inte tillÃ¥tet pÃ¥ unix-regler" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "ägarprefix inte tillÃ¥tet pÃ¥ kapacitetsregler" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "dbus-regel: ogiltig villkorlig grupp %s=()" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "unix-regel: ogiltig villkorlig grupp %s=()" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "%s: Regex-fel: efterföljande \"\\\" escape-tecken\n" apparmor-3.0.4/parser/po/zu.po0000664000175000017500000005440314201060045014037 0ustar jjjj# English translations for subdomain_parser package. # Copyright (C) 2005 Immunix, Inc. # This file is distributed under the same license as the subdomain_parser package. # Steve Beattie , 2005. # msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 04:18+0000\n" "Last-Translator: Novell Language \n" "Language-Team: Novell Language \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: zu\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "Indawo yokukopisha enganembile\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Imvume inqatshiwe\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Ilahlekelwe Yimemori\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Iphrofayili ayivumelani nephrothokholi\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Iphrofayili ayifanelani nesignisha\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Iphrofayili isiyatholakala kakade\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Iphrofayili ayitholakali\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Ayikwazi ukwenezela i-\"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Ayikwazi ukushintsha i-\"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Ayikwazi ukususa i-\"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Ayikwazi ukukopishela kwi-stdout\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: ASSERT: Okukhethiwe okuyiphutha: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Ukwenezela okulandelwe nge-\"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Ushintsho olulandelwe nge-\"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Ukususa okulandelwe nge-\"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "" "Ingobolwazi yesikhashana YOKUTATAZELA okubi %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Ayikwazi ukuvula %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "Ayikwzi ukwakha indawo yokusebenzela\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "Ayikwazi ukwenza iphrofayili ibe nama-serial %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Ayikwazi ukuyibhala yonke iphrofayili\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Ithola uhlamvu olungalindelekile: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s: Ayikwazanga ukuthola ingobolwazi yesixhakathisi se-domain engaphansi\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Iphutha lokwabiwa kwememori." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Amaphutha atholakale kwifayela. Iyayeka.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "I-exec qualifier u-‘i’ akasebenzi, i-qualifier engqubuzanayo isibonisiwe " "kakade" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Aykwazanga ukuhlanganisa ama-entry. Ilahlekelwe Yimemori\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "Assert: `i-rule' ibuye IYIZE." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "Assert: `i-hat rule’ ibuye IYIZE." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "ilahlekelwe yisiphetho sohlamvu lomugqa? (i-entry: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: Ukuvula okungekho emthethweni {, ukuvalela amaqoqo akuvunyelwe\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: Iphutha lokwenza amaqoqo le-regex: Inombolo eyiphutha yezinto " "eziphakathi nendawo {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: Iphutha lokwenza amaqoqo le-regex: Ukuvala okuyiphutha }, akukho ukuvula " "okufanelanayo { ithungathwe yatholwa\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: Ingobolwazi yesikhashana yangaphakathi itholakele, %d izinhlamvu " "ezeqiwe\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Ayikwazi ukunqunta umugqa wokufakiwe '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "IPHUTHA kwiphrofayili %s, ihlulekile ukufaka\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: Amaphutha atholakele ekuhlanganiseni imithetho yangemva kokuphrosesa. " "Iyayeka.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/da.po0000664000175000017500000006211014201060045013757 0ustar jjjj# translation of apparmor-parser.po to # # Martin Møller , 2005. # Jan Madsen , 2006. # Ib Larsen , 2006, 2007. # Martin Schlander , 2007. # Martin Schlander , 2008. msgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 02:33+0000\n" "Last-Translator: Martin Schlander \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:32+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: da\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "Fejl: Ikke mere hukommelse.\n" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "Fejl: Udgangsmappe %s er ikke en mappe. Springer over.\n" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "Fejl: Kunne ikke tilføje mappen %s til søgestien.\n" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "Fejl: Kunne ikke tildele hukommelse.\n" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "DÃ¥rlig skrive position\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "Tilladelse nægtet\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "Ikke mere hukommelse\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "Profil passer ikke til protokol\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "Profil stemmer ikke med signatur\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "Profilversion er ikke understøttet af AppArmor-modulet\n" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "Profil eksisterer allerede\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "Profil eksisterer ikke\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: Kunne ikke tilføje \"%s\". " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: Kunne ikke erstatte \"%s\". " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: Kunne ikke fjerne \"%s\". " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: Ikke i stand til at skrive til standarduddata\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: PÃ…STAND: Ugyldigt tilvalg: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "Tilføjelse lykkedes for \"%s\".\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "Erstatning lykkedes for \"%s\".\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "Fjernelse lykkedes for \"%s\".\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "PANIK dÃ¥rlig optællingsbuffer %p pos %p ext %p size %d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "Kunne ikke Ã¥bne %s - %s\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "Fejl i allokering af hukommelse: Kunne ikke fjerne ^%s\n" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "Fejl i allokering af hukommelse: Kunne ikke fjerne %s:%s." #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "Ikke i stand til at oprette arbejdsomrÃ¥de\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "Ikke i stand til at serieordne profil %s\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: Ikke i stand til at skrive hele profilindgangen\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "Fundet uventet tegn: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "(netværk_tilstand) Fandt uventet tegn: '%s'" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "" "%s. Kunne ikke tildele hukommelse til underdomænegrundens monteringspunkt\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" "Advarsel: Ikke i stand til at finde et passende filsystem i %s, Er den " "monteret?\n" "Brug --subdomainfs for at tilsidesætte.\n" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" "%s. Desværre. Du skal have root-rettigheder for at køre dette program.\n" "\n" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" "%s: Advarsel! Du har sat programmets setuid til root.\n" "Enhver, der kan køre dette program, kan opdatere dine AppArmor-profiler.\n" "\n" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "Fejl: Kunne ikke læse profilen %s: %s.\n" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "Fejl i allokering af hukommelse." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: Fundet fejl i filen. Afbryder.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" "Store bogstaver i tilladelser \"RWLIMX\" er forældet. Konverter venligst " "til smÃ¥ bogstaver\n" "Se apparmor.d(5) man-sider for detaljer.\n" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "Konflikt, tilladelserne 'a' og 'w' er gensidigt udelukkende." #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "Kørselstilladelse 'i' er ugyldig. Konflikt med en allerede specificeret " "tilladelse" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" "Uindskrænket exec qualifier (%c%c) tillader at nogle farlige miljøvariabler " "overføres til den uindskrænkede proces. Se detaljer i 'man 5 apparmor.d'.\n" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" "Kørselstilladelse '%c' er ugyldig. Konflikt med en allerede specificeret " "tilladelse" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" "Kørselstilladelse '%c%c' er ugyldig. Konflikt med en allerede specificeret " "tilladelse" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "Intern: Uventet tilstandstegn '%c' i inddata" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "Intern fejl genererede ugyldig tilladelse 0x%llx\n" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "AppArmor fortolkningsfejl: %s\n" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "Kunne ikke sammenslutte indgange. Ikke mere hukommelse\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "Kunne ikke oprette alias %s -> %s\n" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "Profilflaget 'debug' er ikke længere gyldigt." #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "Ugyldigt profilflag: %s." #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "PÃ¥stand:`Regel' returneret NULL." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" "Ugyldig tilstand, i afvisningsregler mÃ¥ kørselstilladelse 'i', 'u' eller 'p' " "ikke gÃ¥ forud for 'x'" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "Ugyldig tilstand, 'i', 'p', 'c' eller 'u' skal gÃ¥ forud for 'x'" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "Ugyldig tilstand, 'i', 'u' eller 'p' skal gÃ¥ forud for 'x'" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "PÃ¥stand: 'network_rule' returnereer ugyldig protokol." #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "PÃ¥stand: 'change_profile' returnerede NULL." #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "PÃ¥stand: 'hatregel' returnerede NUL.L." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "PÃ¥stand: 'local_profile rule' returnerede NULL." #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "Fravalgt boolean-varibael %s brugt i et if-udtryk" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "usikker regel mangler eksekvértilladelser" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "subset kan kun bruges med linkregler." #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "link- og kørselstilladelser konflikter om en filregel som bruger ->" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "linktilladelser er ikke tilladt pÃ¥ en navngiven profiltransition.\n" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "mangler afslutningstegn i linjen? (Indgang %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "Ugyldig netværkspunkt." #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "Ugyldig kapabilitet %s." #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: ulovlig Ã¥bning {, indlejrede grupperinger er ikke tilladt\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s. Grupperingsfejl i reg. udtryk: Ugyldig antal elementer mellem {}\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s. Grupperingsfejl i reg. udtryk: Ugyldig lukke }, ingen passende Ã¥bning { " "fundet\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" "%s. Grupperingsfejl i reg. udtryk: Ikke lukket gruppering eller tegnklasse, " "forventer lukke }\n" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "%s: Intern bufferoverflow fundet, %d tegn overskredet\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: Ikke i stand til at fortolke inddatalinje '%s'\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "FEJL: Sammenslutningsregel for profilen %s, indlæste ikke\n" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" "FEJL: Profilen %s indeholder elementer i retningslinjerne, som ikke er " "brugbare med denne kerne:\n" "\t'*', '?', tegnomrÃ¥derne og lignende er ikke tilladt.\n" "\t'**' mÃ¥ kun bruges i slutningen af en regel.\n" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "FEJL: Behandling af reg. udtryk for profilen %s blev ikke indlæst\n" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "FEJL: Udfoldning af variabler for profilen %s blev ikke indlæst\n" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "FEJL under tilføjelse af 'hat'-adgangsregel for profilen %s\n" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "FEJL i profilen %s. Blev ikke indlæst\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "%s: Fejl fundet i efterbehandling. Afbryder.\n" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "%s: Fejl fundet i efterbehandling af reg. udtryk. Afbryder.\n" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "%s: Fejl fundet i efterbehandling. Afbryder.\n" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "%s. Fejl fundet i efterbehandling af kombineringsregler. Afbryder.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/po/ta.po0000664000175000017500000006056014201060045014006 0ustar jjjjmsgid "" msgstr "" "Project-Id-Version: apparmor-parser\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2014-09-13 00:11-0700\n" "PO-Revision-Date: 2013-11-15 03:28+0000\n" "Last-Translator: Priyavert \n" "Language-Team: AgreeYa Solutions\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2019-04-18 05:33+0000\n" "X-Generator: Launchpad (build 18928)\n" "Language: ta\n" #: ../parser_include.c:113 ../parser_include.c:111 msgid "Error: Out of memory.\n" msgstr "" #: ../parser_include.c:123 ../parser_include.c:121 #, c-format msgid "Error: basedir %s is not a directory, skipping.\n" msgstr "" #: ../parser_include.c:137 #, c-format msgid "Error: Could not add directory %s to search path.\n" msgstr "" #: ../parser_include.c:147 ../parser_include.c:151 msgid "Error: Could not allocate memory.\n" msgstr "" #: ../parser_interface.c:69 ../parser_interface.c:72 ../parser_interface.c:49 msgid "Bad write position\n" msgstr "மோசமான எழà¯à®¤à¯à®¨à®¿à®²à¯ˆ\n" #: ../parser_interface.c:72 ../parser_interface.c:75 ../parser_interface.c:52 msgid "Permission denied\n" msgstr "அனà¯à®®à®¤à®¿ மறà¯à®•à¯à®•பà¯à®ªà®Ÿà¯à®•ிறதà¯\n" #: ../parser_interface.c:75 ../parser_interface.c:78 ../parser_interface.c:55 msgid "Out of memory\n" msgstr "நினைவில௠இலà¯à®²à¯ˆ\n" #: ../parser_interface.c:78 ../parser_interface.c:81 ../parser_interface.c:58 msgid "Couldn't copy profile: Bad memory address\n" msgstr "" #: ../parser_interface.c:81 ../parser_interface.c:84 ../parser_interface.c:61 msgid "Profile doesn't conform to protocol\n" msgstr "விவரம௠நெறிமà¯à®±à¯ˆà®¯à¯à®Ÿà®©à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_interface.c:84 ../parser_interface.c:87 ../parser_interface.c:64 msgid "Profile does not match signature\n" msgstr "விவரம௠கையொபà¯à®ªà®¤à¯à®¤à¯à®Ÿà®©à¯ பொரà¯à®¨à¯à®¤à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_interface.c:87 ../parser_interface.c:90 ../parser_interface.c:67 msgid "Profile version not supported by Apparmor module\n" msgstr "" #: ../parser_interface.c:90 ../parser_interface.c:93 ../parser_interface.c:70 msgid "Profile already exists\n" msgstr "விவரம௠à®à®±à¯à®•னவே உளà¯à®³à®¤à¯\n" #: ../parser_interface.c:93 ../parser_interface.c:96 ../parser_interface.c:73 msgid "Profile doesn't exist\n" msgstr "விவரம௠இலà¯à®²à¯ˆ\n" #: ../parser_interface.c:96 ../parser_interface.c:99 ../parser_interface.c:76 msgid "Permission denied; attempted to load a profile while confined?\n" msgstr "" #: ../parser_interface.c:99 ../parser_interface.c:102 ../parser_interface.c:79 #, c-format msgid "Unknown error (%d): %s\n" msgstr "" #: ../parser_interface.c:116 ../parser_interface.c:119 #: ../parser_interface.c:96 #, c-format msgid "%s: Unable to add \"%s\". " msgstr "%s: \"%s\" சேரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. " #: ../parser_interface.c:121 ../parser_interface.c:124 #: ../parser_interface.c:101 #, c-format msgid "%s: Unable to replace \"%s\". " msgstr "%s: \"%s\" மாறà¯à®±à®¿à®¯à®®à¯ˆà®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. " #: ../parser_interface.c:126 ../parser_interface.c:129 #: ../parser_interface.c:106 #, c-format msgid "%s: Unable to remove \"%s\". " msgstr "%s: \"%s\" நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. " #: ../parser_interface.c:131 ../parser_interface.c:134 #: ../parser_interface.c:111 #, c-format msgid "%s: Unable to write to stdout\n" msgstr "%s: stdout-ல௠எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_interface.c:135 ../parser_interface.c:138 #: ../parser_interface.c:115 #, c-format msgid "%s: Unable to write to output file\n" msgstr "" #: ../parser_interface.c:138 ../parser_interface.c:162 #: ../parser_interface.c:141 ../parser_interface.c:165 #: ../parser_interface.c:118 ../parser_interface.c:142 #, c-format msgid "%s: ASSERT: Invalid option: %d\n" msgstr "%s: உறà¯à®¤à®¿à®šà¯†à®¯à¯à®¤à®²à¯: செலà¯à®²à®¾à®¤ விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯‡à®°à¯à®µà¯: %d\n" #: ../parser_interface.c:147 ../parser_interface.c:150 #: ../parser_interface.c:127 #, c-format msgid "Addition succeeded for \"%s\".\n" msgstr "\"%s\"கà¯à®•ான கூடà¯à®¤à®²à¯ சேரà¯à®ªà¯à®ªà¯ வெறà¯à®±à®¿ பெறà¯à®±à®¤à¯.\n" #: ../parser_interface.c:151 ../parser_interface.c:154 #: ../parser_interface.c:131 #, c-format msgid "Replacement succeeded for \"%s\".\n" msgstr "\"%s\"கà¯à®•ான மாறà¯à®±à¯ வெறà¯à®±à®¿ பெறà¯à®±à®¤à¯.\n" #: ../parser_interface.c:155 ../parser_interface.c:158 #: ../parser_interface.c:135 #, c-format msgid "Removal succeeded for \"%s\".\n" msgstr "\"%s\"கà¯à®•ான நீகà¯à®•ம௠வெறà¯à®±à®¿ பெறà¯à®±à®¤à¯.\n" #: ../parser_interface.c:251 ../parser_interface.c:254 #, c-format msgid "PANIC bad increment buffer %p pos %p ext %p size %d res %p\n" msgstr "பேனிக௠மோசமான கூடà¯à®¤à®²à¯ பஃபர௠%p pos %p ext %p அளவ௠%d res %p\n" #: ../parser_interface.c:656 ../parser_interface.c:658 #: ../parser_interface.c:446 #, c-format msgid "profile %s network rules not enforced\n" msgstr "" #: ../parser_interface.c:666 msgid "Unknown pattern type\n" msgstr "" #: ../parser_interface.c:750 ../parser_interface.c:902 #: ../parser_interface.c:743 ../parser_interface.c:894 #: ../parser_interface.c:518 ../parser_interface.c:669 #, c-format msgid "Unable to open %s - %s\n" msgstr "%s - %s திறகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_interface.c:776 ../parser_interface.c:768 #: ../parser_interface.c:543 #, c-format msgid "Memory Allocation Error: Unable to remove ^%s\n" msgstr "" #: ../parser_interface.c:789 ../parser_interface.c:781 #: ../parser_interface.c:556 #, c-format msgid "Memory Allocation Error: Unable to remove %s:%s." msgstr "" #: ../parser_interface.c:810 ../parser_interface.c:802 msgid "unable to create work area\n" msgstr "பணி பகà¯à®¤à®¿à®¯à¯ˆ உரà¯à®µà®¾à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_interface.c:818 ../parser_interface.c:810 #, c-format msgid "unable to serialize profile %s\n" msgstr "%s விவரதà¯à®¤à¯ˆ வரிசைபà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_interface.c:829 ../parser_interface.c:916 #: ../parser_interface.c:821 ../parser_interface.c:908 #: ../parser_interface.c:582 #, c-format msgid "%s: Unable to write entire profile entry\n" msgstr "%s: à®®à¯à®´à¯ விவர உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ˆà®¯à¯à®®à¯ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_interface.c:839 ../parser_interface.c:831 #: ../parser_interface.c:593 #, c-format msgid "%s: Unable to write entire profile entry to cache\n" msgstr "" #: parser_lex.l:100 parser_lex.l:163 parser_lex.l:169 #, c-format msgid "Could not open '%s'" msgstr "" #: parser_lex.l:104 parser_lex.l:167 parser_lex.l:173 #, c-format msgid "fstat failed for '%s'" msgstr "" #: parser_lex.l:121 #, c-format msgid "opendir failed '%s'" msgstr "" #: parser_lex.l:152 #, c-format msgid "stat failed for '%s'" msgstr "" #: parser_lex.l:155 parser_lex.l:133 parser_lex.l:139 #, c-format msgid "Could not open '%s' in '%s'" msgstr "" #: parser_lex.l:284 parser_lex.l:322 parser_lex.l:362 parser_lex.l:399 #: parser_lex.l:469 parser_lex.l:655 parser_lex.l:586 parser_lex.l:638 #, c-format msgid "Found unexpected character: '%s'" msgstr "எதிரà¯à®ªà®¾à®°à®¾à®¤ எழà¯à®¤à¯à®¤à¯ˆ கணà¯à®Ÿà¯à®³à¯à®³à®¤à¯: '%s'" #: parser_lex.l:386 parser_lex.l:418 parser_lex.l:428 msgid "Variable declarations do not accept trailing commas" msgstr "" #: parser_lex.l:420 #, c-format msgid "(network_mode) Found unexpected character: '%s'" msgstr "" #: ../parser_main.c:333 ../parser_common.c:61 ../parser_common.c:106 #, c-format msgid "Warning from %s (%s%sline %d): %s" msgstr "" #: ../parser_main.c:531 #, c-format msgid "%s: Could not allocate memory for subdomainbase mount point\n" msgstr "%s: தà¯à®£à¯ˆà®•à¯à®•ளதள à®à®±à¯à®± நிலைகà¯à®•௠நினைவகதà¯à®¤à¯ˆ ஒதà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_main.c:577 ../parser_main.c:616 ../parser_main.c:479 #, c-format msgid "" "Warning: unable to find a suitable fs in %s, is it mounted?\n" "Use --subdomainfs to override.\n" msgstr "" #: ../parser_main.c:597 ../parser_main.c:635 ../parser_main.c:498 #, c-format msgid "" "%s: Sorry. You need root privileges to run this program.\n" "\n" msgstr "" #: ../parser_main.c:604 ../parser_main.c:642 ../parser_main.c:505 #, c-format msgid "" "%s: Warning! You've set this program setuid root.\n" "Anybody who can run this program can update your AppArmor profiles.\n" "\n" msgstr "" #: ../parser_main.c:704 ../parser_main.c:813 ../parser_main.c:836 #: ../parser_main.c:946 ../parser_main.c:860 #, c-format msgid "Error: Could not read profile %s: %s.\n" msgstr "" #: ../parser_main.c:718 ../parser_misc.c:270 parser_yacc.y:227 #: parser_yacc.y:374 parser_yacc.y:386 parser_yacc.y:484 parser_yacc.y:586 #: parser_yacc.y:624 parser_yacc.y:939 parser_yacc.y:948 parser_yacc.y:960 #: parser_yacc.y:1008 parser_yacc.y:1019 parser_yacc.y:1101 parser_yacc.y:1119 #: parser_yacc.y:1126 ../parser_main.c:850 ../parser_main.c:1015 #: ../parser_main.c:1229 ../parser_main.c:1283 ../parser_misc.c:431 #: parser_yacc.y:268 parser_yacc.y:416 parser_yacc.y:426 parser_yacc.y:537 #: parser_yacc.y:626 parser_yacc.y:976 parser_yacc.y:1021 parser_yacc.y:1030 #: parser_yacc.y:1042 parser_yacc.y:1078 parser_yacc.y:1082 parser_yacc.y:1092 #: parser_yacc.y:1102 parser_yacc.y:1201 parser_yacc.y:1223 parser_yacc.y:1234 #: parser_yacc.y:1309 parser_yacc.y:1327 parser_yacc.y:1334 parser_yacc.y:1385 #: ../parser_main.c:735 ../parser_main.c:923 ../parser_main.c:1133 #: ../parser_main.c:1187 parser_yacc.y:311 parser_yacc.y:462 parser_yacc.y:472 #: parser_yacc.y:583 parser_yacc.y:662 parser_yacc.y:669 parser_yacc.y:1130 #: parser_yacc.y:1166 parser_yacc.y:1170 parser_yacc.y:1180 parser_yacc.y:1190 #: parser_yacc.y:1298 parser_yacc.y:1376 parser_yacc.y:1479 parser_yacc.y:1490 #: parser_yacc.y:1565 parser_yacc.y:1583 parser_yacc.y:1590 parser_yacc.y:1639 #: ../network.c:314 ../af_unix.cc:203 msgid "Memory allocation error." msgstr "நினைவக ஒதà¯à®•à¯à®•ீடà¯à®Ÿà¯ பிழை." #: ../parser_main.c:740 ../parser_main.c:872 ../parser_main.c:757 #, c-format msgid "Cached load succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:744 ../parser_main.c:876 ../parser_main.c:761 #, c-format msgid "Cached reload succeeded for \"%s\".\n" msgstr "" #: ../parser_main.c:910 ../parser_main.c:1058 ../parser_main.c:967 #, c-format msgid "%s: Errors found in file. Aborting.\n" msgstr "%s: கோபà¯à®ªà®¿à®²à¯ பிழைகள௠உளà¯à®³à®©. இடைனிரà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®•ிறதà¯.\n" #: ../parser_misc.c:426 ../parser_misc.c:597 ../parser_misc.c:339 msgid "" "Uppercase qualifiers \"RWLIMX\" are deprecated, please convert to lowercase\n" "See the apparmor.d(5) manpage for details.\n" msgstr "" #: ../parser_misc.c:467 ../parser_misc.c:474 ../parser_misc.c:638 #: ../parser_misc.c:645 ../parser_misc.c:380 ../parser_misc.c:387 msgid "Conflict 'a' and 'w' perms are mutually exclusive." msgstr "" #: ../parser_misc.c:491 ../parser_misc.c:662 ../parser_misc.c:404 msgid "Exec qualifier 'i' invalid, conflicting qualifier already specified" msgstr "" "செயலாகà¯à®• தகà¯à®¤à®¿ 'i' செலà¯à®²à®¾à®¤à¯, à®®à¯à®°à®£à¯à®ªà®Ÿà¯à®®à¯ தகà¯à®¤à®¿ à®à®±à¯à®•னவே கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯" #: ../parser_misc.c:502 ../parser_misc.c:673 ../parser_misc.c:415 #, c-format msgid "" "Unconfined exec qualifier (%c%c) allows some dangerous environment variables " "to be passed to the unconfined process; 'man 5 apparmor.d' for details.\n" msgstr "" #: ../parser_misc.c:510 ../parser_misc.c:551 ../parser_misc.c:681 #: ../parser_misc.c:722 ../parser_misc.c:423 ../parser_misc.c:464 #, c-format msgid "Exec qualifier '%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:537 ../parser_misc.c:545 ../parser_misc.c:708 #: ../parser_misc.c:716 ../parser_misc.c:450 ../parser_misc.c:458 #, c-format msgid "" "Exec qualifier '%c%c' invalid, conflicting qualifier already specified" msgstr "" #: ../parser_misc.c:593 ../parser_misc.c:764 ../parser_misc.c:506 #, c-format msgid "Internal: unexpected mode character '%c' in input" msgstr "" #: ../parser_misc.c:615 ../parser_misc.c:786 ../parser_misc.c:528 #, c-format msgid "Internal error generated invalid perm 0x%llx\n" msgstr "" #: ../parser_misc.c:865 ../parser_symtab.c:561 ../parser_regex.c:626 #: ../parser_variable.c:229 #, c-format msgid "AppArmor parser error: %s\n" msgstr "" #: ../parser_merge.c:92 ../parser_merge.c:91 ../parser_merge.c:83 msgid "Couldn't merge entries. Out of Memory\n" msgstr "உளà¯à®³à¯€à®Ÿà¯à®•ளை சேரà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ. நினைவில௠இலà¯à®²à¯ˆ\n" #: ../parser_merge.c:111 ../parser_merge.c:113 ../parser_merge.c:105 #, c-format msgid "profile %s: has merged rule %s with conflicting x modifiers\n" msgstr "" #: parser_yacc.y:236 parser_yacc.y:277 parser_yacc.y:320 msgid "Profile attachment must begin with a '/'." msgstr "" #: parser_yacc.y:260 parser_yacc.y:302 parser_yacc.y:348 msgid "" "Profile names must begin with a '/', namespace or keyword 'profile' or 'hat'." msgstr "" #: parser_yacc.y:296 parser_yacc.y:338 parser_yacc.y:384 #, c-format msgid "Failed to create alias %s -> %s\n" msgstr "" #: parser_yacc.y:417 parser_yacc.y:460 parser_yacc.y:506 msgid "Profile flag chroot_relative conflicts with namespace_relative" msgstr "" #: parser_yacc.y:421 parser_yacc.y:464 parser_yacc.y:510 msgid "Profile flag mediate_deleted conflicts with delegate_deleted" msgstr "" #: parser_yacc.y:424 parser_yacc.y:467 parser_yacc.y:513 msgid "" "Profile flag attach_disconnected conflicts with no_attach_disconnected" msgstr "" #: parser_yacc.y:427 parser_yacc.y:470 parser_yacc.y:516 msgid "Profile flag chroot_attach conflicts with chroot_no_attach" msgstr "" #: parser_yacc.y:441 parser_yacc.y:484 parser_yacc.y:530 msgid "Profile flag 'debug' is no longer valid." msgstr "" #: parser_yacc.y:463 parser_yacc.y:506 parser_yacc.y:552 #, c-format msgid "Invalid profile flag: %s." msgstr "" #: parser_yacc.y:498 parser_yacc.y:520 parser_yacc.y:548 parser_yacc.y:594 msgid "Assert: `rule' returned NULL." msgstr "உறà¯à®¤à®¿à®šà¯†à®¯à¯à®¤à®²à¯: ‘விதி’ மதிபà¯à®ªà®¿à®©à¯à®±à®¿ திரà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯." #: parser_yacc.y:501 parser_yacc.y:546 parser_yacc.y:552 parser_yacc.y:584 #: parser_yacc.y:598 parser_yacc.y:630 msgid "" "Invalid mode, in deny rules 'x' must not be preceded by exec qualifier 'i', " "'p', or 'u'" msgstr "" #: parser_yacc.y:524 parser_yacc.y:556 parser_yacc.y:602 msgid "" "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', 'c', or 'u'" msgstr "" #: parser_yacc.y:549 parser_yacc.y:587 parser_yacc.y:633 msgid "Invalid mode, 'x' must be preceded by exec qualifier 'i', 'p', or 'u'" msgstr "" #: parser_yacc.y:574 parser_yacc.y:612 parser_yacc.y:614 parser_yacc.y:660 msgid "Assert: `network_rule' return invalid protocol." msgstr "" #: parser_yacc.y:649 parser_yacc.y:696 parser_yacc.y:786 msgid "Assert: `change_profile' returned NULL." msgstr "" #: parser_yacc.y:680 parser_yacc.y:720 parser_yacc.y:810 msgid "Assert: 'hat rule' returned NULL." msgstr "உறà¯à®¤à®¿à®šà¯†à®¯à¯à®¤à®²à¯: ‘ஹேட௠விதி’ மதிபà¯à®ªà®¿à®©à¯à®±à®¿ திரà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯." #: parser_yacc.y:689 parser_yacc.y:729 parser_yacc.y:819 msgid "Assert: 'local_profile rule' returned NULL." msgstr "" #: parser_yacc.y:824 parser_yacc.y:885 parser_yacc.y:992 #, c-format msgid "Unset boolean variable %s used in if-expression" msgstr "" #: parser_yacc.y:882 parser_yacc.y:986 parser_yacc.y:1092 msgid "unsafe rule missing exec permissions" msgstr "" #: parser_yacc.y:901 parser_yacc.y:954 parser_yacc.y:1060 msgid "subset can only be used with link rules." msgstr "" #: parser_yacc.y:903 parser_yacc.y:956 parser_yacc.y:1062 msgid "link and exec perms conflict on a file rule using ->" msgstr "" #: parser_yacc.y:905 parser_yacc.y:958 parser_yacc.y:1064 msgid "link perms are not allowed on a named profile transition.\n" msgstr "" #: parser_yacc.y:921 parser_yacc.y:1003 parser_yacc.y:1109 #, c-format msgid "missing an end of line character? (entry: %s)" msgstr "வரிசை எழà¯à®¤à¯à®¤à®¿à®©à¯ à®®à¯à®Ÿà®¿à®µà¯ காணபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ? (உளà¯à®³à¯€à®Ÿà¯: %s)" #: parser_yacc.y:975 parser_yacc.y:985 parser_yacc.y:1057 parser_yacc.y:1067 #: parser_yacc.y:1145 parser_yacc.y:1155 msgid "Invalid network entry." msgstr "" #: parser_yacc.y:1039 parser_yacc.y:1048 parser_yacc.y:1254 parser_yacc.y:1510 #, c-format msgid "Invalid capability %s." msgstr "" #: parser_yacc.y:1066 parser_yacc.y:1269 parser_yacc.y:1525 #, c-format msgid "AppArmor parser error for %s%s%s at line %d: %s\n" msgstr "" #: parser_yacc.y:1072 parser_yacc.y:1275 parser_yacc.y:1531 #, c-format msgid "AppArmor parser error,%s%s line %d: %s\n" msgstr "" #: ../parser_regex.c:244 #, c-format msgid "%s: Illegal open {, nesting groupings not allowed\n" msgstr "%s: சடà¯à®Ÿà®µà®¿à®°à¯‡à®¾à®¤ திறபà¯à®ªà¯ {, நெஸà¯à®Ÿà®¿à®™à¯ கà¯à®´à¯à®•à¯à®•ளà¯à®•à¯à®•௠அனà¯à®®à®¤à®¿ இலà¯à®²à¯ˆ\n" #: ../parser_regex.c:265 ../parser_regex.c:274 ../parser_regex.c:278 #, c-format msgid "%s: Regex grouping error: Invalid number of items between {}\n" msgstr "" "%s: ரீஜெகà¯à®¸à¯ கà¯à®´à¯ சேரà¯à®ªà¯à®ªà®¿à®²à¯ பிழை: {} இடையிலான பொரà¯à®Ÿà¯à®•ளின௠செலà¯à®²à®¾à®¤ " "எணà¯à®£à®¿à®•à¯à®•ை\n" #: ../parser_regex.c:271 ../parser_regex.c:280 ../parser_regex.c:284 #, c-format msgid "" "%s: Regex grouping error: Invalid close }, no matching open { detected\n" msgstr "" "%s: ரீஜெகà¯à®¸à¯ கà¯à®´à¯ சேரà¯à®ªà¯à®ªà®¿à®²à¯ பிழை: செலà¯à®²à®¾à®¤ மூடà¯à®¤à®²à¯ }, பொரà¯à®¨à¯à®¤à¯à®®à¯ திறபà¯à®ªà¯ { " "கணà¯à®Ÿà®±à®¿à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_regex.c:337 ../parser_regex.c:343 ../parser_regex.c:361 #, c-format msgid "" "%s: Regex grouping error: Unclosed grouping or character class, expecting " "close }\n" msgstr "" #: ../parser_regex.c:351 ../parser_regex.c:357 #, c-format msgid "%s: Internal buffer overflow detected, %d characters exceeded\n" msgstr "" "%s: உள௠பஃபரின௠வரமà¯à®ªà¯à®®à¯€à®±à®²à¯ கணà¯à®Ÿà®±à®¿à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯, %d எழà¯à®¤à¯à®¤à¯à®•à¯à®•ள௠" "மீறபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©\n" #: ../parser_regex.c:355 ../parser_regex.c:361 ../parser_regex.c:377 #, c-format msgid "%s: Unable to parse input line '%s'\n" msgstr "%s: உளà¯à®³à¯€à®Ÿà¯à®Ÿà¯ வரி '%s'யை விளகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ\n" #: ../parser_regex.c:397 ../parser_regex.c:405 ../parser_regex.c:421 #, c-format msgid "%s: Invalid profile name '%s' - bad regular expression\n" msgstr "" #: ../parser_policy.c:202 ../parser_policy.c:402 ../parser_policy.c:375 #, c-format msgid "ERROR merging rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:234 #, c-format msgid "" "ERROR profile %s contains policy elements not usable with this kernel:\n" "\t'*', '?', character ranges, and alternations are not allowed.\n" "\t'**' may only be used at the end of a rule.\n" msgstr "" #: ../parser_policy.c:279 ../parser_policy.c:359 ../parser_policy.c:332 #, c-format msgid "ERROR processing regexs for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:306 ../parser_policy.c:389 ../parser_policy.c:362 #, c-format msgid "ERROR expanding variables for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:390 ../parser_policy.c:382 ../parser_policy.c:355 #, c-format msgid "ERROR adding hat access rule for profile %s\n" msgstr "" #: ../parser_policy.c:490 ../parser_policy.c:271 #, c-format msgid "ERROR in profile %s, failed to load\n" msgstr "%s விவரதà¯à®¤à®¿à®²à¯ பிழை, எறà¯à®±à¯à®¤à®²à¯ தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯\n" #: ../parser_policy.c:675 #, c-format msgid "%s: Errors found during postprocessing. Aborting.\n" msgstr "" #: ../parser_policy.c:682 ../parser_policy.c:704 #, c-format msgid "%s: Errors found during regex postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:689 #, c-format msgid "%s: Errors found during postprocess. Aborting.\n" msgstr "" #: ../parser_policy.c:696 #, c-format msgid "%s: Errors found in combining rules postprocessing. Aborting.\n" msgstr "" "%s: பினà¯à®šà¯†à®¯à®²à¯à®®à¯à®±à¯ˆ விதிகளை இணைபà¯à®ªà®¤à®¿à®²à¯ பிழைகள௠உளà¯à®³à®©. இடைனிரà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®•ிறதà¯.\n" #: parser_lex.l:180 parser_lex.l:186 #, c-format msgid "Could not process include directory '%s' in '%s'" msgstr "" #: ../parser_main.c:660 ../parser_main.c:523 msgid "Feature buffer full." msgstr "" #: ../parser_main.c:1115 ../parser_main.c:1132 ../parser_main.c:1024 #: ../parser_main.c:1041 msgid "Out of memory" msgstr "" #: ../parser_main.c:1182 ../parser_main.c:1091 #, c-format msgid "Can't create cache directory: %s\n" msgstr "" #: ../parser_main.c:1185 ../parser_main.c:1094 #, c-format msgid "File in cache directory location: %s\n" msgstr "" #: ../parser_main.c:1188 ../parser_main.c:1097 #, c-format msgid "Can't update cache directory: %s\n" msgstr "" #: ../parser_misc.c:833 #, c-format msgid "Internal: unexpected DBus mode character '%c' in input" msgstr "" #: ../parser_misc.c:857 #, c-format msgid "Internal error generated invalid DBus perm 0x%x\n" msgstr "" #: parser_yacc.y:575 parser_yacc.y:621 msgid "deny prefix not allowed" msgstr "" #: parser_yacc.y:612 parser_yacc.y:658 msgid "owner prefix not allowed" msgstr "" #: parser_yacc.y:660 msgid "owner prefix not allow on mount rules" msgstr "" #: parser_yacc.y:677 msgid "owner prefix not allow on dbus rules" msgstr "" #: parser_yacc.y:704 msgid "owner prefix not allow on capability rules" msgstr "" #: parser_yacc.y:1357 parser_yacc.y:1613 #, c-format msgid "invalid mount conditional %s%s" msgstr "" #: parser_yacc.y:1374 parser_yacc.y:1628 msgid "bad mount rule" msgstr "" #: parser_yacc.y:1381 parser_yacc.y:1635 msgid "mount point conditions not currently supported" msgstr "" #: parser_yacc.y:1398 parser_yacc.y:1650 #, c-format msgid "invalid pivotroot conditional '%s'" msgstr "" #: ../parser_regex.c:241 ../parser_regex.c:236 #, c-format msgid "" "%s: Regex grouping error: Invalid close ], no matching open [ detected\n" msgstr "" #: ../parser_regex.c:257 ../parser_regex.c:256 #, c-format msgid "%s: Regex grouping error: Exceeded maximum nesting of {}\n" msgstr "" #: ../parser_policy.c:366 ../parser_policy.c:339 #, c-format msgid "ERROR processing policydb rules for profile %s, failed to load\n" msgstr "" #: ../parser_policy.c:396 ../parser_policy.c:369 #, c-format msgid "ERROR replacing aliases for profile %s, failed to load\n" msgstr "" #: ../parser_interface.c:635 ../parser_interface.c:638 #, c-format msgid "%s: Unable to write %s\n" msgstr "" #: ../parser_main.c:721 #, c-format msgid "Error: Could not read binary profile or cache file %s: %s.\n" msgstr "" #: ../parser_main.c:811 #, c-format msgid "Error: Could not read cache file '%s', skipping...\n" msgstr "" #: ../parser_misc.c:575 #, c-format msgid "Internal: unexpected %s mode character '%c' in input" msgstr "" #: ../parser_misc.c:599 #, c-format msgid "Internal error generated invalid %s perm 0x%x\n" msgstr "" #: parser_yacc.y:703 msgid "owner prefix not allowed on mount rules" msgstr "" #: parser_yacc.y:720 msgid "owner prefix not allowed on dbus rules" msgstr "" #: parser_yacc.y:736 msgid "owner prefix not allowed on signal rules" msgstr "" #: parser_yacc.y:752 msgid "owner prefix not allowed on ptrace rules" msgstr "" #: parser_yacc.y:768 msgid "owner prefix not allowed on unix rules" msgstr "" #: parser_yacc.y:794 msgid "owner prefix not allowed on capability rules" msgstr "" #: parser_yacc.y:1293 #, c-format msgid "dbus rule: invalid conditional group %s=()" msgstr "" #: parser_yacc.y:1371 #, c-format msgid "unix rule: invalid conditional group %s=()" msgstr "" #: ../parser_regex.c:368 #, c-format msgid "%s: Regex error: trailing '\\' escape character\n" msgstr "" apparmor-3.0.4/parser/parser_lex.l0000664000175000017500000004511314201060045014742 0ustar jjjj/* * Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 * NOVELL (All rights reserved) * Copyright (c) 2010 - 2013 * Canonical Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Canonical, Ltd. */ /* Definitions section */ /* %option main */ /* options set to noXXX eliminates need to link with libfl */ %option noyywrap /* set %option noyy_top_state in Makefile, so can be used when DEBUG=1 */ %option nounput %option stack %option nodefault %{ #include #include #include #include #include #include #include #include #include "parser.h" #include "profile.h" #include "parser_include.h" #include "parser_yacc.h" #include "lib.h" #include "policy_cache.h" #include "file_cache.h" #ifdef PDEBUG #undef PDEBUG #endif /* #define DEBUG */ #ifdef DEBUG static int yy_top_state(void); #define PDEBUG(fmt, args...) fprintf(stderr, "Lexer (Line %d) (state %s): " fmt, current_lineno, state_names[YY_START].c_str(), ## args) #else #define PDEBUG(fmt, args...) /* Do nothing */ #endif #define NPDEBUG(fmt, args...) /* Do nothing */ #define DUMP_PREPROCESS do { if (preprocess_only) ECHO; } while (0) #define DUMP_AND_DEBUG(X...) \ do { \ DUMP_PREPROCESS; \ PDEBUG(X); \ } while (0) #define EAT_TOKEN(X...) DUMP_AND_DEBUG(X) #define RETURN_TOKEN(X) \ do { \ DUMP_AND_DEBUG("Matched: '%s' Returning(%s)\n", yytext, #X); \ return (X); \ } while (0) #define POP() \ do { \ DUMP_AND_DEBUG(" (pop_to(%s)): Matched: %s\n", state_names[yy_top_state()].c_str(), yytext); \ yy_pop_state(); \ } while (0) #define POP_NODUMP() \ do { \ PDEBUG(" (pop_to(%s)): Matched: %s\n", state_names[yy_top_state()].c_str(), yytext); \ yy_pop_state(); \ } while (0) #define PUSH(X) \ do { \ DUMP_AND_DEBUG(" (push(%s)): Matched: %s\n", state_names[(X)].c_str(), yytext); \ yy_push_state(X); \ } while (0) #define POP_AND_RETURN(X) \ do { \ POP(); \ return (X); \ } while (0) #define PUSH_AND_RETURN(X, Y) \ do { \ PUSH(X); \ return (Y); \ } while (0) #define BEGIN_AND_RETURN(X, Y) \ do { \ DUMP_AND_DEBUG(" (begin(%s)): Matched: %s\n", state_names[(X)].c_str(), yytext); \ BEGIN(X); \ return (Y); \ } while (0) #define YY_NO_INPUT #define STATE_TABLE_ENT(X) {X, #X } extern unordered_map state_names; struct cb_struct { const char *fullpath; const char *filename; }; static int include_dir_cb(int dirfd unused, const char *name, struct stat *st, void *data) { struct cb_struct *d = (struct cb_struct *) data; autofree char *path = NULL; if (asprintf(&path, "%s/%s", d->fullpath, name) < 0) yyerror("Out of memory"); if (is_blacklisted(name, path)) return 0; if (g_includecache->find(path)) { PDEBUG("skipping reinclude of \'%s\' in \'%s\'\n", path, d->filename); return 0; } if (S_ISREG(st->st_mode)) { if (!(yyin = fopen(path,"r"))) yyerror(_("Could not open '%s' in '%s'"), path, d->filename); PDEBUG("Opened include \"%s\" in \"%s\"\n", path, d->filename); (void) g_includecache->insert(path); update_mru_tstamp(yyin, path); push_include_stack(path); yypush_buffer_state(yy_create_buffer(yyin, YY_BUF_SIZE)); } return 0; } void include_filename(char *filename, int search, bool if_exists) { FILE *include_file = NULL; struct stat my_stat; autofree char *fullpath = NULL; bool cached; if (search) { include_file = search_path(filename, &fullpath, &cached); if (!include_file && cached) { goto skip; } else if (preprocess_only) { fprintf(yyout, "\n\n##included <%s>\n", filename); } else if (!include_file && preprocess_only) { fprintf(yyout, "\n\n##failed include <%s>\n", filename); } } else if (g_includecache->find(filename)) { /* duplicate entry skip */ goto skip; } else { if (preprocess_only) fprintf(yyout, "\n\n##included \"%s\"\n", filename); fullpath = strdup(filename); include_file = fopen(fullpath, "r"); if (include_file) /* ignore failure to insert into cache */ (void) g_includecache->insert(filename); } if (!include_file) { if (if_exists) return; yyerror(_("Could not open '%s'"), fullpath ? fullpath: filename); } if (fstat(fileno(include_file), &my_stat)) yyerror(_("fstat failed for '%s'"), fullpath); if (S_ISREG(my_stat.st_mode)) { yyin = include_file; update_mru_tstamp(include_file, fullpath); PDEBUG("Opened include \"%s\"\n", fullpath); push_include_stack(fullpath); yypush_buffer_state(yy_create_buffer( yyin, YY_BUF_SIZE )); } else if (S_ISDIR(my_stat.st_mode)) { struct cb_struct data = { fullpath, filename }; update_mru_tstamp(include_file, fullpath); fclose(include_file); include_file = NULL; if (dirat_for_each(AT_FDCWD, fullpath, &data, include_dir_cb)) { yyerror(_("Could not process include directory" " '%s' in '%s'"), fullpath, filename);; } } return; skip: if (preprocess_only) fprintf(yyout, "\n\n##skipped duplicate include <%s>\n", filename); return; } static char *lsntrim(char *s, int l) { const char *end = s + l; while (s <= end && isspace(*s)) s++; return s; } static int rsntrim(const char *s, int l) { const char *r = s + l; while (r > s && isspace(*--r)) l--; return l; } %} CARET "^" OPEN_BRACE \{ CLOSE_BRACE \} SLASH \/ COLON : AMPERSAND & END_OF_RULE [,] RANGE - MODE_CHARS ([RrWwaLlMmkXx])|(([Pp]|[Cc])[Xx])|(([Pp]|[Cc])?([IiUu])[Xx]) MODES {MODE_CHARS}+ WS [[:blank:]] NUMBER [[:digit:]]+ ID_CHARS [^ \t\r\n"!,] ID {ID_CHARS}|(,{ID_CHARS}|\\[ ]|\\\t|\\\"|\\!|\\,) IDS {ID}+ INC_ID [^ \t\r\n"!,<>]|(,[^ \t\r\n"!,<>]|\\[ ]|\\\t|\\\"|\\!|\\,) INC_IDS {INC_ID}+ POST_VAR_ID_CHARS [^ \t\n"!,]{-}[=\+] POST_VAR_ID {POST_VAR_ID_CHARS}|(,{POST_VAR_ID_CHARS}|\\[ ]|\\\t|\\\"|\\!|\\,|\\\(|\\\)) LIST_VALUE_ID_CHARS ([^ \t\n"!,]{-}[()]|\\[ ]|\\\t|\\\"|\\!|\\,|\\\(|\\\)) LIST_VALUE_QUOTED_ID_CHARS [^\0"]|\\\" LIST_VALUE_ID {LIST_VALUE_ID_CHARS}+ QUOTED_LIST_VALUE_ID \"{LIST_VALUE_QUOTED_ID_CHARS}+\" ID_CHARS_NOEQ [^ \t\n"!,]{-}[=)] LEADING_ID_CHARS_NOEQ [^ \t\n"!,]{-}[=()+&] ID_NOEQ {ID_CHARS_NOEQ}|(,{ID_CHARS_NOEQ}) IDS_NOEQ {LEADING_ID_CHARS_NOEQ}{ID_NOEQ}* ALLOWED_QUOTED_ID [^\0"]|\\\" QUOTED_ID \"{ALLOWED_QUOTED_ID}*\" IP {NUMBER}\.{NUMBER}\.{NUMBER}\.{NUMBER} HAT hat{WS}* PROFILE profile{WS}* KEYWORD [[:alpha:]_]+ VARIABLE_NAME [[:alpha:]][[:alnum:]_]* SET_VAR_PREFIX @ SET_VARIABLE {SET_VAR_PREFIX}(\{{VARIABLE_NAME}\}|{VARIABLE_NAME}) BOOL_VARIABLE $(\{{VARIABLE_NAME}\}|{VARIABLE_NAME}) LABEL (\/|{SET_VARIABLE}{POST_VAR_ID}|{COLON}|{AMPERSAND}){ID}* QUOTED_LABEL \"(\/|{SET_VAR_PREFIX}|{COLON}|{AMPERSAND})([^\0"]|\\\")*\" OPEN_PAREN \( CLOSE_PAREN \) COMMA \, EQUALS = ADD_ASSIGN \+= ARROW -> LT_EQUAL <= LT < GT > /* IF adding new state please update state_names table and default rule (just * above the state_names table) at the eof. * * The nodefault option is set so missing adding to the default rule isn't * fatal but can't take advantage of additional debug the default rule might * have. * * If a state is not added to the default rule it can result in the message * "flex scanner jammed" */ %x SUB_ID %x SUB_ID_WS %x SUB_VALUE %x EXTCOND_MODE %x EXTCONDLIST_MODE %x NETWORK_MODE %x LIST_VAL_MODE %x LIST_COND_MODE %x LIST_COND_VAL %x LIST_COND_PAREN_VAL %x ASSIGN_MODE %x RLIMIT_MODE %x MOUNT_MODE %x DBUS_MODE %x SIGNAL_MODE %x PTRACE_MODE %x UNIX_MODE %x CHANGE_PROFILE_MODE %x INCLUDE %x INCLUDE_EXISTS %x ABI_MODE %% %{ /* Copied directly into yylex function */ if (parser_token) { int t = parser_token; parser_token = 0; return t; } %} { {WS}+ { DUMP_PREPROCESS; /* Ignoring whitespace */ } } { (\<((([^"\>\t\r\n])+)|{QUOTED_ID})\>|{QUOTED_ID}|({INC_IDS})) { /* | <"filename"> | "filename" | filename */ int lt = *yytext == '<' ? 1 : 0; int len = yyleng - lt*2; char *s = yytext + lt; char * filename = lsntrim(s, yyleng); bool exists = YYSTATE == INCLUDE_EXISTS; filename = processid(filename, rsntrim(filename, len - (filename - s))); if (!filename) yyerror(_("Failed to process filename\n")); if (YYSTATE == ABI_MODE) { yylval.id = filename; if (lt) RETURN_TOKEN(TOK_ID); else RETURN_TOKEN(TOK_VALUE); } include_filename(filename, lt, exists); free(filename); POP_NODUMP(); } } <> { fclose(yyin); pop_include_stack(); yypop_buffer_state(); if ( !YY_CURRENT_BUFFER ) yyterminate(); } { (peer|xattrs)/{WS}*={WS}*\( { /* we match to the = in the lexer so that we can switch scanner * state. By the time the parser see the = it may be too late * as bison may have requested the next token from the scanner */ yylval.id = processid(yytext, yyleng); PUSH_AND_RETURN(EXTCONDLIST_MODE, TOK_CONDLISTID); } {VARIABLE_NAME}/{WS}*= { /* we match to the = in the lexer so that we can switch scanner * state. By the time the parser see the = it may be too late * as bison may have requested the next token from the scanner */ yylval.id = processid(yytext, yyleng); PUSH_AND_RETURN(EXTCOND_MODE, TOK_CONDID); } {VARIABLE_NAME}/{WS}+in{WS}*\( { /* we match to 'in' in the lexer so that we can switch scanner * state. By the time the parser see the 'in' it may be to * late as bison may have requested the next token from the * scanner */ yylval.id = processid(yytext, yyleng); PUSH_AND_RETURN(EXTCOND_MODE, TOK_CONDID); } } { ({IDS}|{QUOTED_ID}) { /* Go into separate state to match generic ID strings */ yylval.id = processid(yytext, yyleng); POP_AND_RETURN(TOK_ID); } } { ({IDS}|{QUOTED_ID}) { /* Go into separate state to match generic VALUE strings */ yylval.id = processid(yytext, yyleng); POP_AND_RETURN(TOK_VALUE); } } { {CLOSE_PAREN} { POP_AND_RETURN(TOK_CLOSEPAREN); } {COMMA} { EAT_TOKEN("listval: ,\n"); } ({LIST_VALUE_ID}|{QUOTED_ID}) { yylval.id = processid(yytext, yyleng); RETURN_TOKEN(TOK_VALUE); } } { {EQUALS}{WS}*/[^(\n]{-}{WS} { BEGIN_AND_RETURN(SUB_VALUE, TOK_EQUALS);} {EQUALS} { RETURN_TOKEN(TOK_EQUALS); } /* Don't push state here as this is a transition start condition and * we want to return to the start condition that invoked * when LIST_VAL_ID is done */ {OPEN_PAREN} { BEGIN_AND_RETURN(LIST_VAL_MODE, TOK_OPENPAREN); } in { RETURN_TOKEN(TOK_IN); } } { ({LIST_VALUE_ID}|{QUOTED_LIST_VALUE_ID}) { yylval.id = processid(yytext, yyleng); POP_AND_RETURN(TOK_VALUE); } } { {CLOSE_PAREN} { POP(); } ({LIST_VALUE_ID}|{QUOTED_LIST_VALUE_ID}) { yylval.id = processid(yytext, yyleng); RETURN_TOKEN(TOK_VALUE); } } { {CLOSE_PAREN} { POP_AND_RETURN(TOK_CLOSEPAREN); } {COMMA} { EAT_TOKEN("listcond: , \n"); } {ID_CHARS_NOEQ}+ { yylval.id = processid(yytext, yyleng); RETURN_TOKEN(TOK_CONDID); } {EQUALS}{WS}*{OPEN_PAREN} { PUSH_AND_RETURN(LIST_COND_PAREN_VAL, TOK_EQUALS); } {EQUALS} { PUSH_AND_RETURN(LIST_COND_VAL, TOK_EQUALS); } } { {EQUALS} { RETURN_TOKEN(TOK_EQUALS); } {OPEN_PAREN} { /* Don't push state here as this is a transition * start condition and we want to return to the start * condition that invoked when * LIST_VAL_ID is done */ BEGIN_AND_RETURN(LIST_COND_MODE, TOK_OPENPAREN); } } { ({IDS}|{QUOTED_ID}) { yylval.var_val = processid(yytext, yyleng); RETURN_TOKEN(TOK_VALUE); } {END_OF_RULE} { yylval.id = strdup(yytext); DUMP_PREPROCESS; yyerror(_("Variable declarations do not accept trailing commas")); } \\\n { DUMP_PREPROCESS; current_lineno++ ; } \r?\n { /* don't use shared rule because we need POP() here */ DUMP_PREPROCESS; current_lineno++; POP(); } } { {IDS} { yylval.id = strdup(yytext); RETURN_TOKEN(TOK_ID); } } { safe { RETURN_TOKEN(TOK_SAFE); } unsafe { RETURN_TOKEN(TOK_UNSAFE); } {ARROW} { /** * Push state so that we can return TOK_ID even when the * change_profile target is 'safe' or 'unsafe'. */ PUSH_AND_RETURN(SUB_ID_WS, TOK_ARROW); } ({IDS}|{QUOTED_ID}) { yylval.id = processid(yytext, yyleng); RETURN_TOKEN(TOK_ID); } } { -?{NUMBER} { yylval.var_val = strdup(yytext); RETURN_TOKEN(TOK_VALUE); } {KEYWORD} { yylval.id = strdup(yytext); if (strcmp(yytext, "infinity") == 0) RETURN_TOKEN(TOK_VALUE); RETURN_TOKEN(TOK_ID); } {LT_EQUAL} { RETURN_TOKEN(TOK_LE); } } { create { RETURN_TOKEN(TOK_CREATE); } listen { RETURN_TOKEN(TOK_LISTEN); } accept { RETURN_TOKEN(TOK_ACCEPT); } connect { RETURN_TOKEN(TOK_CONNECT); } getattr { RETURN_TOKEN(TOK_GETATTR); } setattr { RETURN_TOKEN(TOK_SETATTR); } getopt { RETURN_TOKEN(TOK_GETOPT); } setopt { RETURN_TOKEN(TOK_SETOPT); } shutdown { RETURN_TOKEN(TOK_SHUTDOWN); } } { bind { RETURN_TOKEN(TOK_BIND); } } { eavesdrop { RETURN_TOKEN(TOK_EAVESDROP); } } { send { RETURN_TOKEN(TOK_SEND); } receive { RETURN_TOKEN(TOK_RECEIVE); } } { trace { RETURN_TOKEN(TOK_TRACE); } readby { RETURN_TOKEN(TOK_READBY); } tracedby { RETURN_TOKEN(TOK_TRACEDBY); } } { read { RETURN_TOKEN(TOK_READ); } write { RETURN_TOKEN(TOK_WRITE); } {OPEN_PAREN} { PUSH_AND_RETURN(LIST_VAL_MODE, TOK_OPENPAREN); } (r|w|rw|wr)/([[:space:],]) { yylval.mode = strdup(yytext); RETURN_TOKEN(TOK_MODE); } } { {ARROW} { RETURN_TOKEN(TOK_ARROW); } } { ({IDS_NOEQ}|{LABEL}|{QUOTED_ID}) { yylval.id = processid(yytext, yyleng); RETURN_TOKEN(TOK_ID); } } #include{WS}+if{WS}+exists/{WS}.*\r?\n { /* Don't use PUSH() macro here as we don't want #include echoed out. * It needs to be handled specially */ yy_push_state(INCLUDE_EXISTS); } include{WS}+if{WS}+exists/{WS} { /* Don't use PUSH() macro here as we don't want #include echoed out. * It needs to be handled specially */ yy_push_state(INCLUDE_EXISTS); } #include/.*\r?\n { /* Don't use PUSH() macro here as we don't want #include echoed out. * It needs to be handled specially */ yy_push_state(INCLUDE); } include/{WS} { /* Don't use PUSH() macro here as we don't want #include echoed out. * It needs to be handled specially */ yy_push_state(INCLUDE); } #.*\r?\n { /* normal comment */ DUMP_AND_DEBUG("comment(%d): %s\n", current_lineno, yytext); current_lineno++; } {CARET} { PUSH_AND_RETURN(SUB_ID, TOK_CARET); } {ARROW} { PUSH_AND_RETURN(SUB_ID_WS, TOK_ARROW); } {EQUALS} { PUSH_AND_RETURN(ASSIGN_MODE, TOK_EQUALS); } {ADD_ASSIGN} { PUSH_AND_RETURN(ASSIGN_MODE, TOK_ADD_ASSIGN); } {SET_VARIABLE} { yylval.set_var = strdup(yytext); RETURN_TOKEN(TOK_SET_VAR); } {BOOL_VARIABLE} { yylval.bool_var = strdup(yytext); RETURN_TOKEN(TOK_BOOL_VAR); } {OPEN_BRACE} { RETURN_TOKEN(TOK_OPEN); } {CLOSE_BRACE} { RETURN_TOKEN(TOK_CLOSE); } ({LABEL}|{QUOTED_LABEL}) { yylval.id = processid(yytext, yyleng); RETURN_TOKEN(TOK_ID); } ({MODES})/([[:space:],]) { yylval.mode = strdup(yytext); RETURN_TOKEN(TOK_MODE); } {HAT} { PUSH_AND_RETURN(SUB_ID, TOK_HAT); } {PROFILE} { PUSH_AND_RETURN(SUB_ID, TOK_PROFILE); } {COLON} { RETURN_TOKEN(TOK_COLON); } {OPEN_PAREN} { PUSH_AND_RETURN(LIST_VAL_MODE, TOK_OPENPAREN); } {VARIABLE_NAME} { int token = get_keyword_token(yytext); int state = INITIAL; /* special cases */ switch (token) { case -1: /* no token found */ yylval.id = processunquoted(yytext, yyleng); RETURN_TOKEN(TOK_ID); break; case TOK_RLIMIT: state = RLIMIT_MODE; break; case TOK_NETWORK: state = NETWORK_MODE; break; case TOK_CHANGE_PROFILE: state = CHANGE_PROFILE_MODE; break; case TOK_MOUNT: case TOK_REMOUNT: case TOK_UMOUNT: state = MOUNT_MODE; break; case TOK_DBUS: state = DBUS_MODE; break; case TOK_SIGNAL: state = SIGNAL_MODE; break; case TOK_PTRACE: state = PTRACE_MODE; break; case TOK_UNIX: state = UNIX_MODE; break; case TOK_ABI: state = ABI_MODE; break; default: /* nothing */ break; } PUSH_AND_RETURN(state, token); } { {END_OF_RULE} { if (YY_START != INITIAL) POP_NODUMP(); RETURN_TOKEN(TOK_END_OF_RULE); } } { \r?\n { DUMP_PREPROCESS; current_lineno++; } } { (.|\n) { DUMP_PREPROCESS; /* Something we didn't expect */ yyerror(_("Lexer found unexpected character: '%s' (0x%x) in state: %s"), yytext, yytext[0], state_names[YY_START].c_str()); } } %% /* Create a table mapping lexer state number to the name used in the * in the code. This allows for better debug output */ unordered_map state_names = { STATE_TABLE_ENT(INITIAL), STATE_TABLE_ENT(SUB_ID), STATE_TABLE_ENT(SUB_ID_WS), STATE_TABLE_ENT(SUB_VALUE), STATE_TABLE_ENT(EXTCOND_MODE), STATE_TABLE_ENT(EXTCONDLIST_MODE), STATE_TABLE_ENT(NETWORK_MODE), STATE_TABLE_ENT(LIST_VAL_MODE), STATE_TABLE_ENT(LIST_COND_MODE), STATE_TABLE_ENT(LIST_COND_VAL), STATE_TABLE_ENT(LIST_COND_PAREN_VAL), STATE_TABLE_ENT(ASSIGN_MODE), STATE_TABLE_ENT(RLIMIT_MODE), STATE_TABLE_ENT(MOUNT_MODE), STATE_TABLE_ENT(DBUS_MODE), STATE_TABLE_ENT(SIGNAL_MODE), STATE_TABLE_ENT(PTRACE_MODE), STATE_TABLE_ENT(UNIX_MODE), STATE_TABLE_ENT(CHANGE_PROFILE_MODE), STATE_TABLE_ENT(INCLUDE), STATE_TABLE_ENT(INCLUDE_EXISTS), STATE_TABLE_ENT(ABI_MODE), }; apparmor-3.0.4/parser/network.h0000664000175000017500000001020714201060045014257 0ustar jjjj/* * Copyright (c) 2014 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #ifndef __AA_NETWORK_H #define __AA_NETWORK_H #include #include #include #include #include #include #include #include #include #include #include "parser.h" #include "rule.h" #define AA_NET_WRITE 0x0002 #define AA_NET_SEND AA_NET_WRITE #define AA_NET_READ 0x0004 #define AA_NET_RECEIVE AA_NET_READ #define AA_NET_CREATE 0x0010 #define AA_NET_SHUTDOWN 0x0020 /* alias delete */ #define AA_NET_CONNECT 0x0040 /* alias open */ #define AA_NET_SETATTR 0x0100 #define AA_NET_GETATTR 0x0200 //#define AA_NET_CHMOD 0x1000 /* pair */ //#define AA_NET_CHOWN 0x2000 /* pair */ //#define AA_NET_CHGRP 0x4000 /* pair */ //#define AA_NET_LOCK 0x8000 /* LINK_SUBSET overlaid */ #define AA_NET_ACCEPT 0x00100000 #define AA_NET_BIND 0x00200000 #define AA_NET_LISTEN 0x00400000 #define AA_NET_SETOPT 0x01000000 #define AA_NET_GETOPT 0x02000000 #define AA_CONT_MATCH 0x08000000 #define AA_VALID_NET_PERMS (AA_NET_SEND | AA_NET_RECEIVE | AA_NET_CREATE | \ AA_NET_SHUTDOWN | AA_NET_CONNECT | \ AA_NET_SETATTR | AA_NET_GETATTR | AA_NET_BIND | \ AA_NET_ACCEPT | AA_NET_LISTEN | AA_NET_SETOPT | \ AA_NET_GETOPT | AA_CONT_MATCH) #define AA_LOCAL_NET_PERMS (AA_NET_CREATE | AA_NET_SHUTDOWN | AA_NET_SETATTR |\ AA_NET_GETATTR | AA_NET_BIND | AA_NET_ACCEPT | \ AA_NET_LISTEN | AA_NET_SETOPT | AA_NET_GETOPT) #define AA_NET_OPT (AA_NET_SETOPT | AA_NET_GETOPT) #define AA_LOCAL_NET_CMD (AA_NET_LISTEN | AA_NET_OPT) #define AA_PEER_NET_PERMS (AA_VALID_NET_PERMS & (~AA_LOCAL_NET_PERMS | \ AA_NET_ACCEPT)) struct network_tuple { const char *family_name; unsigned int family; const char *type_name; unsigned int type; const char *protocol_name; unsigned int protocol; }; /* supported AF protocols */ struct aa_network_entry { unsigned int family; unsigned int type; unsigned int protocol; struct aa_network_entry *next; }; static inline uint32_t map_perms(uint32_t mask) { return (mask & 0x7f) | ((mask & (AA_NET_GETATTR | AA_NET_SETATTR)) << (AA_OTHER_SHIFT - 8)) | ((mask & (AA_NET_ACCEPT | AA_NET_BIND | AA_NET_LISTEN)) >> 4) | /* 2 + (AA_OTHER_SHIFT - 20) */ ((mask & (AA_NET_SETOPT | AA_NET_GETOPT)) >> 5); /* 5 + (AA_OTHER_SHIFT - 24) */ }; int parse_net_mode(const char *str_mode, int *mode, int fail); extern struct aa_network_entry *new_network_ent(unsigned int family, unsigned int type, unsigned int protocol); extern struct aa_network_entry *network_entry(const char *family, const char *type, const char *protocol); extern size_t get_af_max(void); void __debug_network(unsigned int *array, const char *name); struct network { unsigned int *allow; /* array of type masks * indexed by AF_FAMILY */ unsigned int *audit; unsigned int *deny; unsigned int *quiet; network(void) { allow = audit = deny = quiet = NULL; } void dump(void) { if (allow) __debug_network(allow, "Network"); if (audit) __debug_network(audit, "Audit Net"); if (deny) __debug_network(deny, "Deny Net"); if (quiet) __debug_network(quiet, "Quiet Net"); } }; int net_find_type_val(const char *type); const char *net_find_type_name(int type); const char *net_find_af_name(unsigned int af); const struct network_tuple *net_find_mapping(const struct network_tuple *map, const char *family, const char *type, const char *protocol); #endif /* __AA_NETWORK_H */ apparmor-3.0.4/parser/aa-teardown.80000664000175000017500000001050114201060301014700 0ustar jjjj.\" Automatically generated by Pod::Man 4.11 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "AA-TEARDOWN 8" .TH AA-TEARDOWN 8 "2022-02-10" "AppArmor 3.0.4" "AppArmor" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" aa\-teardown \- unload all AppArmor profiles .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBaa-teardown\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" aa-teardown unloads all AppArmor profiles .SH "BUGS" .IX Header "BUGS" If you find any bugs, please report them at . .SH "SEE ALSO" .IX Header "SEE ALSO" \&\fBapparmor\fR\|(7), \fBapparmor.d\fR\|(5), and . apparmor-3.0.4/parser/default_features.c0000664000175000017500000001264614201060045016114 0ustar jjjj/* * This file contains a set of old feature files that are used under different * circumstances. * * match_n_abi: feature abi for oldest match_file (pre features) abi. * * match_c_abi: features abi for match_file (pre features) abi that supports * create. * * match_cn_abi: features abi for match_file (pre features) abi that supports * create and network. * * default_features_abi: is the feature abi used when policy is not tagged * with an abi and no featuere-abi was specified to the * parser. */ #include "parser.h" const char *match_n_abi = "caps {mask {chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read\ }\ }\ rlimit {mask {cpu fsize data stack core rss nproc nofile memlock as locks sigpending msgqueue nice rtprio rttime\ }\ }\ capability {0xffffff\ }\ network {af_unix {yes\ }\ af_mask {unspec unix inet ax25 ipx appletalk netrom bridge atmpvc x25 inet6 rose netbeui security key netlink packet ash econet atmsvc rds sna irda pppox wanpipe llc ib mpls can tipc bluetooth iucv rxrpc isdn phonet ieee802154 caif alg nfc vsock kcm qipcrtr smc xdp\ }\ }\ file {mask {read write exec append mmap_exec link lock\ }\ }\ domain {change_profile {yes\ }\ change_onexec {yes\ }\ change_hatv {yes\ }\ change_hat {yes\ }\ }\ policy {\ v6 {yes\ }\ v5 {yes\ }\ }\ }\ "; /****************************** match_c_abi *******************************/ const char *match_c_abi = "caps {mask {chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read\ }\ }\ rlimit {mask {cpu fsize data stack core rss nproc nofile memlock as locks sigpending msgqueue nice rtprio rttime\ }\ }\ capability {0xffffff\ }\ file {mask {create read write exec append mmap_exec link lock\ }\ }\ domain {change_profile {yes\ }\ change_onexec {yes\ }\ change_hatv {yes\ }\ change_hat {yes\ }\ }\ policy {\ v6 {yes\ }\ v5 {yes\ }\ }\ }\ "; /****************************** match_cn_abi ******************************/ const char *match_cn_abi = "caps {mask {chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read\ }\ }\ rlimit {mask {cpu fsize data stack core rss nproc nofile memlock as locks sigpending msgqueue nice rtprio rttime\ }\ }\ capability {0xffffff\ }\ network {af_unix {yes\ }\ af_mask {unspec unix inet ax25 ipx appletalk netrom bridge atmpvc x25 inet6 rose netbeui security key netlink packet ash econet atmsvc rds sna irda pppox wanpipe llc ib mpls can tipc bluetooth iucv rxrpc isdn phonet ieee802154 caif alg nfc vsock kcm qipcrtr smc xdp\ }\ }\ file {mask {create read write exec append mmap_exec link lock\ }\ }\ domain {change_profile {yes\ }\ change_onexec {yes\ }\ change_hatv {yes\ }\ change_hat {yes\ }\ }\ policy {\ v6 {yes\ }\ v5 {yes\ }\ }\ }\ "; /************************** deafult_features_abi ***************************/ const char *default_features_abi = "query {label {multi_transaction {yes\ }\ data {yes\ }\ perms {allow deny audit quiet\ }\ }\ }\ dbus {mask {acquire send receive\ }\ }\ signal {mask {hup int quit ill trap abrt bus fpe kill usr1 segv usr2 pipe alrm term stkflt chld cont stop stp ttin ttou urg xcpu xfsz vtalrm prof winch io pwr sys emt lost\ }\ }\ ptrace {mask {read trace\ }\ }\ caps {mask {chown dac_override dac_read_search fowner fsetid kill setgid setuid setpcap linux_immutable net_bind_service net_broadcast net_admin net_raw ipc_lock ipc_owner sys_module sys_rawio sys_chroot sys_ptrace sys_pacct sys_admin sys_boot sys_nice sys_resource sys_time sys_tty_config mknod lease audit_write audit_control setfcap mac_override mac_admin syslog wake_alarm block_suspend audit_read perfmon bpf\ }\ }\ rlimit {mask {cpu fsize data stack core rss nproc nofile memlock as locks sigpending msgqueue nice rtprio rttime\ }\ }\ capability {0xffffff\ }\ namespaces {pivot_root {no\ }\ profile {yes\ }\ }\ mount {mask {mount umount pivot_root\ }\ }\ network {af_unix {yes\ }\ af_mask {unspec unix inet ax25 ipx appletalk netrom bridge atmpvc x25 inet6 rose netbeui security key netlink packet ash econet atmsvc rds sna irda pppox wanpipe llc ib mpls can tipc bluetooth iucv rxrpc isdn phonet ieee802154 caif alg nfc vsock kcm qipcrtr smc xdp\ }\ }\ file {mask {create read write exec append mmap_exec link lock\ }\ }\ domain {version {1.2\ }\ }\ computed_longest_left {yes\ }\ post_nnp_subset {yes\ }\ fix_binfmt_elf_mmap {yes\ }\ stack {yes\ }\ change_profile {yes\ }\ change_onexec {yes\ }\ change_hatv {yes\ }\ change_hat {yes\ }\ }\ policy {set_load {yes\ }\ versions {v8 {yes\ }\ v7 {yes\ }\ v6 {yes\ }\ v5 {yes\ }\ }\ }\ "; apparmor-3.0.4/parser/dbus.cc0000664000175000017500000001766214201060045013675 0ustar jjjj/* * Copyright (c) 2013 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #include #include #include #include #include #include #include "parser.h" #include "profile.h" #include "parser_yacc.h" #include "dbus.h" int parse_dbus_mode(const char *str_mode, int *mode, int fail) { return parse_X_mode("DBus", AA_VALID_DBUS_PERMS, str_mode, mode, fail); } void dbus_rule::move_conditionals(struct cond_entry *conds) { struct cond_entry *cond_ent; list_for_each(conds, cond_ent) { /* for now disallow keyword 'in' (list) */ if (!cond_ent->eq) yyerror("keyword \"in\" is not allowed in dbus rules\n"); if (list_len(cond_ent->vals) > 1) yyerror("dbus conditional \"%s\" only supports a single value\n", cond_ent->name); if (strcmp(cond_ent->name, "bus") == 0) { move_conditional_value("dbus", &bus, cond_ent); } else if (strcmp(cond_ent->name, "name") == 0) { move_conditional_value("dbus", &name, cond_ent); } else if (strcmp(cond_ent->name, "label") == 0) { move_conditional_value("dbus", &peer_label, cond_ent); } else if (strcmp(cond_ent->name, "path") == 0) { move_conditional_value("dbus", &path, cond_ent); } else if (strcmp(cond_ent->name, "interface") == 0) { move_conditional_value("dbus", &interface, cond_ent); } else if (strcmp(cond_ent->name, "member") == 0) { move_conditional_value("dbus", &member, cond_ent); } else { yyerror("invalid dbus conditional \"%s\"\n", cond_ent->name); } } } dbus_rule::dbus_rule(int mode_p, struct cond_entry *conds, struct cond_entry *peer_conds): bus(NULL), name(NULL), peer_label(NULL), path(NULL), interface(NULL), member(NULL), mode(0), audit(0), deny(0) { int name_is_subject_cond = 0, message_rule = 0, service_rule = 0; /* Move the global/subject conditionals over & check the results */ move_conditionals(conds); if (name) name_is_subject_cond = 1; if (peer_label) yyerror("dbus \"label\" conditional can only be used inside of the \"peer=()\" grouping\n"); /* Move the peer conditionals */ move_conditionals(peer_conds); if (path || interface || member || peer_label || (name && !name_is_subject_cond)) message_rule = 1; if (name && name_is_subject_cond) service_rule = 1; if (message_rule && service_rule) yyerror("dbus rule contains message conditionals and service conditionals\n"); /* Copy mode. If no mode was specified, assign an implied mode. */ if (mode_p) { mode = mode_p; if (mode & ~AA_VALID_DBUS_PERMS) yyerror("mode contains unknown dbus access\n"); else if (message_rule && (mode & AA_DBUS_BIND)) yyerror("dbus \"bind\" access cannot be used with message rule conditionals\n"); else if (service_rule && (mode & (AA_DBUS_SEND | AA_DBUS_RECEIVE))) yyerror("dbus \"send\" and/or \"receive\" accesses cannot be used with service rule conditionals\n"); else if (mode & AA_DBUS_EAVESDROP && (path || interface || member || peer_label || name)) { yyerror("dbus \"eavesdrop\" access can only contain a bus conditional\n"); } } else { if (message_rule) mode = (AA_DBUS_SEND | AA_DBUS_RECEIVE); else if (service_rule) mode = (AA_DBUS_BIND); else mode = AA_VALID_DBUS_PERMS; } free_cond_list(conds); free_cond_list(peer_conds); } ostream &dbus_rule::dump(ostream &os) { if (audit) os << "audit "; if (deny) os << "deny "; os << "dbus ( "; if (mode & AA_DBUS_SEND) os << "send "; if (mode & AA_DBUS_RECEIVE) os << "receive "; if (mode & AA_DBUS_BIND) os << "bind "; if (mode & AA_DBUS_EAVESDROP) os << "eavesdrop "; os << ")"; if (bus) os << " bus=\"" << bus << "\""; if ((mode & AA_DBUS_BIND) && name) os << " name=\"" << name << "\""; if (path) os << " path=\"" << path << "\""; if (interface) os << " interface=\"" << interface << "\""; if (member) os << " member=\"" << member << "\""; if (!(mode & AA_DBUS_BIND) && (peer_label || name)) { os << " peer=( "; if (peer_label) os << "label=\"" << peer_label << "\" "; if (name) os << "name=\"" << name << "\" "; os << ")"; } os << ",\n"; return os; } int dbus_rule::expand_variables(void) { int error = expand_entry_variables(&bus); if (error) return error; error = expand_entry_variables(&name); if (error) return error; error = expand_entry_variables(&peer_label); if (error) return error; error = expand_entry_variables(&path); if (error) return error; filter_slashes(path); error = expand_entry_variables(&interface); if (error) return error; error = expand_entry_variables(&member); if (error) return error; return 0; } void dbus_rule::warn_once(const char *name) { rule_t::warn_once(name, "dbus rules not enforced"); } int dbus_rule::gen_policy_re(Profile &prof) { std::string busbuf; std::string namebuf; std::string peer_labelbuf; std::string pathbuf; std::string ifacebuf; std::string memberbuf; std::ostringstream buffer; const char *vec[6]; pattern_t ptype; int pos; if (!features_supports_dbus) { warn_once(prof.name); return RULE_NOT_SUPPORTED; } buffer << "\\x" << std::setfill('0') << std::setw(2) << std::hex << AA_CLASS_DBUS; busbuf.append(buffer.str()); if (bus) { ptype = convert_aaregex_to_pcre(bus, 0, glob_default, busbuf, &pos); if (ptype == ePatternInvalid) goto fail; } else { /* match any char except \000 0 or more times */ busbuf.append(default_match_pattern); } vec[0] = busbuf.c_str(); if (name) { ptype = convert_aaregex_to_pcre(name, 0, glob_default, namebuf, &pos); if (ptype == ePatternInvalid) goto fail; vec[1] = namebuf.c_str(); } else { /* match any char except \000 0 or more times */ vec[1] = default_match_pattern; } if (peer_label) { ptype = convert_aaregex_to_pcre(peer_label, 0, glob_default, peer_labelbuf, &pos); if (ptype == ePatternInvalid) goto fail; vec[2] = peer_labelbuf.c_str(); } else { /* match any char except \000 0 or more times */ vec[2] = default_match_pattern; } if (path) { ptype = convert_aaregex_to_pcre(path, 0, glob_default, pathbuf, &pos); if (ptype == ePatternInvalid) goto fail; vec[3] = pathbuf.c_str(); } else { /* match any char except \000 0 or more times */ vec[3] = default_match_pattern; } if (interface) { ptype = convert_aaregex_to_pcre(interface, 0, glob_default, ifacebuf, &pos); if (ptype == ePatternInvalid) goto fail; vec[4] = ifacebuf.c_str(); } else { /* match any char except \000 0 or more times */ vec[4] = default_match_pattern; } if (member) { ptype = convert_aaregex_to_pcre(member, 0, glob_default, memberbuf, &pos); if (ptype == ePatternInvalid) goto fail; vec[5] = memberbuf.c_str(); } else { /* match any char except \000 0 or more times */ vec[5] = default_match_pattern; } if (mode & AA_DBUS_BIND) { if (!prof.policy.rules->add_rule_vec(deny, mode & AA_DBUS_BIND, audit & AA_DBUS_BIND, 2, vec, dfaflags, false)) goto fail; } if (mode & (AA_DBUS_SEND | AA_DBUS_RECEIVE)) { if (!prof.policy.rules->add_rule_vec(deny, mode & (AA_DBUS_SEND | AA_DBUS_RECEIVE), audit & (AA_DBUS_SEND | AA_DBUS_RECEIVE), 6, vec, dfaflags, false)) goto fail; } if (mode & AA_DBUS_EAVESDROP) { if (!prof.policy.rules->add_rule_vec(deny, mode & AA_DBUS_EAVESDROP, audit & AA_DBUS_EAVESDROP, 1, vec, dfaflags, false)) goto fail; } return RULE_OK; fail: return RULE_ERROR; } apparmor-3.0.4/parser/parser.h0000664000175000017500000003460014201060045014065 0ustar jjjj/* * Copyright (c) 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 * NOVELL (All rights reserved) * * Copyright (c) 2010 - 2012 * Canonical Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #ifndef __AA_PARSER_H #define __AA_PARSER_H #include #include #include #include #define _(s) gettext(s) #include #include "file_cache.h" #include "immunix.h" #include "libapparmor_re/apparmor_re.h" #include "libapparmor_re/aare_rules.h" #include using namespace std; #include class Profile; class rule_t; #define MODULE_NAME "apparmor" /* Global variable to pass token to lexer. Will be replaced by parameter * when lexer and parser are made reentrant */ extern int parser_token; #define WARN_RULE_NOT_ENFORCED 0x1 #define WARN_RULE_DOWNGRADED 0x2 #define WARN_ABI 0x4 #define WARN_DEPRECATED 0x8 #define WARN_CONFIG 0x10 #define WARN_CACHE 0x20 #define WARN_DEBUG_CACHE 0x40 #define WARN_JOBS 0x80 #define WARN_DANGEROUS 0x100 #define WARN_UNEXPECTED 0x200 #define WARN_FORMAT 0x400 #define WARN_MISSING 0x800 #define WARN_OVERRIDE 0x1000 #define WARN_DEV (WARN_RULE_NOT_ENFORCED | WARN_RULE_DOWNGRADED | WARN_ABI | \ WARN_DEPRECATED | WARN_DANGEROUS | WARN_UNEXPECTED | \ WARN_FORMAT | WARN_MISSING | WARN_OVERRIDE | WARN_DEBUG_CACHE) #define DEFAULT_WARNINGS (WARN_CONFIG | WARN_CACHE | WARN_JOBS | \ WARN_UNEXPECTED | WARN_OVERRIDE) #define WARN_ALL (WARN_RULE_NOT_ENFORCED | WARN_RULE_DOWNGRADED | WARN_ABI | \ WARN_DEPRECATED | WARN_CONFIG | WARN_CACHE | \ WARN_DEBUG_CACHE | WARN_JOBS | WARN_DANGEROUS | \ WARN_UNEXPECTED | WARN_FORMAT | WARN_MISSING | WARN_OVERRIDE) extern dfaflags_t warnflags; extern dfaflags_t werrflags; typedef enum pattern_t pattern_t; struct prefixes { int audit; int deny; int owner; }; struct cod_pattern { char *regex; // posix regex }; struct value_list { char *value; struct value_list *next; }; struct cond_entry { char *name; int eq; /* where equals was used in specifying list */ struct value_list *vals; struct cond_entry *next; }; struct cond_entry_list { char *name; struct cond_entry *list; }; struct cod_entry { char *name; union { char *link_name; char *onexec; }; char *nt_name; Profile *prof; /* Special profile defined * just for this executable */ int mode; /* mode is 'or' of AA_* bits */ int audit; /* audit flags for mode */ int deny; /* TRUE or FALSE */ int alias_ignore; /* ignore for alias processing */ int subset; pattern_t pattern_type; struct cod_pattern pat; struct cod_entry *next; }; struct aa_rlimits { unsigned int specified; /* limits that are set */ rlim_t limits[RLIMIT_NLIMITS]; }; struct alt_name { char *name; struct alt_name *next; }; struct sd_hat { char *hat_name; unsigned int hat_magic; }; struct var_string { char *prefix; char *var; char *suffix; }; #define COD_READ_CHAR 'r' #define COD_WRITE_CHAR 'w' #define COD_APPEND_CHAR 'a' #define COD_EXEC_CHAR 'x' #define COD_LINK_CHAR 'l' #define COD_LOCK_CHAR 'k' #define COD_MMAP_CHAR 'm' #define COD_INHERIT_CHAR 'i' #define COD_UNCONFINED_CHAR 'U' #define COD_UNSAFE_UNCONFINED_CHAR 'u' #define COD_PROFILE_CHAR 'P' #define COD_UNSAFE_PROFILE_CHAR 'p' #define COD_LOCAL_CHAR 'C' #define COD_UNSAFE_LOCAL_CHAR 'c' #define OPTION_ADD 1 #define OPTION_REMOVE 2 #define OPTION_REPLACE 3 #define OPTION_STDOUT 4 #define OPTION_OFILE 5 #define BOOL int extern int preprocess_only; #define PATH_CHROOT_REL 0x1 #define PATH_NS_REL 0x2 #define PATH_CHROOT_NSATTACH 0x4 #define PATH_CHROOT_NO_ATTACH 0x8 #define PATH_MEDIATE_DELETED 0x10 #define PATH_DELEGATE_DELETED 0x20 #define PATH_ATTACH 0x40 #define PATH_NO_ATTACH 0x80 #ifdef DEBUG #define PDEBUG(fmt, args...) \ do { \ int pdebug_error = errno; \ fprintf(stderr, "parser: " fmt, ## args); \ errno = pdebug_error; \ } while (0) #else #define PDEBUG(fmt, args...) /* Do nothing */ #endif #define NPDEBUG(fmt, args...) /* Do nothing */ #define PERROR(fmt, args...) \ do { \ int perror_error = errno; \ fprintf(stderr, fmt, ## args); \ errno = perror_error; \ } while (0) #ifndef TRUE #define TRUE (1) #endif #ifndef FALSE #define FALSE (0) #endif #define MIN_PORT 0 #define MAX_PORT 65535 #ifndef unused #define unused __attribute__ ((unused)) #endif #define list_for_each(LIST, ENTRY) \ for ((ENTRY) = (LIST); (ENTRY); (ENTRY) = (ENTRY)->next) #define list_for_each_safe(LIST, ENTRY, TMP) \ for ((ENTRY) = (LIST), (TMP) = (LIST) ? (LIST)->next : NULL; (ENTRY); (ENTRY) = (TMP), (TMP) = (TMP) ? (TMP)->next : NULL) #define list_last_entry(LIST, ENTRY) \ for ((ENTRY) = (LIST); (ENTRY) && (ENTRY)->next; (ENTRY) = (ENTRY)->next) #define list_append(LISTA, LISTB) \ do { \ typeof(LISTA) ___tmp; \ list_last_entry((LISTA), ___tmp);\ ___tmp->next = (LISTB); \ } while (0) #define list_len(LIST) \ ({ \ int len = 0; \ typeof(LIST) tmp; \ list_for_each((LIST), tmp) \ len++; \ len; \ }) #define list_find_prev(LIST, ENTRY) \ ({ \ typeof(ENTRY) tmp, prev = NULL; \ list_for_each((LIST), tmp) { \ if (tmp == (ENTRY)) \ break; \ prev = tmp; \ } \ prev; \ }) #define list_remove_at(LIST, PREV, ENTRY) \ if (PREV) \ (PREV)->next = (ENTRY)->next; \ if ((ENTRY) == (LIST)) \ (LIST) = (ENTRY)->next; \ (ENTRY)->next = NULL; \ #define list_remove(LIST, ENTRY) \ do { \ typeof(ENTRY) prev = list_find_prev((LIST), (ENTRY)); \ list_remove_at((LIST), prev, (ENTRY)); \ } while (0) #define DUP_STRING(orig, new, field, fail_target) \ do { \ (new)->field = ((orig)->field) ? strdup((orig)->field) : NULL; \ if (((orig)->field) && !((new)->field)) \ goto fail_target; \ } while (0) #define u8 unsigned char #define u16 uint16_t #define u32 uint32_t #define u64 uint64_t #define cpu_to_le16(x) ((u16)(htole16 ((u16) x))) #define cpu_to_le32(x) ((u32)(htole32 ((u32) x))) #define cpu_to_le64(x) ((u64)(htole64 ((u64) x))) /* The encoding for kernal abi > 5 is * 28-31: reserved * 20-27: policy version * 12-19: policy abi version * 11: force complain flag * 10: reserved * 0-9: kernel abi version */ #define ENCODE_VERSION(C, P, PABI, KABI) \ ({ \ u32 version = (KABI) & 0x3ff; \ if ((KABI) > 5) { \ version |= (C) ? 1 << 11 : 0; \ version |= ((PABI) & 0xff) << 12; \ version |= ((P) & 0xff) << 20; \ } \ version; \ }) /* The parser fills this variable in automatically */ #define PROFILE_NAME_VARIABLE "profile_name" /* from parser_common.c */ extern uint32_t policy_version; extern uint32_t parser_abi_version; extern uint32_t kernel_abi_version; extern aa_features *pinned_features; extern aa_features *policy_features; extern aa_features *override_features; extern aa_features *kernel_features; extern int force_complain; extern int perms_create; extern int net_af_max_override; extern int kernel_load; extern int kernel_supports_setload; extern int features_supports_network; extern int features_supports_networkv8; extern int kernel_supports_policydb; extern int kernel_supports_diff_encode; extern int features_supports_mount; extern int features_supports_dbus; extern int features_supports_signal; extern int features_supports_ptrace; extern int features_supports_unix; extern int features_supports_stacking; extern int features_supports_domain_xattr; extern int kernel_supports_oob; extern int conf_verbose; extern int conf_quiet; extern int names_only; extern int option; extern int current_lineno; extern dfaflags_t dfaflags; extern const char *progname; extern char *profilename; extern char *profile_ns; extern char *current_filename; extern FILE *ofile; extern int read_implies_exec; extern IncludeCache_t *g_includecache; extern void pwarnf(bool werr, const char *fmt, ...) __attribute__((__format__(__printf__, 2, 3))); extern void common_warn_once(const char *name, const char *msg, const char **warned_name); #define pwarn(F, args...) do { if (warnflags & (F)) pwarnf((werrflags & (F)), ## args); } while (0) /* from parser_main (cannot be used in tst builds) */ extern int force_complain; extern void display_version(void); extern int show_cache; extern int skip_cache; extern int skip_read_cache; extern int write_cache; extern int cond_clear_cache; extern int force_clear_cache; extern int create_cache_dir; extern int preprocess_only; extern int skip_mode_force; extern int abort_on_error; extern int skip_bad_cache_rebuild; extern int mru_skip_cache; extern int debug_cache; /* provided by parser_lex.l (cannot be used in tst builds) */ extern FILE *yyin; extern void yyrestart(FILE *fp); extern int yyparse(void); extern void yyerror(const char *msg, ...); extern int yylex(void); /* parser_include.c */ extern const char *basedir; /* parser_regex.c */ #define default_match_pattern "[^\\000]*" #define anyone_match_pattern "[^\\000]+" #define glob_default 0 #define glob_null 1 extern pattern_t convert_aaregex_to_pcre(const char *aare, int anchor, int glob, std::string& pcre, int *first_re_pos); extern int build_list_val_expr(std::string& buffer, struct value_list *list); extern int convert_entry(std::string& buffer, char *entry); extern int clear_and_convert_entry(std::string& buffer, char *entry); extern int process_regex(Profile *prof); extern int post_process_entry(struct cod_entry *entry); extern int process_policydb(Profile *prof); extern int process_policy_ents(Profile *prof); extern void filter_slashes(char *path); /* parser_variable.c */ int expand_entry_variables(char **name); extern int process_variables(Profile *prof); extern struct var_string *split_out_var(const char *string); extern void free_var_string(struct var_string *var); /* parser_misc.c */ extern void warn_uppercase(void); extern int is_blacklisted(const char *name, const char *path); extern struct value_list *new_value_list(char *value); extern struct value_list *dup_value_list(struct value_list *list); extern void free_value_list(struct value_list *list); extern void print_value_list(struct value_list *list); extern struct cond_entry *new_cond_entry(char *name, int eq, struct value_list *list); extern void move_conditional_value(const char *rulename, char **dst_ptr, struct cond_entry *cond_ent); extern void free_cond_entry(struct cond_entry *ent); extern void free_cond_list(struct cond_entry *ents); extern void free_cond_entry_list(struct cond_entry_list &cond); extern void print_cond_entry(struct cond_entry *ent); extern char *processid(const char *string, int len); extern char *processquoted(const char *string, int len); extern char *processunquoted(const char *string, int len); extern int get_keyword_token(const char *keyword); extern int get_rlimit(const char *name); extern char *process_var(const char *var); extern int parse_mode(const char *mode); extern int parse_X_mode(const char *X, int valid, const char *str_mode, int *mode, int fail); bool label_contains_ns(const char *label); bool parse_label(bool *_stack, char **_ns, char **_name, const char *label, bool yyerr); extern struct cod_entry *new_entry(char *id, int mode, char *link_id); /* returns -1 if value != true or false, otherwise 0 == false, 1 == true */ extern int str_to_boolean(const char* str); extern struct cod_entry *copy_cod_entry(struct cod_entry *cod); extern void free_cod_entries(struct cod_entry *list); void debug_cod_entries(struct cod_entry *list); #define SECONDS_P_MS (1000LL * 1000LL) long long convert_time_units(long long value, long long base, const char *units); /* parser_symtab.c */ struct set_value { char *val; struct set_value *next; }; extern int add_boolean_var(const char *var, int boolean); extern int get_boolean_var(const char *var); extern int new_set_var(const char *var, const char *value); extern int add_set_value(const char *var, const char *value); extern struct set_value *get_set_var(const char *var); extern char *get_next_set_value(struct set_value **context); extern int delete_set_var(const char *var_name); extern void dump_symtab(void); extern void dump_expanded_symtab(void); void free_symtabs(void); /* parser_alias.c */ extern int new_alias(const char *from, const char *to); extern int replace_profile_aliases(Profile *prof); extern void free_aliases(void); /* parser_merge.c */ extern int profile_merge_rules(Profile *prof); /* parser_interface.c */ extern int load_profile(int option, aa_kernel_interface *kernel_interface, Profile *prof, int cache_fd); extern void sd_serialize_profile(std::ostringstream &buf, Profile *prof, int flatten); extern int sd_load_buffer(int option, char *buffer, int size); extern int cache_fd; /* parser_policy.c */ extern void add_to_list(Profile *profile); extern void add_hat_to_policy(Profile *policy, Profile *hat); extern int add_entry_to_x_table(Profile *prof, char *name); extern void add_entry_to_policy(Profile *policy, struct cod_entry *entry); extern void post_process_file_entries(Profile *prof); extern void post_process_rule_entries(Profile *prof); extern int post_process_policy(int debug_only); extern int process_profile_regex(Profile *prof); extern int process_profile_variables(Profile *prof); extern int process_profile_policydb(Profile *prof); extern int post_merge_rules(void); extern int merge_hat_rules(Profile *prof); extern Profile *merge_policy(Profile *a, Profile *b); extern int load_policy(int option, aa_kernel_interface *kernel_interface, int cache_fd); extern int load_hats(std::ostringstream &buf, Profile *prof); extern int load_flattened_hats(Profile *prof, int option, aa_kernel_interface *kernel_interface, int cache_fd); extern void dump_policy_hats(Profile *prof); extern void dump_policy_names(void); void dump_policy(void); void free_policies(void); /* parser_main.c */ extern void set_supported_features(); /* default_features.c */ extern const char *match_n_abi; extern const char *match_c_abi; extern const char *match_cn_abi; extern const char *default_features_abi; #endif /** __AA_PARSER_H */ apparmor-3.0.4/parser/immunix.h0000664000175000017500000001305714201060045014262 0ustar jjjj/* * Copyright (c) 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 * NOVELL (All rights reserved) * * Immunix AppArmor LSM * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation, version 2 of the * License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. */ #ifndef _IMMUNIX_H #define _IMMUNIX_H /* * Modeled after MAY_READ, MAY_WRITE, MAY_EXEC in the kernel. The value of * AA_MAY_EXEC must be identical to MAY_EXEC, etc. */ #define AA_MAY_EXEC (1 << 0) #define AA_MAY_WRITE (1 << 1) #define AA_MAY_READ (1 << 2) #define AA_MAY_APPEND (1 << 3) #define AA_OLD_MAY_LINK (1 << 4) #define AA_OLD_MAY_LOCK (1 << 5) #define AA_OLD_EXEC_MMAP (1 << 6) #define AA_EXEC_PUX (1 << 7) #define AA_EXEC_UNSAFE (1 << 8) #define AA_EXEC_INHERIT (1 << 9) #define AA_EXEC_MOD_0 (1 << 10) #define AA_EXEC_MOD_1 (1 << 11) #define AA_EXEC_MOD_2 (1 << 12) #define AA_EXEC_MOD_3 (1 << 13) #define AA_BASE_PERMS (AA_MAY_EXEC | AA_MAY_WRITE | \ AA_MAY_READ | AA_MAY_APPEND | \ AA_OLD_MAY_LINK | AA_OLD_MAY_LOCK | \ AA_EXEC_PUX | AA_OLD_EXEC_MMAP | \ AA_EXEC_UNSAFE | AA_EXEC_INHERIT | \ AA_EXEC_MOD_0 | AA_EXEC_MOD_1 | \ AA_EXEC_MOD_2 | AA_EXEC_MOD_3) #define AA_USER_SHIFT 0 #define AA_OTHER_SHIFT 14 #define AA_USER_PERMS (AA_BASE_PERMS << AA_USER_SHIFT) #define AA_OTHER_PERMS (AA_BASE_PERMS << AA_OTHER_SHIFT) #define AA_FILE_PERMS (AA_USER_PERMS | AA_OTHER_PERMS ) #define AA_CHANGE_HAT (1 << 30) #define AA_ONEXEC (1 << 30) #define AA_CHANGE_PROFILE (1 << 31) #define AA_SHARED_PERMS (AA_CHANGE_HAT | AA_CHANGE_PROFILE) #define AA_EXEC_MODIFIERS (AA_EXEC_MOD_0 | AA_EXEC_MOD_1 | \ AA_EXEC_MOD_2 | AA_EXEC_MOD_3) #define AA_EXEC_COUNT 16 #define AA_USER_EXEC_MODIFIERS (AA_EXEC_MODIFIERS << AA_USER_SHIFT) #define AA_OTHER_EXEC_MODIFIERS (AA_EXEC_MODIFIERS << AA_OTHER_SHIFT) #define AA_ALL_EXEC_MODIFIERS (AA_USER_EXEC_MODIFIERS | \ AA_OTHER_EXEC_MODIFIERS) #define AA_EXEC_TYPE (AA_EXEC_UNSAFE | AA_EXEC_INHERIT | \ AA_EXEC_PUX | AA_EXEC_MODIFIERS) #define AA_EXEC_UNCONFINED (AA_EXEC_MOD_0) #define AA_EXEC_PROFILE (AA_EXEC_MOD_1) #define AA_EXEC_LOCAL (AA_EXEC_MOD_0 | AA_EXEC_MOD_1) #define AA_VALID_PERMS (AA_FILE_PERMS | AA_OTHER_PERMS) #define AA_USER_EXEC (AA_MAY_EXEC << AA_USER_SHIFT) #define AA_OTHER_EXEC (AA_MAY_EXEC << AA_OTHER_SHIFT) #define AA_EXEC_BITS (AA_USER_EXEC | AA_OTHER_EXEC) #define ALL_AA_EXEC_UNSAFE ((AA_EXEC_UNSAFE << AA_USER_SHIFT) | \ (AA_EXEC_UNSAFE << AA_OTHER_SHIFT)) #define AA_USER_EXEC_TYPE (AA_EXEC_TYPE << AA_USER_SHIFT) #define AA_OTHER_EXEC_TYPE (AA_EXEC_TYPE << AA_OTHER_SHIFT) #define ALL_AA_EXEC_TYPE (AA_USER_EXEC_TYPE | AA_OTHER_EXEC_TYPE) #define ALL_USER_EXEC (AA_USER_EXEC | AA_USER_EXEC_TYPE) #define ALL_OTHER_EXEC (AA_OTHER_EXEC | AA_OTHER_EXEC_TYPE) #define AA_LINK_BITS ((AA_OLD_MAY_LINK << AA_USER_SHIFT) | \ (AA_OLD_MAY_LINK << AA_OTHER_SHIFT)) #define SHIFT_MODE(MODE, SHIFT) ((((MODE) & AA_BASE_PERMS) << (SHIFT))\ | ((MODE) & ~AA_FILE_PERMS)) #define SHIFT_TO_BASE(MODE, SHIFT) ((((MODE) & AA_FILE_PERMS) >> (SHIFT))\ | ((MODE) & ~AA_FILE_PERMS)) #define AA_LINK_SUBSET_TEST (AA_OLD_MAY_LINK << 1) #define LINK_SUBSET_BITS ((AA_LINK_SUBSET_TEST << AA_USER_SHIFT) | \ (AA_LINK_SUBSET_TEST << AA_OTHER_SHIFT)) #define LINK_TO_LINK_SUBSET(X) (((X) << 1) & AA_LINK_SUBSET_TEST) /* Pack the audit, and quiet masks into a single 28 bit field in the * format oq:oa:uq:ua */ #define PACK_AUDIT_CTL(audit, quiet) (((audit) & 0x1fc07f) | \ (((quiet) & 0x1fc07f) << 7)) #define AA_HAT_SIZE 975 /* Maximum size of a subdomain * ident (hat) */ #define AA_IP_TCP 0x0001 #define AA_IP_UDP 0x0002 #define AA_IP_RDP 0x0004 #define AA_IP_RAW 0x0008 #define AA_IPV6_TCP 0x0010 #define AA_IPV6_UDP 0x0020 #define AA_NETLINK 0x0040 enum pattern_t { ePatternBasic, ePatternTailGlob, ePatternRegex, ePatternInvalid, }; #define HAS_MAY_READ(mode) ((mode) & AA_MAY_READ) #define HAS_MAY_WRITE(mode) ((mode) & AA_MAY_WRITE) #define HAS_MAY_APPEND(mode) ((mode) & AA_MAY_APPEND) #define HAS_MAY_EXEC(mode) ((mode) & AA_MAY_EXEC) #define HAS_MAY_LINK(mode) ((mode) & AA_OLD_MAY_LINK) #define HAS_MAY_LOCK(mode) ((mode) & AA_OLD_MAY_LOCK) #define HAS_EXEC_MMAP(mode) ((mode) & AA_OLD_EXEC_MMAP) #define HAS_EXEC_UNSAFE(mode) ((mode) & AA_EXEC_UNSAFE) #define HAS_CHANGE_PROFILE(mode) ((mode) & AA_CHANGE_PROFILE) #include #include #ifdef DEBUG #define PDEBUG(fmt, args...) \ do { \ int pdebug_error = errno; \ fprintf(stderr, "parser: " fmt, ## args); \ errno = pdebug_error; \ } while (0) #else #define PDEBUG(fmt, args...) /* Do nothing */ #endif static inline int is_merged_x_consistent(int a, int b) { if ((a & AA_USER_EXEC) && (b & AA_USER_EXEC) && ((a & AA_USER_EXEC_TYPE) != (b & AA_USER_EXEC_TYPE))) { PDEBUG("failed user merge 0x%x 0x%x\n", a, b); return 0; } if ((a & AA_OTHER_EXEC) && (b & AA_OTHER_EXEC) && ((a & AA_OTHER_EXEC_TYPE) != (b & AA_OTHER_EXEC_TYPE))) { PDEBUG("failed other merge 0x%x 0x%x\n", a, b); return 0; } return 1; } #endif /* ! _IMMUNIX_H */ /* LocalWords: MMAP */ apparmor-3.0.4/parser/rc.apparmor.slackware0000664000175000017500000000414114201060045016537 0ustar jjjj#!/bin/sh # ---------------------------------------------------------------------- # Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 # NOVELL (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- # rc.apparmor by Steve Beattie # # /etc/rc.d/rc.apparmor APPARMOR_FUNCTIONS=/lib/apparmor/rc.apparmor.functions aa_action() { STRING=$1 shift $* rc=$? if [ $rc -eq 0 ] ; then aa_log_success_msg $"$STRING " else aa_log_failure_msg $"$STRING " fi return $rc } aa_log_warning_msg() { [ -n "$1" ] && echo -n $1 echo ": Warning." } aa_log_success_msg() { [ -n "$1" ] && echo -n $1 echo ": OK." } aa_log_failure_msg() { [ -n "$1" ] && echo -n $1 echo ": Failed." } aa_log_skipped_msg() { [ -n "$1" ] && echo -n $1 echo ": Skipped." } aa_log_action_start() { echo "$@" } aa_log_action_end() { printf "" } aa_log_daemon_msg() { echo "$@" } aa_log_end_msg() { printf "" } usage() { echo "Usage: $0 {start|stop|restart|try-restart|reload|force-reload|status|kill}" } # source function library if [ -f "${APPARMOR_FUNCTIONS}" ] ; then . ${APPARMOR_FUNCTIONS} else aa_log_failure_msg "Unable to find AppArmor initscript functions" exit 1 fi case "$1" in start) apparmor_start rc=$? ;; stop) apparmor_stop rc=$? ;; restart|reload|force-reload) apparmor_restart rc=$? ;; try-restart) apparmor_try_restart rc=$? ;; kill) apparmor_kill rc=$? ;; status) apparmor_status rc=$? ;; *) usage exit 1 ;; esac exit $rc apparmor-3.0.4/parser/apparmor.7.html0000644000175000017500000002266614201060301015276 0ustar jjjj AppArmor - kernel enhancement to confine programs to a limited set of resources.
 AppArmor - kernel enhancement to confine programs to a limited set of resources.

NAME

AppArmor - kernel enhancement to confine programs to a limited set of resources.

DESCRIPTION

AppArmor is a kernel enhancement to confine programs to a limited set of resources. AppArmor's unique security model is to bind access control attributes to programs rather than to users.

AppArmor confinement is provided via profiles loaded into the kernel via apparmor_parser(8), typically through the /etc/init.d/apparmor SysV initscript, which is used like this:

        # /etc/init.d/apparmor start
        # /etc/init.d/apparmor stop
        # /etc/init.d/apparmor restart

AppArmor can operate in two modes: enforcement, and complain or learning:

  • enforcement - Profiles loaded in enforcement mode will result in enforcement of the policy defined in the profile as well as reporting policy violation attempts to syslogd.

  • complain - Profiles loaded in complain mode will not enforce policy. Instead, it will report policy violation attempts. This mode is convenient for developing profiles. To manage complain mode for individual profiles the utilities aa-complain(8) and aa-enforce(8) can be used. These utilities take a program name as an argument.

Profiles are traditionally stored in files in /etc/apparmor.d/ under filenames with the convention of replacing the / in pathnames with . (except for the root /) so profiles are easier to manage (e.g. the /usr/sbin/nscd profile would be named usr.sbin.nscd).

Profiles are applied to a process at exec(3) time (as seen through the execve(2) system call): once a profile is loaded for a program, that program will be confined on the next exec(3). If a process is already running under a profile, when one replaces that profile in the kernel, the updated profile is applied immediately to that process. On the other hand, a process that is already running unconfined cannot be confined.

AppArmor supports the Linux kernel's securityfs filesystem, and makes available the list of the profiles currently loaded; to mount the filesystem:

        # mount -tsecurityfs securityfs /sys/kernel/security
        $ cat /sys/kernel/security/apparmor/profiles
        /usr/bin/mutt
        /usr/bin/gpg
           ...

Normally, the initscript will mount securityfs if it has not already been done.

AppArmor also restricts what privileged operations a confined process may execute, even if the process is running as root. A confined process cannot call the following system calls:

        create_module(2) delete_module(2) init_module(2) ioperm(2)
        iopl(2) ptrace(2) reboot(2) setdomainname(2)
        sethostname(2) swapoff(2) swapon(2) sysctl(2)

ERRORS

When a confined process tries to access a file it does not have permission to access, the kernel will report a message through audit, similar to:

        audit(1386511672.612:238): apparmor="DENIED" operation="exec" 
          parent=7589 profile="/tmp/sh" name="/bin/uname" pid=7605 
          comm="sh" requested_mask="x" denied_mask="x" fsuid=0 ouid=0

        audit(1386511672.613:239): apparmor="DENIED" operation="open" 
          parent=7589 profile="/tmp/sh" name="/bin/uname" pid=7605 
          comm="sh" requested_mask="r" denied_mask="r" fsuid=0 ouid=0

        audit(1386511772.804:246): apparmor="DENIED" operation="capable"
          parent=7246 profile="/tmp/sh" pid=7589 comm="sh" pid=7589 
          comm="sh" capability=2  capname="dac_override"

The permissions requested by the process are described in the operation= and denied_mask= (for files - capabilities etc. use a slightly different log format). The "name" and process id of the running program are reported, as well as the profile name including any "hat" that may be active, separated by "//". ("Name" is in quotes, because the process name is limited to 15 bytes; it is the same as reported through the Berkeley process accounting.)

For confined processes running under a profile that has been loaded in complain mode, enforcement will not take place and the log messages reported to audit will be of the form:

        audit(1386512577.017:275): apparmor="ALLOWED" operation="open"
          parent=8012 profile="/usr/bin/du" name="/etc/apparmor.d/tunables/"
          pid=8049 comm="du" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

        audit(1386512577.017:276): apparmor="ALLOWED" operation="open"
          parent=8012 profile="/usr/bin/du" name="/etc/apparmor.d/tunables/"
          pid=8049 comm="du" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0

If the userland auditd is not running, the kernel will send audit events to klogd; klogd will send the messages to syslog, which will log the messages with the KERN facility. Thus, REJECTING and PERMITTING messages may go to either /var/log/audit/audit.log or /var/log/messages, depending upon local configuration.

DEBUGGING

AppArmor provides a few facilities to log more information, which can help debugging profiles.

Enable debug mode

When debug mode is enabled, AppArmor will log a few extra messages to dmesg (not via the audit subsystem). For example, the logs will tell whether environment scrubbing has been applied.

To enable debug mode, run:

        echo 1 > /sys/module/apparmor/parameters/debug

Turn off deny audit quieting

By default, operations that trigger deny rules are not logged. This is called deny audit quieting.

To turn off deny audit quieting, run:

        echo -n noquiet >/sys/module/apparmor/parameters/audit

Force audit mode

AppArmor can log a message for every operation that triggers a rule configured in the policy. This is called force audit mode.

Warning! Force audit mode can be extremely noisy even for a single profile, let alone when enabled globally.

To set a specific profile in force audit mode, add the audit flag:

        profile foo flags=(audit) { ... }

To enable force audit mode globally, run:

        echo -n all > /sys/module/apparmor/parameters/audit

If auditd is not running, to avoid losing too many of the extra log messages, you will likely have to turn off rate limiting by doing:

        echo 0 > /proc/sys/kernel/printk_ratelimit

But even then the kernel ring buffer may overflow and you might lose messages.

Else, if auditd is running, see auditd(8) and auditd.conf(5).

FILES

/etc/init.d/apparmor
/etc/apparmor.d/
/var/lib/apparmor/
/var/log/audit/audit.log
/var/log/messages

SEE ALSO

apparmor_parser(8), aa_change_hat(2), apparmor.d(5), aa-autodep(1), clean(1), auditd(8), aa-unconfined(8), aa-enforce(1), aa-complain(1), and https://wiki.apparmor.net.

 AppArmor - kernel enhancement to confine programs to a limited set of resources.
apparmor-3.0.4/parser/signal.cc0000664000175000017500000001427314201060045014210 0ustar jjjj/* * Copyright (c) 2014 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #include #include #include #include #include #include #include #include "parser.h" #include "profile.h" #include "parser_yacc.h" #include "signal.h" #define MAXMAPPED_SIG 35 #define MINRT_SIG 128 /* base of RT sigs */ #define MAXRT_SIG 32 /* Max RT above MINRT_SIG */ /* Signal names mapped to and internal ordering */ static struct signal_map { const char *name; int num; } signal_map[] = { {"hup", 1}, {"int", 2}, {"quit", 3}, {"ill", 4}, {"trap", 5}, {"abrt", 6}, {"bus", 7}, {"fpe", 8}, {"kill", 9}, {"usr1", 10}, {"segv", 11}, {"usr2", 12}, {"pipe", 13}, {"alrm", 14}, {"term", 15}, {"stkflt", 16}, {"chld", 17}, {"cont", 18}, {"stop", 19}, {"stp", 20}, {"ttin", 21}, {"ttou", 22}, {"urg", 23}, {"xcpu", 24}, {"xfsz", 25}, {"vtalrm", 26}, {"prof", 27}, {"winch", 28}, {"io", 29}, {"pwr", 30}, {"sys", 31}, {"emt", 32}, {"exists", 35}, /* terminate */ {NULL, 0} }; /* this table is ordered post sig_map[sig] mapping */ static const char *const sig_names[MAXMAPPED_SIG + 1] = { "unknown", "hup", "int", "quit", "ill", "trap", "abrt", "bus", "fpe", "kill", "usr1", "segv", "usr2", "pipe", "alrm", "term", "stkflt", "chld", "cont", "stop", "stp", "ttin", "ttou", "urg", "xcpu", "xfsz", "vtalrm", "prof", "winch", "io", "pwr", "sys", "emt", "lost", "unused", "exists", /* always last existance test mapped to MAXMAPPED_SIG */ }; int parse_signal_mode(const char *str_mode, int *mode, int fail) { return parse_X_mode("signal", AA_VALID_SIGNAL_PERMS, str_mode, mode, fail); } static int find_signal_mapping(const char *sig) { if (strncmp("rtmin+", sig, 6) == 0) { char *end; unsigned long n = strtoul(sig + 6, &end, 10); if (end == sig || n > MAXRT_SIG) return -1; return MINRT_SIG + n; } else { for (int i = 0; signal_map[i].name; i++) { if (strcmp(sig, signal_map[i].name) == 0) return signal_map[i].num; } } return -1; } void signal_rule::extract_sigs(struct value_list **list) { struct value_list *entry, *tmp, *prev = NULL; list_for_each_safe(*list, entry, tmp) { int i = find_signal_mapping(entry->value); if (i != -1) { signals.insert(i); list_remove_at(*list, prev, entry); free_value_list(entry); } else { yyerror("unknown signal \"%s\"\n", entry->value); prev = entry; } } } void signal_rule::move_conditionals(struct cond_entry *conds) { struct cond_entry *cond_ent; list_for_each(conds, cond_ent) { /* for now disallow keyword 'in' (list) */ if (!cond_ent->eq) yyerror("keyword \"in\" is not allowed in signal rules\n"); if (strcmp(cond_ent->name, "set") == 0) { extract_sigs(&cond_ent->vals); } else if (strcmp(cond_ent->name, "peer") == 0) { move_conditional_value("signal", &peer_label, cond_ent); } else { yyerror("invalid signal rule conditional \"%s\"\n", cond_ent->name); } } } signal_rule::signal_rule(int mode_p, struct cond_entry *conds): signals(), peer_label(NULL), audit(0), deny(0) { if (mode_p) { mode = mode_p; if (mode & ~AA_VALID_SIGNAL_PERMS) yyerror("mode contains invalid permission for signals\n"); } else { mode = AA_VALID_SIGNAL_PERMS; } move_conditionals(conds); free_cond_list(conds); } ostream &signal_rule::dump(ostream &os) { if (audit) os << "audit "; if (deny) os << "deny "; os << "signal"; if (mode != AA_VALID_SIGNAL_PERMS) { os << " ("; if (mode & AA_MAY_SEND) os << "send "; if (mode & AA_MAY_RECEIVE) os << "receive "; os << ")"; } if (!signals.empty()) { os << " set=("; for (Signals::iterator i = signals.begin(); i != signals.end(); i++) { if (i != signals.begin()) os << ", "; if (*i < MINRT_SIG) os << sig_names[*i]; else os << "rtmin+" << (*i - MINRT_SIG); } os << ")"; } if (peer_label) os << " " << peer_label; os << ",\n"; return os; } int signal_rule::expand_variables(void) { return expand_entry_variables(&peer_label); } void signal_rule::warn_once(const char *name) { rule_t::warn_once(name, "signal rules not enforced"); } int signal_rule::gen_policy_re(Profile &prof) { std::ostringstream buffer; std::string buf; pattern_t ptype; int pos; /* Currently do not generate the rules if the kernel doesn't support * it. We may want to switch this so that a compile could be * used for full support on kernels that don't support the feature */ if (!features_supports_signal) { warn_once(prof.name); return RULE_NOT_SUPPORTED; } if (signals.size() == 0) { /* not conditional on signal set, so will generate a label * rule as well */ buffer << "(" << "\\x" << std::setfill('0') << std::setw(2) << std::hex << AA_CLASS_LABEL << "\\x" << AA_CLASS_SIGNAL << "|"; } buffer << "\\x" << std::setfill('0') << std::setw(2) << std::hex << AA_CLASS_SIGNAL; if (signals.size()) { buffer << "["; for (Signals::iterator i = signals.begin(); i != signals.end(); i++) { buffer << "\\x" << std::setfill('0') << std::setw(2) << std::hex << *i; } buffer << "]"; } else { /* match any char */ buffer << "."; } if (signals.size() == 0) { /* close alternation */ buffer << ")"; } if (peer_label) { ptype = convert_aaregex_to_pcre(peer_label, 0, glob_default, buf, &pos); if (ptype == ePatternInvalid) goto fail; buffer << buf; } else { buffer << anyone_match_pattern; } buf = buffer.str(); if (mode & (AA_MAY_SEND | AA_MAY_RECEIVE)) { if (!prof.policy.rules->add_rule(buf.c_str(), deny, mode, audit, dfaflags)) goto fail; } return RULE_OK; fail: return RULE_ERROR; } apparmor-3.0.4/parser/apparmor.pod0000664000175000017500000001660014201060045014745 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, # 2008, 2009 # NOVELL (All rights reserved) # # Copyright (c) 2010 # Canonical Ltd. (All rights reserved) # # Copyright (c) 2013 # Christian Boltz (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- =pod =head1 NAME AppArmor - kernel enhancement to confine programs to a limited set of resources. =head1 DESCRIPTION AppArmor is a kernel enhancement to confine programs to a limited set of resources. AppArmor's unique security model is to bind access control attributes to programs rather than to users. AppArmor confinement is provided via I loaded into the kernel via apparmor_parser(8), typically through the F SysV initscript, which is used like this: # /etc/init.d/apparmor start # /etc/init.d/apparmor stop # /etc/init.d/apparmor restart AppArmor can operate in two modes: I, and I: =over 4 =item * I - Profiles loaded in enforcement mode will result in enforcement of the policy defined in the profile as well as reporting policy violation attempts to syslogd. =item * I - Profiles loaded in C mode will not enforce policy. Instead, it will report policy violation attempts. This mode is convenient for developing profiles. To manage complain mode for individual profiles the utilities aa-complain(8) and aa-enforce(8) can be used. These utilities take a program name as an argument. =back Profiles are traditionally stored in files in F under filenames with the convention of replacing the B in pathnames with B<.> (except for the root B) so profiles are easier to manage (e.g. the F profile would be named F). Profiles are applied to a process at exec(3) time (as seen through the execve(2) system call): once a profile is loaded for a program, that program will be confined on the next exec(3). If a process is already running under a profile, when one replaces that profile in the kernel, the updated profile is applied immediately to that process. On the other hand, a process that is already running unconfined cannot be confined. AppArmor supports the Linux kernel's securityfs filesystem, and makes available the list of the profiles currently loaded; to mount the filesystem: # mount -tsecurityfs securityfs /sys/kernel/security $ cat /sys/kernel/security/apparmor/profiles /usr/bin/mutt /usr/bin/gpg ... Normally, the initscript will mount securityfs if it has not already been done. AppArmor also restricts what privileged operations a confined process may execute, even if the process is running as root. A confined process cannot call the following system calls: create_module(2) delete_module(2) init_module(2) ioperm(2) iopl(2) ptrace(2) reboot(2) setdomainname(2) sethostname(2) swapoff(2) swapon(2) sysctl(2) =head1 ERRORS When a confined process tries to access a file it does not have permission to access, the kernel will report a message through audit, similar to: audit(1386511672.612:238): apparmor="DENIED" operation="exec" parent=7589 profile="/tmp/sh" name="/bin/uname" pid=7605 comm="sh" requested_mask="x" denied_mask="x" fsuid=0 ouid=0 audit(1386511672.613:239): apparmor="DENIED" operation="open" parent=7589 profile="/tmp/sh" name="/bin/uname" pid=7605 comm="sh" requested_mask="r" denied_mask="r" fsuid=0 ouid=0 audit(1386511772.804:246): apparmor="DENIED" operation="capable" parent=7246 profile="/tmp/sh" pid=7589 comm="sh" pid=7589 comm="sh" capability=2 capname="dac_override" The permissions requested by the process are described in the operation= and denied_mask= (for files - capabilities etc. use a slightly different log format). The "name" and process id of the running program are reported, as well as the profile name including any "hat" that may be active, separated by "//". ("Name" is in quotes, because the process name is limited to 15 bytes; it is the same as reported through the Berkeley process accounting.) For confined processes running under a profile that has been loaded in complain mode, enforcement will not take place and the log messages reported to audit will be of the form: audit(1386512577.017:275): apparmor="ALLOWED" operation="open" parent=8012 profile="/usr/bin/du" name="/etc/apparmor.d/tunables/" pid=8049 comm="du" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 audit(1386512577.017:276): apparmor="ALLOWED" operation="open" parent=8012 profile="/usr/bin/du" name="/etc/apparmor.d/tunables/" pid=8049 comm="du" requested_mask="r" denied_mask="r" fsuid=1000 ouid=0 If the userland auditd is not running, the kernel will send audit events to klogd; klogd will send the messages to syslog, which will log the messages with the KERN facility. Thus, REJECTING and PERMITTING messages may go to either F or F, depending upon local configuration. =head1 DEBUGGING AppArmor provides a few facilities to log more information, which can help debugging profiles. =head2 Enable debug mode When debug mode is enabled, AppArmor will log a few extra messages to dmesg (not via the audit subsystem). For example, the logs will tell whether environment scrubbing has been applied. To enable debug mode, run: echo 1 > /sys/module/apparmor/parameters/debug =head2 Turn off deny audit quieting By default, operations that trigger C rules are not logged. This is called I. To turn off deny audit quieting, run: echo -n noquiet >/sys/module/apparmor/parameters/audit =head2 Force audit mode AppArmor can log a message for every operation that triggers a rule configured in the policy. This is called I. B Force audit mode can be extremely noisy even for a single profile, let alone when enabled globally. To set a specific profile in force audit mode, add the C flag: profile foo flags=(audit) { ... } To enable force audit mode globally, run: echo -n all > /sys/module/apparmor/parameters/audit If auditd is not running, to avoid losing too many of the extra log messages, you will likely have to turn off rate limiting by doing: echo 0 > /proc/sys/kernel/printk_ratelimit But even then the kernel ring buffer may overflow and you might lose messages. Else, if auditd is running, see auditd(8) and auditd.conf(5). =head1 FILES =over 4 =item F =item F =item F =item F =item F =back =head1 SEE ALSO apparmor_parser(8), aa_change_hat(2), apparmor.d(5), aa-autodep(1), clean(1), auditd(8), aa-unconfined(8), aa-enforce(1), aa-complain(1), and L. =cut apparmor-3.0.4/parser/ptrace.cc0000664000175000017500000000660114201060045014205 0ustar jjjj/* * Copyright (c) 2014 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #include "parser.h" #include "profile.h" #include "ptrace.h" #include #include #include int parse_ptrace_mode(const char *str_mode, int *mode, int fail) { return parse_X_mode("ptrace", AA_VALID_PTRACE_PERMS, str_mode, mode, fail); } void ptrace_rule::move_conditionals(struct cond_entry *conds) { struct cond_entry *cond_ent; list_for_each(conds, cond_ent) { /* for now disallow keyword 'in' (list) */ if (!cond_ent->eq) yyerror("keyword \"in\" is not allowed in ptrace rules\n"); if (strcmp(cond_ent->name, "peer") == 0) { move_conditional_value("ptrace", &peer_label, cond_ent); } else { yyerror("invalid ptrace rule conditional \"%s\"\n", cond_ent->name); } } } ptrace_rule::ptrace_rule(int mode_p, struct cond_entry *conds): peer_label(NULL), audit(0), deny(0) { if (mode_p) { if (mode_p & ~AA_VALID_PTRACE_PERMS) yyerror("mode contains invalid permissions for ptrace\n"); mode = mode_p; } else { mode = AA_VALID_PTRACE_PERMS; } move_conditionals(conds); free_cond_list(conds); } ostream &ptrace_rule::dump(ostream &os) { if (audit) os << "audit "; if (deny) os << "deny "; os << "ptrace"; if (mode != AA_VALID_PTRACE_PERMS) { os << " ("; if (mode & AA_MAY_READ) os << "read "; if (mode & AA_MAY_READBY) os << "readby "; if (mode & AA_MAY_TRACE) os << "trace "; if (mode & AA_MAY_TRACEDBY) os << "tracedby "; os << ")"; } if (peer_label) os << " " << peer_label; os << ",\n"; return os; } int ptrace_rule::expand_variables(void) { return expand_entry_variables(&peer_label); } void ptrace_rule::warn_once(const char *name) { rule_t::warn_once(name, "ptrace rules not enforced"); } int ptrace_rule::gen_policy_re(Profile &prof) { std::ostringstream buffer; std::string buf; pattern_t ptype; int pos; /* ?? do we want to generate the rules in the policy so that it * the compile could be used on another kernel unchanged?? * Current caching doesn't support this but in the future maybe */ if (!features_supports_ptrace) { warn_once(prof.name); return RULE_NOT_SUPPORTED; } /* always generate a label and ptrace entry */ buffer << "(" << "\\x" << std::setfill('0') << std::setw(2) << std::hex << AA_CLASS_LABEL << "|)"; buffer << "\\x" << std::setfill('0') << std::setw(2) << std::hex << AA_CLASS_PTRACE; if (peer_label) { ptype = convert_aaregex_to_pcre(peer_label, 0, glob_default, buf, &pos); if (ptype == ePatternInvalid) goto fail; buffer << buf; } else { buffer << anyone_match_pattern; } buf = buffer.str(); if (mode & AA_VALID_PTRACE_PERMS) { if (!prof.policy.rules->add_rule(buf.c_str(), deny, mode, audit, dfaflags)) goto fail; } return RULE_OK; fail: return RULE_ERROR; } apparmor-3.0.4/parser/file_cache.h0000664000175000017500000000242414201060045014632 0ustar jjjj/* * Copyright (c) 2021 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Canonical Ltd. */ #ifndef __AA_FILE_CACHE_H #define __AA_FILE_CACHE_H #include #include using namespace std; /* TODO: have includecache be a frontend for file cache, don't just * store name. */ class IncludeCache_t { public: set cache; IncludeCache_t() = default; virtual ~IncludeCache_t() = default; /* return true if in set */ bool find(const char *name) { return cache.find(name) != cache.end(); } bool insert(const char *name) { pair::iterator,bool> res = cache.insert(name); if (res.second == false) { return false; } /* inserted */ return true; } }; #endif /* __AA_FILE_CACHE_H */ apparmor-3.0.4/parser/aa-teardown.8.html0000644000175000017500000000326614201060301015653 0ustar jjjj aa-teardown - unload all AppArmor profiles
 aa-teardown - unload all AppArmor profiles

NAME

aa-teardown - unload all AppArmor profiles

SYNOPSIS

aa-teardown

DESCRIPTION

aa-teardown unloads all AppArmor profiles

BUGS

If you find any bugs, please report them at https://gitlab.com/apparmor/apparmor/-/issues.

SEE ALSO

apparmor(7), apparmor.d(5), and https://wiki.apparmor.net.

 aa-teardown - unload all AppArmor profiles
apparmor-3.0.4/parser/dbus.h0000664000175000017500000000332114201060045013522 0ustar jjjj/* * Copyright (c) 2013 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #ifndef __AA_DBUS_H #define __AA_DBUS_H #include "parser.h" #include "rule.h" #include "profile.h" extern int parse_dbus_mode(const char *str_mode, int *mode, int fail); class dbus_rule: public rule_t { void move_conditionals(struct cond_entry *conds); public: char *bus; /** * Be careful! ->name can be the subject or the peer name, depending on * whether the rule is a bind rule or a send/receive rule. See the * comments in new_dbus_entry() for details. */ char *name; char *peer_label; char *path; char *interface; char *member; int mode; int audit; int deny; dbus_rule(int mode_p, struct cond_entry *conds, struct cond_entry *peer_conds); virtual ~dbus_rule() { free(bus); free(name); free(peer_label); free(path); free(interface); free(member); }; virtual ostream &dump(ostream &os); virtual int expand_variables(void); virtual int gen_policy_re(Profile &prof); virtual void post_process(Profile &prof unused) { }; protected: virtual void warn_once(const char *name) override; }; #endif /* __AA_DBUS_H */ apparmor-3.0.4/parser/aa-teardown.pod0000664000175000017500000000214214201060045015322 0ustar jjjj# ---------------------------------------------------------------------- # Copyright (c) 2018 Christian Boltz # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- =pod =head1 NAME aa-teardown - unload all AppArmor profiles =head1 SYNOPSIS B =head1 DESCRIPTION aa-teardown unloads all AppArmor profiles =head1 BUGS If you find any bugs, please report them at L. =head1 SEE ALSO apparmor(7), apparmor.d(5), and L. =cut apparmor-3.0.4/parser/unit_test.h0000664000175000017500000000303514201060045014605 0ustar jjjj/* * Copyright (c) 2013 * Canonical Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ #ifndef __AA_UNIT_TEST_H #define __AA_UNIT_TEST_H #ifdef UNIT_TEST /* For the unit-test builds, we must include function stubs for stuff that * only exists in the excluded object files; everything else should live * in parser_common.c. */ #include #include #include #undef _ #define _(s) (s) /* parser_yacc.y */ void yyerror(const char *msg, ...) { va_list arg; char buf[PATH_MAX]; va_start(arg, msg); vsnprintf(buf, sizeof(buf), msg, arg); va_end(arg); PERROR(_("AppArmor parser error: %s\n"), buf); exit(1); } #define MY_TEST(statement, error) \ if (!(statement)) { \ PERROR("FAIL: %s\n", error); \ rc = 1; \ } #endif /* UNIT_TEST */ #endif /* __AA_UNIT_TEST_H */ apparmor-3.0.4/parser/rc.apparmor.debian0000664000175000017500000000502514201060045016007 0ustar jjjj#!/bin/sh # ---------------------------------------------------------------------- # Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 # NOVELL (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- # rc.apparmor by Steve Beattie # # /etc/init.d/apparmor # # chkconfig: 2345 01 99 # description: AppArmor rc file. This rc script inserts the apparmor \ # module and runs the parser on the /etc/apparmor.d/ \ # directory. # ### BEGIN INIT INFO # Provides: apparmor # Required-Start: # Required-Stop: # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Short-Description: AppArmor initialization # Description: AppArmor rc file. This rc script inserts the apparmor # module and runs the parser on the /etc/apparmor.d/ # directory. ### END INIT INFO APPARMOR_FUNCTIONS=/lib/apparmor/rc.apparmor.functions aa_action() { STRING=$1 shift $* rc=$? if [ $rc -eq 0 ] ; then aa_log_success_msg $"$STRING " else aa_log_failure_msg $"$STRING " fi return $rc } aa_log_success_msg() { [ -n "$1" ] && echo -n $1 echo ": done." } aa_log_warning_msg() { [ -n "$1" ] && echo -n $1 echo ": Warning." } aa_log_failure_msg() { [ -n "$1" ] && echo -n $1 echo ": Failed." } aa_log_skipped_msg() { [ -n "$1" ] && echo -n $1 echo ": Skipped." } usage() { echo "Usage: $0 {start|stop|restart|try-restart|reload|force-reload|status|kill}" } # source apparmor function library if [ -f "${APPARMOR_FUNCTIONS}" ]; then . ${APPARMOR_FUNCTIONS} else aa_log_failure_msg "Unable to find AppArmor initscript functions" exit 1 fi test -x ${PARSER} || exit 0 # by debian policy case "$1" in start) apparmor_start rc=$? ;; stop) apparmor_stop rc=$? ;; restart|reload|force-reload) apparmor_restart rc=$? ;; try-restart) apparmor_try_restart rc=$? ;; kill) apparmor_kill rc=$? ;; status) apparmor_status rc=$? ;; *) usage exit 1 ;; esac exit $rc apparmor-3.0.4/parser/policydb.h0000664000175000017500000000217214201060045014375 0ustar jjjj/* * Copyright 2012 Canonical Ltd. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation, version 2 of the * License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef __AA_POLICYDB_H #define __AA_POLICYDB_H /* * Class of private mediation types in the AppArmor policy db * * See libapparmor's apparmor.h for public mediation types */ #define AA_CLASS_COND 0 #define AA_CLASS_UNKNOWN 1 #define AA_CLASS_FILE 2 #define AA_CLASS_CAP 3 #define AA_CLASS_NET 4 #define AA_CLASS_RLIMITS 5 #define AA_CLASS_DOMAIN 6 #define AA_CLASS_MOUNT 7 #define AA_CLASS_NS_DOMAIN 8 #define AA_CLASS_PTRACE 9 #define AA_CLASS_SIGNAL 10 #define AA_CLASS_NETV8 14 #define AA_CLASS_LABEL 16 /* defined in libapparmor's apparmor.h #define AA_CLASS_DBUS 32 */ #define AA_CLASS_X 33 #endif /* __AA_POLICYDB_H */ apparmor-3.0.4/parser/frob_slack_rc0000775000175000017500000000605114201060045015136 0ustar jjjj#!/usr/bin/perl -w # ---------------------------------------------------------------------- # Copyright (c) 2004, 2005 NOVELL (All rights reserved) # # This program is free software; you can redistribute it and/or # modify it under the terms of version 2 of the GNU General Public # License published by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, contact Novell, Inc. # ---------------------------------------------------------------------- use Getopt::Long; use File::Temp qw/ :mktemp /; use File::stat; sub usage { print "$0\t(--init|--shutdown) \tmodify startup or shutdown script\n"; print "\t\t\t--file= \tmodify \n"; print "\t\t\t--remove \tremove option from config file\n"; print "\t\t\t--help \t\tthis help\n"; print '$Revision: 1.1 $', "\n"; exit(0); } my ($conffile,$help,$remove,$init,$shutdown); GetOptions( "file=s" => \$conffile, "init" => \$init, "shutdown" => \$shutdown, "remove" => \$remove, "help!" => \$help ) or usage(); usage() if ($help); my ($my_regexp, $my_command); if (defined $init) { $my_regexp = '^echo "Going multiuser..."$'; $my_command = "start"; } elsif (defined $shutdown) { $my_regexp = '^# Kill all processes.$'; $my_command = "kill"; } else { usage(); } if (defined $conffile) { $old = $conffile; chomp($old); } elsif (defined $init) { $old="/etc/rc.d/rc.M"; } elsif (defined $shutdown) { $old="/etc/rc.d/rc.K"; } open(MENU,"<$old") or die "Fatal: can't open $old: $!"; ($fh, $file) = mkstemp($old . "XXXXXX" ); my $skip = FALSE; while () { # ok, we rely on the '="' to site the changes ; if (! defined $remove) { if ( /$my_regexp/ ) { print $fh $_; print $fh "# BEGIN rc.apparmor INSERTION\n"; print $fh "if [ -x /etc/rc.d/rc.apparmor ] ; then\n"; print $fh " /etc/rc.d/rc.apparmor $my_command\n"; print $fh "fi\n"; print $fh "# END rc.apparmor INSERTION\n"; } elsif ( /^# BEGIN rc.subdomain INSERTION$/ ) { $skip = TRUE; } elsif ( $skip eq TRUE ) { if ( /^# END rc.subdomain INSERTION$/ ) { $skip = FALSE; } } else { print $fh $_; } } elsif ( /^# BEGIN rc.(apparmor\|subdomain) INSERTION$/ ) { $skip = TRUE; } elsif ( $skip eq TRUE ) { if ( /^# END rc.(apparmor\|subdomain) INSERTION$/ ) { $skip = FALSE; } } else { print $fh $_; } } my $sb = stat($old) || die "Could not get permission bits from $old"; my $oldmode = $sb->mode & 07777; rename $old, "$old.orig" || system("/bin/mv", $old, "$old.orig") && die "$old could not be renamed to $old.orig ($!); see $file for modifications"; rename $file, "$old" || system("/bin/mv", $file, "$old") && die "$file could not be renamed to $old ($!); see $file for modifications"; chmod $oldmode, $old || die "COuld not restore permission bits on $old"; apparmor-3.0.4/parser/mount.cc0000664000175000017500000005420514201060045014074 0ustar jjjj/* * Copyright (c) 2010 * Canonical, Ltd. (All rights reserved) * * This program is free software; you can redistribute it and/or * modify it under the terms of version 2 of the GNU General Public * License published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, contact Novell, Inc. or Canonical * Ltd. */ /** * The mount command, its mix of options and flags, its permissions and * mapping are a mess. * mount [-lhV] * * mount -a [-fFnrsvw] [-t vfstype] [-O optlist] * * mount [-fnrsvw] [-o option[,option]...] device|dir * * mount [-fnrsvw] [-t vfstype] [-o options] device dir * *---------------------------------------------------------------------- * Mount flags of no interest for apparmor mediation * -a, --all * -F fork for simultaneous mount * -f fake, do everything except that actual system call * -h --help * -i, --internal-only * -n mount without writing in /etc/mtab * -O limits what is auto mounted * -p, --pass-fd num * -s Tolerate sloppy mount options * -U uuid * -V --version * --no-canonicalize * *---------------------------------------------------------------------- * what do we do with these * -l list? * -L